Esempio n. 1
1
def setupChromecast(attempts=1000):
    if not USE_CHROMECAST:
        return ChromecastEmulator()
    # setup and connect to the chromecast and return the used cast
    retry = False
    casts = pychromecast.get_chromecasts_as_dict().keys()
    print casts
    if len(casts) > 0:
        cast = pychromecast.get_chromecast(friendly_name=casts[0])
        if cast is None:
            retry = True
    else:
        retry = True

    if retry:
        if not attempts:
            return None
        attempts -= 1
        # If we didn't find any chromecasts then try again
        time.sleep(1)
        print ("Chromecast couldn't be found, %d attempts left" % attempts)
        return setupChromecast(attempts)

    cast.wait()
    return cast
Esempio n. 2
0
def setupChromecast(attempts=1000):
    if not USE_CHROMECAST:
        return ChromecastEmulator()
    # setup and connect to the chromecast and return the used cast
    retry = False
    casts = pychromecast.get_chromecasts_as_dict().keys()
    print casts
    if len(casts) > 0:
        cast = pychromecast.get_chromecast(friendly_name=casts[0])
        if cast is None:
            retry = True
    else:
        retry = True

    if retry:
        if not attempts:
            return None
        attempts -= 1
        # If we didn't find any chromecasts then try again
        time.sleep(1)
        print("Chromecast couldn't be found, %d attempts left" % attempts)
        return setupChromecast(attempts)

    cast.wait()
    return cast
Esempio n. 3
0
    def __init__(self, stream_url, preferred_chromecast=None):
        self.stream_url = stream_url

        logger.info("Searching for Chromecast devices...")
        chromecast_list = pychromecast.get_chromecasts_as_dict().keys()
        logger.debug("Found Chromecasts: %s", chromecast_list)

        if not chromecast_list:
            raise RuntimeError("Unable to find a Chromecast on the local network.")

        chromecast_name = None
        if preferred_chromecast:
            preferred_index = chromecast_list.index(preferred_chromecast)
            if preferred_index:
                chromecast_name = preferred_chromecast
            else:
                logger.warn("Couldn't find preferred chromecast")
                
        if chromecast_name is None:
            chromecast_name = chromecast_list[0]
            if len(chromecast_list) > 1:
                logger.warn("Multiple Chromecast devices detected")
                logger.warn("Found Chromecasts: %s", ', '.join(chromecast_list))
                logger.warn("Defaulting to Chromecast '%s'", chromecast_name)

        logger.info("Connecting to Chromecast '%s'", chromecast_name)
        self.chromecast = pychromecast.get_chromecast(
            friendly_name=chromecast_name)
        self.chromecast.wait()
        logger.info("Connected to Chromecast '%s'", chromecast_name)
Esempio n. 4
0
 def _get_chromecasts(self):
     # compatibility
     try:
         return list(pychromecast.get_chromecasts_as_dict().keys())
     except AttributeError:
         self._chromecasts_by_name = {c.name: c for c in pychromecast.get_chromecasts()}
         return list(self._chromecasts_by_name.keys())
Esempio n. 5
0
def main():
    casts = pychromecast.get_chromecasts_as_dict()
    parser = argparse.ArgumentParser(prog=__progname__)
    parser.add_argument("--file", help="Filename of media to play")
    parser.add_argument("--url", help="URL of media to play. You should probably specify this if nothing else.")
#    parser.add_argument("-p", "--pause", help="Pause playback", action='store_true')
    parser.add_argument("--power", help="Turn on TV and switch to Chromecast", action="store_true")
    parser.add_argument("-s", "--stop", help="Stop playback", action='store_true')
    parser.add_argument("-d", "--device", help="Select device. List devices with -D")
    parser.add_argument("-D", "--devices", help="List devices", action='store_true')
    parser.add_argument("--port", help="Specify port for web server (if you pick a local file above)", type=int)
    args = parser.parse_args()
    if args.devices:
        print(", ".join(casts.keys()), file=sys.stderr)
        return
    if args.device:
        cast = casts[args.device]
    else:
        cast = casts[next(iter(casts))]
    if args.power:
        power_on_tv(cast)
        return
    if args.url or args.file:
        play_video(args.url, args.file, cast)
        return
#    elif args.pause:
#        pause_video(cast)
#        return
    elif args.stop:
        stop_video(cast)
        return
Esempio n. 6
0
    def select_chromecast(cls):
        name = None
        chromecasts = pychromecast.get_chromecasts_as_dict().keys()

        if not chromecasts:
            return

        if len(chromecasts) > 1:
            term = Terminal()

            print(term.clear())
            print(term.bold("Touchandgo\n"))
            print(term.red("Chromecasts Availables"))
            for i, cc_name in enumerate(chromecasts, 1):
                option = term.cyan("%s) " % i)
                option += cc_name
                print(option)

            input_text = "Select which chromecast you want to cast (1-%d): " % \
                len(chromecasts)
            user_input = raw_input(input_text)

            try:
                opt = int(user_input) - 1
                if opt > len(chromecasts) or opt < 1:
                    opt = 0
            except ValueError:
                opt = 0

            name = chromecasts[opt]
        elif len(chromecasts) == 1:
            name = chromecasts[0]

        return name
Esempio n. 7
0
def setup():
    chromecastList = list(pychromecast.get_chromecasts_as_dict().keys())
    if chromecastList == []:
        raise Exception("We didn't find any Chromecasts...")
    else:
        print("Found ChromeCast: " + str(chromecastList))
        return chromecastList
Esempio n. 8
0
def config_wizard():
    click.echo('''
You'll need to create a last.fm API application first. Do so here:

    http://www.last.fm/api/account/create

What you fill in doesn't matter at all, just make sure to save the API
Key and Shared Secret.
''')

    config = {
        'lastfm': {
            key: click.prompt(key, type=str)
            for key in ['user_name', 'password', 'api_key', 'api_secret']
        }
    }

    available = pychromecast.get_chromecasts_as_dict().keys()

    if len(available) != 1 or click.confirm('Manually specify cast device?'):
        click.echo('\n\nAvailable cast devices: %s' % ', '.join(available))

        config['chromecast'] = {
            'name': click.prompt('Which device should be used?')
        }

    generated = toml.dumps(config)
    click.echo('Generated config:\n\n%s' % generated)

    if click.confirm('Write to ~/.lastcast.toml?'):
        with open(os.path.expanduser('~/.lastcast.toml'), 'w') as fp:
            fp.write(generated)
Esempio n. 9
0
    def ready(self):
        if self.first_run:
            self.cast_list = pycc.get_chromecasts_as_dict().keys()
            self.cast = pycc.get_chromecast(friendly_name="Ulicast")

            self.first_run = False
        else:
            pass
Esempio n. 10
0
def setup(chromecast_name):
    chromecastList = list(pychromecast.get_chromecasts_as_dict().keys())
    if chromecastList == []:
        print("We didn't find any Chromecasts...")
        setup(chromecast_name)
    else:
        print("Found ChromeCast: " + str(chromecastList))

    cast = pychromecast.get_chromecast(friendly_name=chromecast_name)
def setup():
    chromecastList = list(pychromecast.get_chromecasts_as_dict().keys())
    if chromecastList == []:
        print "Shit, we didn't find any Chromecasts..."
        setup()
    else:
        print "Found ChromeCast: " + str(chromecastList)

    cast = pychromecast.get_chromecast(friendly_name="")
Esempio n. 12
0
 def GET(self):
 	cast =  pychromecast.get_chromecasts_as_dict().keys()
 	cast = pychromecast.get_chromecast(friendly_name=chromecast_name)
 	cast.wait()
 	mc = cast.media_controller
 	mc.pause()
 	time.sleep(2)
 	mc.stop()
     return render.home('Stopping Chromecast')
def setup():
	chromecastList = list(pychromecast.get_chromecasts_as_dict().keys())
	if chromecastList == []:
		print "Shit, we didn't find any Chromecasts..."
		setup()
	else:
		print "Found ChromeCast: " + str(chromecastList)

	cast = pychromecast.get_chromecast(friendly_name="")
Esempio n. 14
0
 def GET(self):
     cast = pychromecast.get_chromecasts_as_dict().keys()
     cast = pychromecast.get_chromecast(friendly_name=chromecast_name)
     cast.wait()
     mc = cast.media_controller
     mc.pause()
     time.sleep(2)
     mc.stop()
     return render.home('Stopping Chromecast')
Esempio n. 15
0
 def _get_chromecasts(self):
     # compatibility
     try:
         return list(pychromecast.get_chromecasts_as_dict().keys())
     except AttributeError:
         self._chromecasts_by_name = {c.name: c for c in
                                      pychromecast.get_chromecasts(
                                          tries=self.tries)}
         return list(self._chromecasts_by_name.keys())
def setup(chromecast_name):
    chromecastList = list(pychromecast.get_chromecasts_as_dict().keys())
    if chromecastList == []:
        print "Shit, we didn't find any Chromecasts..."
        setup(chromecast_name)
    else:
        print "Found ChromeCast: " + str(chromecastList)
    chromecast_name = str(chromecast_name).decode('string_escape')

    cast = pychromecast.get_chromecast(friendly_name=chromecast_name)
def setup(chromecast_name):
	chromecastList = list(pychromecast.get_chromecasts_as_dict().keys())
	if chromecastList == []:
		print "Shit, we didn't find any Chromecasts..."
		setup(chromecast_name)
	else:
		print "Found ChromeCast: " + str(chromecastList)
	chromecast_name = str(chromecast_name).decode('string_escape')
	
	cast = pychromecast.get_chromecast(friendly_name=chromecast_name)
def setup(chromecast_name):
	chromecastList = list(pychromecast.get_chromecasts_as_dict().keys())
	if chromecastList == []:
		print("We didn't find any Chromecasts...")
		setup(chromecast_name)
	else:
		print ("Found ChromeCast: " + str(chromecastList))

	
	cast = pychromecast.get_chromecast(friendly_name=chromecast_name)
Esempio n. 19
0
def main():
    casts = pychromecast.get_chromecasts_as_dict()
    parser = argparse.ArgumentParser(prog=__progname__)
    parser.add_argument("--file", help="Filename of media to play")
    parser.add_argument(
        "--url",
        help=
        "URL of media to play. You should probably specify this if nothing else."
    )
    #    parser.add_argument("-p", "--pause", help="Pause playback", action='store_true')
    parser.add_argument("--power",
                        help="Turn on TV and switch to Chromecast",
                        action="store_true")
    parser.add_argument("-s",
                        "--stop",
                        help="Stop playback",
                        action='store_true')
    parser.add_argument("-d",
                        "--device",
                        help="Select device. List devices with -D")
    parser.add_argument("-D",
                        "--devices",
                        help="List devices",
                        action='store_true')
    parser.add_argument(
        "--port",
        help="Specify port for web server (if you pick a local file above)",
        type=int)
    args = parser.parse_args()
    if args.devices:
        print(", ".join(casts.keys()), file=sys.stderr)
        return
    if args.device:
        cast = casts[args.device]
    else:
        cast = casts[next(iter(casts))]
    if args.power:
        power_on_tv(cast)
        return
    if args.url or args.file:
        play_video(args.url, args.file, cast)
        return


#    elif args.pause:
#        pause_video(cast)
#        return
    elif args.stop:
        stop_video(cast)
        return
Esempio n. 20
0
 def GET(self, station):
     if not station or station == "radio4":
         media_uri = "bbc_radio_fourfm.m3u8"
         station = "Radio 4"
     if station == "radio6":
         media_uri = "bbc_6music.m3u8"
         station = "Radio 6"
     cast =  pychromecast.get_chromecasts_as_dict().keys()
     cast = pychromecast.get_chromecast(friendly_name="Downstairs")
     cast.wait()
     mc = cast.media_controller
     mc.play_media(root_url + media_uri, 'application/x-mpegURL')
     mc.play()
     return render.home('Playing ' + station)
Esempio n. 21
0
 def GET(self, station):
     if not station or station == "radio4":
         media_uri = "bbc_radio_fourfm.m3u8"
         station = "Radio 4"
     if station == "radio6":
         media_uri = "bbc_6music.m3u8"
         station = "Radio 6"
     cast = pychromecast.get_chromecasts_as_dict().keys()
     cast = pychromecast.get_chromecast(friendly_name="Downstairs")
     cast.wait()
     mc = cast.media_controller
     mc.play_media(root_url + media_uri, 'application/x-mpegURL')
     mc.play()
     return render.home('Playing ' + station)
Esempio n. 22
0
	def __init__(self):
		# Time for last idle application per device
		self.idle = {}

		# Load configuration from file
		self.config = ConfigParser.ConfigParser()
		self.config.read('castsaver.ini')
		self.check_interval = self.config.getint('settings', 'poll_interval')
		self.display_interval = self.config.getint('settings', 'display_time')
		self.max_idle_interval = self.config.getint('settings','max_idle')
		self.mediaSource = self.config.get('settings', 'media_source')
		self.run_if_backdrop_mode = self.config.getboolean('settings', 'run_if_backdrop_mode')
		self.logFile = self.config.get('logging', 'log_file')
		self.logLevel = self.config.get('logging', 'log_level')
		self.available_for_status = self.config.get('settings', 'available_for_status').split(',')
		self.available_for_status.append(CastSaver.DEFAULT_MEDIAPLAYER_APP_ID)

		# Setup logging
		self.logger = logging.getLogger(__name__)
		if not self.logFile:
                        handler = logging.StreamHandler(sys.stdout)
		else:
			handler = logging.FileHandler(self.logFile)
		self.logger.setLevel(logging.getLevelName(self.logLevel))
		formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
		handler.setFormatter(formatter)
		self.logger.addHandler(handler)

		# pyChromecast logger
                logging.getLogger('pychromecast.socket_client').addHandler(handler);

		# Discover chromecasts
		self.chromeCasts = pychromecast.get_chromecasts_as_dict()
		if len(self.chromeCasts) == 0:
			self.logger.info('Discovered no chrome cast devices. Exiting')
			sys.exit()
		self.logger.info('Dicovered chromecast devices: ' + str(self.chromeCasts.keys()))
		for name in self.chromeCasts.keys():
			self.idle[name] = 0

		while True:
			for name, cast in self.chromeCasts.iteritems():
 				self.check(cast)
  			
			# Wait until next check
			self.logger.debug('Waiting to poll again:' + str(self.check_interval))
			time.sleep(self.check_interval)
Esempio n. 23
0
def cast_main(leader, sentence, *args, **kwargs):
    log.info("In cast")
    def cast(chromecast):
        #cast = pychromecast.get_chromecast(friendly_name=chromecast)
        #cast.wait()
        if leader == "netflix" or sentence.split(" ")[1] == "netflix" or "netflix" in args["ents"].keys().lower():
            log.info("Sentence is {0}".format(sentence))
            full_sentence = (leader, sentence)
            full_text = ' '.join(full_sentence)
            netflix(full_text, args)
    known_chromecasts = config.load_config("chromecasts")
    log.info("Known chromecasts are {0}".format(str(known_chromecasts)))
    chromecasts_available = pychromecast.get_chromecasts_as_dict().keys()
    chromecast_name = None
    for chromecast in chromecasts_available:
        if isinstance(known_chromecasts, list):
            if chromecast in known_chromecasts:
                chromecast_name = chromecast
        elif isinstance(known_chromecasts, str):
            if chromecast == known_chromecasts:
                chromecast_name = chromecast

        else:
            return "Error: unrecognized chromecast conifg {0}".format(str(known_chromecasts))
    if chromecast_name:
        cast(chromecast_name)
    else:
        chromecast_choice = easygui.buttonbox(title="Chromecasts Found", msg="Please choose a chromecast", choices=chromecasts_available)
        if chromecast_choice:
            if easygui.ynbox("Would you like to save this chromecast in your W.I.L.L config?"):
                config.add_config({"known_chromecasts":[chromecast_choice]})
            cast(chromecast_choice)
        else:
            return "Error: No chromecast chosen"
    # cast.wait()
    # print(cast.device)
    #
    # print(cast.status)
    #
    # mc = cast.media_controller
    # mc.play_media('http://commondatastorage.googleapis.com/gtv-videos-bucket/sample/BigBuckBunny.mp4', 'video/mp4')
    # print(mc.status)
    #
    # mc.pause()
    # time.sleep(5)
    # mc.play()
Esempio n. 24
0
    def _get_chromecasts(self):
        # compatibility
        try:
            return list(pychromecast.get_chromecasts_as_dict().keys())
        except AttributeError:
            pass

        _chromecasts = pychromecast.get_chromecasts(tries=self.tries)

        # since PR380, pychromecast.get_chromecasts returns a tuple
        # see: https://github.com/home-assistant-libs/pychromecast/pull/380
        if type(_chromecasts) == tuple:
            _chromecasts = _chromecasts[0]

        self._chromecasts_by_name = {c.name: c for c in _chromecasts}

        return list(self._chromecasts_by_name.keys())
Esempio n. 25
0
    def _get_chromecast(self, config):
        if 'name' in config:
            cast = pychromecast.get_chromecast(friendly_name=config['name'])
        else:
            cast = pychromecast.get_chromecast()

        if cast is None:
            available = pychromecast.get_chromecasts_as_dict().keys()

            click.echo('Could not connect to device %s\n'
                       'Available devices: %s ' %
                       (config.get('name', ''), ', '.join(available)))
            sys.exit(1)

        # Wait for the device to be available
        cast.wait()
        print('Using chromecast: ', cast.device)
        return cast
Esempio n. 26
0
    def __init__(self, stream_url):
        self.stream_url = stream_url

        logger.info("Searching for Chromecast devices...")
        chromecast_list = pychromecast.get_chromecasts_as_dict().keys()
        logger.debug("Found Chromecasts: %s", chromecast_list)

        if not chromecast_list:
            raise RuntimeError("Unable to find a Chromecast on the local network.")

        chromecast_name = chromecast_list[0]
        if len(chromecast_list) > 1:
            logger.warn("Multiple Chromecast devices detected, using defaulting to Chromecast '%s'", chromecast_name)

        logger.info("Connecting to Chromecast '%s'", chromecast_name)
        self.chromecast = pychromecast.get_chromecast(
            friendly_name=chromecast_name)
        self.chromecast.wait()
        logger.info("Connected to Chromecast '%s'", chromecast_name)
def checkChromeCasts():
	chromecastList = list(pychromecast.get_chromecasts_as_dict().keys())
	if chromecastList == []:
		print "Shit, we didn't find any Chromecasts..."
	for x in range(len(chromecastList)):
		cur = db.cursor()
		escaped = db.escape_string(chromecastList[x])
		cur.execute("SELECT * FROM saved_chromecasts WHERE `friendly_name` = \""+ str(escaped) +"\" LIMIT 1 ;")
		print cur.fetchall()
		for row in cur.fetchall():
			if row[1] == chromecastList[x]:
				exists = True
			else:
				exists = False


			if not exists == True:
				print escaped + " was added."
				cur.execute("INSERT INTO  `saved_chromecasts` (`friendly_name`) VALUES (`"+ str(escaped) + "`);")
def checkChromeCasts():
    chromecastList = list(pychromecast.get_chromecasts_as_dict().keys())
    if chromecastList == []:
        print "Shit, we didn't find any Chromecasts..."
    for x in range(len(chromecastList)):
        cur = db.cursor()
        escaped = db.escape_string(chromecastList[x])
        cur.execute(
            "SELECT * FROM saved_chromecasts WHERE `friendly_name` = \"" +
            str(escaped) + "\" LIMIT 1 ;")
        print cur.fetchall()
        for row in cur.fetchall():
            if row[1] == chromecastList[x]:
                exists = True
            else:
                exists = False

            if not exists == True:
                print escaped + " was added."
                cur.execute(
                    "INSERT INTO  `saved_chromecasts` (`friendly_name`) VALUES (`"
                    + str(escaped) + "`);")
Esempio n. 29
0
def main():
    casts = pychromecast.get_chromecasts_as_dict()
    parser = argparse.ArgumentParser()
    parser.add_argument(
        "url",
        nargs="?",
        help="URL of media to play. Doesn't support local addresses yet.")
    #    parser.add_argument("-p", "--pause", help="Pause playback", action='store_true')
    parser.add_argument("-s",
                        "--stop",
                        help="Stop playback",
                        action='store_true')
    parser.add_argument("-d",
                        "--device",
                        help="Select device. List devices with -D")
    parser.add_argument("-D",
                        "--devices",
                        help="List devices",
                        action='store_true')
    args = parser.parse_args()
    if args.devices:
        print ", ".join(casts.keys())
        return
    if args.device:
        cast = casts[args.device]
    else:
        cast = casts[casts.keys()[0]]
    if not args.stop:
        play_video(args.url, cast)
        return


#    elif args.pause:
#        pause_video(cast)
#        return
    elif args.stop:
        stop_video(cast)
        return
Esempio n. 30
0
 def get_chromecasts(self):
     return pychromecast.get_chromecasts_as_dict().keys()
Esempio n. 31
0
def get_some_cast():

    casts = pychromecast.get_chromecasts_as_dict()

    return casts[casts.keys()[0]]
Esempio n. 32
0
import souper

soup = souper.souperDuper("bison")
soupNext = soup.grabPart()
soupNext.__next__()
exit()

import pychromecast
from pychromecast.controllers.youtube import YouTubeController
from pychromecast.controllers.media import MediaController
import time

myIp = "172.22.27.204"  #'172.22.27.48'

print("start discovery")
allCastNames = pychromecast.get_chromecasts_as_dict().keys()
allCasts = {}
video = "C_XyuvPE9t4"
print("end discovery")

castIndex = {}
for castName in allCastNames:
    cast = pychromecast.get_chromecast(friendly_name=castName)
    allCasts[castName] = cast
    castIndex[castName] = len(castIndex)

for castName, cast in allCasts.items():
    # cast.quit_app()
    pass

print(castIndex)
	for root, dirs, files in os.walk(adir):
		for _file in files:
			to_show.append(os.path.join(root, _file))
			#if file.endswith(".jpg") or file.endswith(".JPG") or file.endswith(".JPEG") or file.endswith(".jpeg"):
			#	to_show.append("http://192.168.1.200/BDsYNs2A8egT1xNGyc4M6QixRbshxdVh/" + )
			#   to_show.append(root.split("photo/")[1] + _file)

if options.verbose:
	print("Connecting to Chromecast...")
my_ip = [l for l in ([ip for ip in socket.gethostbyname_ex(socket.gethostname())[2] if not ip.startswith("127.")][:1], [[(s.connect(('8.8.8.8', 53)), s.getsockname()[0], s.close()) for s in [socket.socket(socket.AF_INET, socket.SOCK_DGRAM)]][0][1]]) if l][0][0]
cast = chromecast.get_chromecast(friendly_name=options.chromecast)
try:
	cast.wait()
	mc = cast.media_controller
except:
	valid = chromecast.get_chromecasts_as_dict().keys()
	print("The chromecast you specified wasn't located. Please chose "
	      "from the following Cast devices: '%s'" % "','".join(valid))
	sys.exit(2)

def serve_file(the_file, port):
    os.chdir(os.path.dirname(the_file))

    # Start the webserver
    child_pid = os.fork()

    if child_pid == 0:
        Handler = SimpleHTTPServer.SimpleHTTPRequestHandler
        httpd = SocketServer.TCPServer(("", port), Handler)
        httpd.timeout = 15
        httpd.handle_request()
Esempio n. 34
0
def get_some_cast():

    casts = pychromecast.get_chromecasts_as_dict()

    return casts[casts.keys()[0]]
Esempio n. 35
0
def reboot_all_command():
    """Reboot all Chromecasts we can find."""

    for c in pychromecast.get_chromecasts_as_dict().values():
        print("rebooting {}".format(c.device.friendly_name))
        c.reboot()
Esempio n. 36
0
def devicesList():
    chromecasts = []
    for key in pychromecast.get_chromecasts_as_dict().keys():
        chromecasts.append(key)

    return jsonify({'list': chromecasts})
Esempio n. 37
0
__author__ = 'bison'

import pychromecast
from pychromecast.controllers.youtube import YouTubeController
from pychromecast.controllers.media import MediaController
import time

myIp = '172.22.27.48'

allCastNames = pychromecast.get_chromecasts_as_dict().keys()
allCasts = {}
video = "C_XyuvPE9t4"

for castName in allCastNames:
    cast = pychromecast.get_chromecast(friendly_name=castName)
    allCasts[castName] = cast

for castName, cast in allCasts.items():
    #cast.quit_app()
    pass

while True:
    mypath = '/home/bison/Dropbox/Photos/Motivation'
    from os import listdir
    from os.path import isfile, join
    import random
    onlyfiles = [f for f in listdir(mypath) if isfile(join(mypath, f))]
    imgFile = random.choice(onlyfiles)
    for castName, cast in allCasts.items():
        if castName != 'lockedName':
            #cast.quit_app()
Esempio n. 38
0
def configure(config, api, assets):
    CASTS.update(pychromecast.get_chromecasts_as_dict())
Esempio n. 39
0
def active_devices():
    return pychromecast.get_chromecasts_as_dict().keys()
my_ip = [
    l for l in (
        [
            ip for ip in socket.gethostbyname_ex(socket.gethostname())[2]
            if not ip.startswith("127.")
        ][:1],
        [[(s.connect(('8.8.8.8', 53)), s.getsockname()[0], s.close())
          for s in [socket.socket(socket.AF_INET, socket.SOCK_DGRAM)]][0][1]])
    if l
][0][0]
cast = chromecast.get_chromecast(friendly_name=options.chromecast)
try:
    cast.wait()
    mc = cast.media_controller
except:
    valid = chromecast.get_chromecasts_as_dict().keys()
    print("The chromecast you specified wasn't located. Please chose "
          "from the following Cast devices: '%s'" % "','".join(valid))
    sys.exit(2)


def serve_file(the_file, port):
    os.chdir(os.path.dirname(the_file))

    # Start the webserver
    child_pid = os.fork()

    if child_pid == 0:
        Handler = SimpleHTTPServer.SimpleHTTPRequestHandler
        httpd = SocketServer.TCPServer(("", port), Handler)
        httpd.timeout = 15
def main():
    import socket, ssl, select, time, re
    from thread import start_new_thread
    from struct import pack
    import pychromecast
    import sys
    
    if len(sys.argv) == 1 or sys.argv[1] == "--help":
        print "Usage: startcast [-l] [--help] [CHROMECAST_FRIENDLY_NAME] [APP_ID]"
        print "  -l                               show list of available chromeasts"
        print "  --help                           show help text"
        print "  CHROMECAST_FRIENDLY_NAME APP_ID  play APPID on a named chromecast"
        exit(0)

    if sys.argv[1] == "-l":
        print "\n".join(pychromecast.get_chromecasts_as_dict().keys())
        exit(0)
        
    try:
        CHROMECAST_FRIENDLY_NAME = sys.argv[1]
        APP_ID = sys.argv[2]
    except Exception as e:
        print "Define the 'chromecast friendly name' and 'app id' like this: startcast CHROMECAST_FRIENDLY_NAME APP_ID"
        exit(1)
        
    
    TYPE_ENUM = 0
    TYPE_STRING = 2
    TYPE_BYTES = TYPE_STRING

    def clean(s):
        return re.sub(r'[\x00-\x1F\x7F]', '?',s)
    def getType(fieldId,t):
        return (fieldId << 3) | t
    def getLenOf(s):
        x = ""
        l = len(s)
        while(l > 0x7F):
            x += pack("B",l & 0x7F | 0x80)
            l >>= 7
        x += pack("B",l & 0x7F)
        return x

    def write_to_socket(socket, namespace, data):
        lnData = getLenOf(data)
        msg = pack(">BBBB%dsBB%dsBB%dsBBB%ds%ds" % (len("sender-0"),len("receiver-0"),len(namespace),len(lnData),len(data)),getType(1,TYPE_ENUM),0,getType(2,TYPE_STRING),len("sender-0"),"sender-0",getType(3,TYPE_STRING),len("receiver-0"),"receiver-0",getType(4,TYPE_STRING),len(namespace),namespace,getType(5,TYPE_ENUM),0,getType(6,TYPE_BYTES),lnData,data)
        msg = pack(">I%ds" % (len(msg)),len(msg),msg)
        socket.write(msg)

    cast = pychromecast.get_chromecast(friendly_name=CHROMECAST_FRIENDLY_NAME)
    
    if cast:
        cast.quit_app()
        socket = socket.socket()
        socket = ssl.wrap_socket(socket)
        socket.connect((cast.host,8009))

        data = '{"type":"CONNECT","origin":{}}'
        namespace = "urn:x-cast:com.google.cast.tp.connection"
        write_to_socket(socket, namespace, data)

        data = '{"type":"LAUNCH","requestId":46479001,"appId":"%s"}' % APP_ID
        namespace = "urn:x-cast:com.google.cast.receiver"
        write_to_socket(socket, namespace, data)
        
        print "Starting application %s on %s" % (APP_ID, CHROMECAST_FRIENDLY_NAME)
        exit(0)
    
    else:
        
        print "No chromecast found with friendly name %s" % (CHROMECAST_FRIENDLY_NAME)
        exit(1)
Esempio n. 42
0
from __future__ import print_function
import time
import pychromecast

device_list = pychromecast.get_chromecasts_as_dict().keys()
if len(device_list) == 0:
    raise IOError("no cast devices in local network")

cast = pychromecast.get_chromecast(friendly_name=device_list[0])
cast.wait()
print(cast.device)
print(cast.status)

mc = cast.media_controller
mc.play_media(
    "http://r10---sn-q4f7sne7.googlevideo.com/videoplayback?mime=video%2Fmp4&dur=283.306&upn=iRsXsWyqBk4&itag=22&ratebypass=yes&ip=2a03%3A8180%3A1001%3A16a%3A%3A8ee1&source=youtube&mm=31&mn=sn-q4f7sne7&id=o-AM6oFaf-9IXF918Fc-j1gDYz6Rr4-LJYTIS5AeQ4apjR&ms=au&mt=1454510670&mv=m&pl=40&key=yt6&initcwndbps=537500&sparams=dur%2Cid%2Cinitcwndbps%2Cip%2Cipbits%2Citag%2Clmt%2Cmime%2Cmm%2Cmn%2Cms%2Cmv%2Cnh%2Cpl%2Cratebypass%2Csource%2Cupn%2Cexpire&expire=1454532434&lmt=1447324598844667&ipbits=0&nh=IgpwcjA1LmRmdzA2KgkxMjcuMC4wLjE&fexp=9405191%2C9407610%2C9408210%2C9408522%2C9416126%2C9418200%2C9419451%2C9420452%2C9422342%2C9422571%2C9422596%2C9423661%2C9423662%2C9424006%2C9427317%2C9427365%2C9427850&sver=3&signature=90DA6BBB3CE2772928C7D165787398D81ADF1EAF.4558808405F713CC54FE4252382AE7BDBED1EB56&title=Shoot+The+Kuruvi+Official+Song+Video+From+Movie+Jil+Jung+Juk+By+Anirudh+%26+Vishal+Chandrashekhar",
    "video/mp4",
)

time.sleep(5)
mc.pause()
time.sleep(2)
mc.play()
Esempio n. 43
0
 def search_devices(self):
     print "Searching for Chromecast devices..."
     self.devices = pychromecast.get_chromecasts_as_dict().keys()
     gobject.idle_add(self.success_cb)
Esempio n. 44
0
# Triggers program exit
shutdown = Event()


def signal_handler(x, y):
    shutdown.set()


# Listen for these signals
signal.signal(signal.SIGTERM, signal_handler)
signal.signal(signal.SIGQUIT, signal_handler)
signal.signal(signal.SIGINT, signal_handler)

# A list of Chromecast devices broadcasting
chromecast_devices = ', '.join(pychromecast.get_chromecasts_as_dict().keys())

# Some command line help
parser = argparse.ArgumentParser(description='Cast YouTube videos headlessly.')
parser.add_argument('-d',
                    '--device',
                    required=True,
                    help='Name of device to cast to. Choose: %s' %
                    chromecast_devices)
parser.add_argument('-v',
                    '--video',
                    required=True,
                    help='YouTube video ID (part after ?v= in the URL)')

opts = parser.parse_args()
Esempio n. 45
0
 def get_active_chromecasts(self):
     casts = list(pyc.get_chromecasts_as_dict().keys())
     self.chromecasts = list(casts)
     return self.chromecasts
Esempio n. 46
0
def reboot_all_command():
    """Reboot all Chromecasts we can find."""

    for c in pychromecast.get_chromecasts_as_dict().values():
        print("rebooting {}".format(c.device.friendly_name))
        c.reboot()
Esempio n. 47
0
def cast(request):
    casts = pycc.get_chromecasts_as_dict().keys()

    return render_to_response("turbomansion/cast.html", {"casts": casts})
Esempio n. 48
0
def cast(request):
    casts = pycc.get_chromecasts_as_dict().keys()

    return render_to_response("turbomansion/cast.html", {"casts" : casts})