Giter Club home page Giter Club logo

chromecast-api's Introduction

chromecast-api

NPM Version Build Status Dependency Status Standard - Javascript Style Guide

chromecast-api is a NodeJS module to play any content in your Chromecast device.

Installation

npm install chromecast-api 

Usage

const ChromecastAPI = require('chromecast-api')

const client = new ChromecastAPI()

client.on('device', function (device) {
  var mediaURL = 'http://commondatastorage.googleapis.com/gtv-videos-bucket/big_buck_bunny_1080p.mp4';

  device.play(mediaURL, function (err) {
    if (!err) console.log('Playing in your chromecast')
  })
})

Supported Apps

  • Media (video and audio)
  • Youtube videos

Subtitles and Cover

To include subtitles and a cover image, use an Object instead of a string in the function play(mediaObject):

Note: your subtitles must implement CORS.

const ChromecastAPI = require('chromecast-api')

const media = {
  url : 'http://commondatastorage.googleapis.com/gtv-videos-bucket/big_buck_bunny_1080p.mp4',
  subtitles: [
    {
      language: 'en-US',
      url: 'https://raw.githubusercontent.com/alxhotel/chromecast-api/master/test/captions_styled.vtt',
      name: 'English',
    },
    {
      language: 'es-ES',
      url: 'https://raw.githubusercontent.com/alxhotel/chromecast-api/master/test/captions_styled_es.vtt',
      name: 'Spanish',
    }
  ],
  cover: {
    title: 'Big Bug Bunny',
    url: 'http://commondatastorage.googleapis.com/gtv-videos-bucket/sample/images/BigBuckBunny.jpg'
  },
  subtitles_style: {
    backgroundColor: '#FFFFFF00', // see http://dev.w3.org/csswg/css-color/#hex-notation
    foregroundColor: '#FFFFFFFF', // see http://dev.w3.org/csswg/css-color/#hex-notation
    edgeType: 'OUTLINE', // can be: "NONE", "OUTLINE", "DROP_SHADOW", "RAISED", "DEPRESSED"
    edgeColor: '#000000FF', // see http://dev.w3.org/csswg/css-color/#hex-notation
    fontScale: 1.2, // transforms into "font-size: " + (fontScale*100) +"%"
    fontStyle: 'BOLD', // can be: "NORMAL", "BOLD", "BOLD_ITALIC", "ITALIC",
    fontFamily: 'Droid Sans',
    fontGenericFamily: 'SANS_SERIF', // can be: "SANS_SERIF", "MONOSPACED_SANS_SERIF", "SERIF", "MONOSPACED_SERIF", "CASUAL", "CURSIVE", "SMALL_CAPITALS",
    //windowColor: '#AA00FFFF', // see http://dev.w3.org/csswg/css-color/#hex-notation
    //windowRoundedCornerRadius: 10, // radius in px
    //windowType: 'ROUNDED_CORNERS' // can be: "NONE", "NORMAL", "ROUNDED_CORNERS"
  }
}

const client = new ChromecastAPI()

client.on('device', function (device) {
  device.play(media, function (err) {
    if (!err) console.log('Playing in your chromecast')
  })
})

API

const client = new ChromecastAPI()

Initialize the client to start searching for chromecast devices.

client.on('device', callback)

Listen for new devices by passing callback(device) in the callback parameter.

With the Device object you can now interact with your Chromecast.

This is an example of the attributes of device:

{
  name: 'Chromecast-e363e7-3e23e2e-3e2e-23e34e._googlecast._tcp.local', // Unique identifier
  friendlyName: 'Bobby', // The name you gave to your chromecast
  host: '192.168.1.10' // Local IP address
}

client.devices[...]

An array of all devices found by the client.

client.update()

Trigger the mDNS and SSDP search again. Warning: the device event will trigger again (it might return the same device).

device.play(mediaURL [, opts], callback)

Use this function to play any media in the chromecast device. Make sure mediaURL is accessible by the chromecast.

Pass an attribute startTime in the opts object to set where to start an audio or video content (in seconds).

{
  startTime: 120 // Start the content at the 2 minute mark
}

device.pause(callback)

Pause the media.

device.resume(callback)

Resume the media.

device.stop(callback)

Stop playing the media.

device.seek(seconds, callback)

Seek forward seconds in time.

device.seekTo(specificTime, callback)

Seek to the specificTime in seconds.

device.setVolume(level, callback)

Set the volume to a specific level (from 0.0 to 1.0).

device.changeSubtitles(index, callback)

Change the subtitles by passing the index of the subtitle you want based on the list you passed before.

device.changeSubtitlesSize(fontSize, callback)

Choose the subtitles font size with fontSize. The default is 1.0.

device.subtitlesOff(callback)

Turn the subtitles off.

device.getCurrentTime(callback)

Get the current time of the media playing (in seconds). It's a shortcut for getting the currentTime from the status.

device.close(callback)

Close the connection with the device.

device.on('connected', callback)

Event emitted when the client is connected to the device.

device.on('finished', callback)

Event emitted when the media (audio or video) has finished.

device.on('status', callback)

Event emitted when the device has a new status: callback(status).

Additional information

License

MIT. Copyright (c) Alex

chromecast-api's People

Contributors

alxhotel avatar amilajack avatar araxeus avatar benargee avatar chromecast-sponsorblock avatar dancerj avatar dependabot-preview[bot] avatar dependabot[bot] avatar faustyn-p avatar greenkeeper[bot] avatar jhfoo avatar matjaz avatar pevecyan avatar steffospieler avatar tmigone avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.