npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

chromecast-api

v0.4.2

Published

Chromecast streaming module all in JS

Downloads

3,907

Readme

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

  • Supported Media: https://developers.google.com/cast/docs/media
  • Receiver Apps: https://developers.google.com/cast/docs/receiver_apps

License

MIT. Copyright (c) Alex