def deamonize(self): #We need to change this method to create an actual deamon #I was lazy and used a while true until we know what a raspberry pi will need for a deamon while True: try: user_command = input('Enter a command: ') if str(user_command).lower() in self.PlayPause: self.play_pause_toggle() elif str(user_command).lower() in self.InsertMedia: self.play_media(self.MEDIA_URL, self.MEDIA_TYPE) elif str(user_command).lower() == "youtube": yt = YouTubeController() self.CAST.register_handler(yt) yt.play_video('dQw4w9WgXcQ') elif str(user_command).lower() in self.CC_Kill: self.stop_CC() break except ValueError: print("Invalid Command") continue
def main(): chromecasts, browser = pychromecast.get_listed_chromecasts( friendly_names=[CAST_NAME]) if not chromecasts: print('No chromecast with name "{}" discovered'.format(args.cast)) sys.exit(1) cast = chromecasts[0] # Start socket client's worker thread and wait for initial status update cast.wait() # Create Youtube Controller + Register it yt = YouTubeController() cast.register_handler(yt) # Create a new Youtube Session yt.start_session_if_none() s1 = yt._session s1._start_session() # Initialize the Queue to play s1._initialize_queue(VIDEO_LIST[0]) print("Queue Play Order: ") print("1. " + VIDEO_LIST[0]) order = 2 # Add wanted video id's to the Queue for id in VIDEO_LIST[1:]: print(str(order) + ". " + id) yt.add_to_queue(id) order += 1
def process(self): yt = YouTubeController() self.chromecast.register_handler(yt) yt_id = self.card["uri"].split(":")[0] yt.play_video(yt_id, playlist_id=":".join(self.card["uri"].split(":")[1:]) or None)
def playContent(self, videoID): print("video shud play but won't :(") cast = self.chromecasts[0] cast.wait() yt = YouTubeController() cast.register_handler(yt) yt.play_video(videoID)
def Play(bid): falcon_logger.info("Arrancando Chromecast BID %s" %(bid)) chromecasts, browser = pychromecast.get_listed_chromecasts(friendly_names=[config.CHROMECAST.NAME]) if not chromecasts: msg="No encuentro el chromecast con nombre %s" % config.CHROMECAST.NAME falcon_logger.info(msg) return 9,msg browser.stop_discovery() cast = chromecasts[0] # print(cast) cast.wait() mc = cast.media_controller falcon_logger.info("Arrancando Youtube Controller") yt = YouTubeController() cast.register_handler(yt) retry=6 while (retry): yt.play_video(bid) if (mc.status.player_is_playing): break falcon_logger.info("No arranca, espero") time.sleep(2) retry-=1 falcon_logger.info("Chromecast Terminado")
async def play(self, ctx, url): if not url: ctx.send( "Invalid link. Format like: `!play https://www.youtube.com/watch?v=dQw4w9WgXcQ`" ) return url = url(s[32:]) services, browser = pychromecast.discovery.discover_chromecasts() pychromecast.discovery.stop_discovery(browser) chromecasts, browser = pychromecast.get_listed_chromecasts( friendly_names=[CAST_NAME]) if not chromecasts: print('No chromecast with name "{}" discovered'.format(CAST_NAME)) sys.exit(1) cast = chromecasts[0] # Start socket client's worker thread and wait for initial status update cast.wait() yt = YouTubeController() cast.register_handler(yt) yt.play_video(url) # Shut down discovery browser.stop_discovery()
def playYoutubeVideo(request, cast_name, video_id): yt = YouTubeController() cast = pycc.get_chromecast(friendly_name=cast_name) cast.register_handler(yt) yt.play_video(video_id) return HttpResponse("Playing {} on {}".format(video_id, cast_name))
def __init__(self, name): self.name = name chromecasts = pychromecast.get_chromecasts() cast = next(cc for cc in chromecasts if cc.device.friendly_name == name) cast.wait() self.yt = YouTubeController() cast.register_handler(self.yt)
def cast_youtube(self, chromecast, video_id): chromecasts = pychromecast.get_chromecasts() cast = next(cc for cc in chromecasts if cc.device.friendly_name == chromecast) cast.wait() yt = YouTubeController() cast.register_handler(yt) yt.play_video(video_id)
def play_youtube(video_id): global ghome yt = YouTubeController() ghome.register_handler(yt) yt.play_video(video_id) while yt.is_active: time.sleep(1)
def chromecast_stuff(): chromecasts = pychromecast.get_chromecasts() for cc in chromecasts: if cc.device.friendly_name == os.getenv("CHROMECAST"): cc.wait() yt = YouTubeController() cc.register_handler(yt) yt.play_video(latest_video) break
def playVideo(self, youtubeLink): self.quitApp() self.yt = YouTubeController() self.cast.register_handler(self.yt) self.yt.play_video(youtubeLink)
def youtube(video_id): """ Play a specified YouTube video. """ chromecast, = pychromecast.get_chromecasts() chromecast.wait() youtube = YouTubeController() chromecast.register_handler(youtube) youtube.play_video(video_id)
def handle_mapping(mapping): global currentmapping if "url" in mapping and mapping["url"] == "STOP": print("Stopping") currentmapping = "" cast.media_controller.stop() return if (mapping["code"] == currentmapping and mapping.get("series_type", "") != "random" and "youtube_id" not in mapping): print("Not restarting same file") return currentmapping = mapping["code"] if "url" in mapping: print("Playing %s" % mapping["name"]) cast.play_media(mapping["url"], "video/mp4") return if "series_urls" in mapping and mapping.get("series_type", "") == "random": print("Playing %s (random)" % mapping["name"]) index = randrange(len(mapping["series_urls"]) - 1) cast.play_media(mapping["series_urls"][index], "video/mp4") return if "youtube_id" in mapping: print("Playing youtube id %s" % mapping["youtube_id"]) yt = YouTubeController() cast.register_handler(yt) yt.play_video(mapping["youtube_id"]) return if "netflix_search" in mapping: print("Playing netflix search %s" % mapping["netflix_search"]) cast.media_controller.stop() netflix.cast(mapping["netflix_search"]) return # Stop here for better UX, since areena stuff has some delay with URL fetching cast.media_controller.stop() if "areena_series" in mapping: if mapping["series_type"] == "latest": cast.play_media( areena.get_series_url_latest(mapping["areena_series"]), "video/mp4") elif mapping["series_type"] == "random": cast.play_media( areena.get_series_url_random(mapping["areena_series"]), "video/mp4") elif "areena_program" in mapping: cast.play_media(areena.get_program_url(mapping["areena_program"]), "video/mp4")
def __init__(self): self.available_devices = None self.chosen_device = None self.cast = None self.cast_media = None self.video = None self.youtube_controler = YouTubeController() self.ydl_opts = { 'noplaylist': True, 'playlistend': 1 }
def cc_play_youtube(cast): # video_id is the last part of the url https://youtube.com/watch?v=video_id YT_VIDEOS = [ 'Wuo04iM3lbk' # tounge remix ] yt = YouTubeController() cast.register_handler(yt) video_id = random.choice(YT_VIDEOS) yt.play_video(video_id) logging.info("Casted video " + video_id + " to youtube")
def onCommand(self, Unit, Command, Level, Hue): #get first number of the Unit if len(str(Unit)) == 1: ChromecastId = 0 else: ChromecastId = int(str(Unit)[-2]) #Find the corresponding chromecast Chromecast = next( Chromecast for Chromecast in self.ConnectedChromecasts if self.ConnectedChromecasts[Chromecast][0] == ChromecastId) if self.ConnectedChromecasts[Chromecast][3] != "CONNECTED": Domoticz.Error( "Chromecast '" + Chromecast + "' is not connected, so I cannot issue a command to it. Reconnect '" + Chromecast + "' and try again.") self.ConnectedChromecasts[Chromecast][1].disconnect() else: try: cc = self.ConnectedChromecasts[Chromecast][1] if cc != "" and cc.status != None: if Unit % 10 == 1: if Level == 10: Domoticz.Log("Start playing on chromecast") cc.media_controller.play() elif Level == 20: Domoticz.Log("Pausing chromecast") cc.media_controller.pause() elif Level == 30: Domoticz.Log("Killing " + cc.app_display_name) cc.quit_app() else: Domoticz.Log("Level is " + Level + " What should I do with it?") elif Unit % 10 == 2: vl = float(Level) / 100 cc.set_volume(vl) elif Unit % 10 == 4: if Level == 30: Domoticz.Log("Starting Youtube on chromecast") yt = YouTubeController() cc.register_handler(yt) elif (cc.status == None): Domoticz.Status("Cannot issue a command to '" + Chromecast + "' when no app is connected.") else: Domoticz.Error( "Cannot issue the command as the Chromecast '" + Chromecast + "' is not connected.") except Exception as e: senderror(e)
def __init__(self, args): baseRFIDServer.__init__(self, args) self.name = 'Chromecast' chromecasts = pychromecast.get_chromecasts() self.chromecasts = [cc.device.friendly_name for cc in chromecasts] print 'found %s chromecast' % len(self.chromecasts) self.selected_chromecast = next( cc for cc in chromecasts if cc.device.friendly_name == self.chromecasts[0]) print "selected %s" % self.selected_chromecast.device.friendly_name self.selected_chromecast.wait() self.mc = self.selected_chromecast.media_controller self.youtube = YouTubeController() self.selected_chromecast.register_handler(self.youtube)
def play_youtube_video(video_id): log.info(f"casting {video_id} to {FRIENDLY_NAME}") # connect to device chromecasts, browser = pychromecast.get_listed_chromecasts(friendly_names=[FRIENDLY_NAME]) cast = chromecasts[0] cast.wait() # play youtube video yt = YouTubeController() cast.register_handler(yt) yt.play_video(video_id) # Shut down discovery pychromecast.discovery.stop_discovery(browser)
def RestartYoutube(q, uri, videoid, seektime): ip = uri.split(":")[0] port = int(uri.split(":")[1]) cc = pychromecast.Chromecast(ip, port) mc = cc.media_controller cc.wait() yt = YouTubeController() cc.register_handler(yt) yt.play_video(videoid) mc.block_until_active() while mc.status.player_state != 'PLAYING': time.sleep(0.1) mc.seek(seektime) time.sleep(2) cc.disconnect() q.put("Done")
def castYoutube(cast_name, video_id): print('Casting http://youtube.com/watch?v=' + video_id + ' to ' + cast_name) chromecasts = pychromecast.get_listed_chromecasts( friendly_names=[cast_name]) if not chromecasts: print('No chromecast with name "{}" discovered'.format(cast_name)) sys.exit(1) cast = chromecasts[0] # Start socket client's worker thread and wait for initial status update cast.wait() yt = YouTubeController() cast.register_handler(yt) yt.play_video(video_id) return True
def chromecast_fire(): ''' Attempts to connect to chromecast and play/cast the fireplace video. If it cannot find the provided CAST_NAME, False is returned, prompting the program to open it in the browser. If successfull, returns True ''' ccast, browser = pyccast.get_listed_chromecasts([CAST_NAME]) if not ccast: print('Chromecast "{}" not discovered'.format(CAST_NAME)) return False else: cast = ccast[0] cast.wait() yt = YouTubeController() cast.register_handler(yt) yt.play_video(FIRE_VIDEO_ID) pyccast.discovery.stop_discovery(browser) return True
def _setup_controllers(self): self.ctls = Controllers( YouTubeController(), DashCastController(), PlexController(), SuplaController(), # BbcIplayerController(), # BbcSoundsController(), # BubbleUPNPController(), # YleAreenaController(), # PlexApiController(), # HomeAssistantController(), ) for ctl in self.ctls: if ctl: self._register(ctl)
def cast(postDict, cast): i = 1 chromecasts = pychromecast.get_chromecasts() cast = next(cc for cc in chromecasts if cc.device.friendly_name == cast) cast.wait() yt = YouTubeController() for value in postDict['url']: cast.register_handler(yt) video = get_ID(postDict['url'][i]) if not (yt._screen_id and yt._session): yt.play_video(video) print('Casting: ' + postDict['title'][i]) else: yt.add_to_queue(video) print('Queueing: ' + postDict['title'][i]) i += 1 time.sleep(5)
def RestartYoutube(q,uri,videoid,seektime = None): try: ip=uri.split(":")[0] port=int(uri.split(":")[1]) cc = pychromecast.Chromecast(ip,port) Mc=cc.media_controller cc.wait() yt = YouTubeController() cc.register_handler(yt) yt.play_video(videoid) Mc.block_until_active() while Mc.status.player_state != 'PLAYING': time.sleep(0.1) Mc.seek(seektime) time.sleep(2) cc.disconnect() q.put("Done") except Exception as e: q.put('Error on line {}'.format(sys.exc_info()[-1].tb_lineno)+" Error is: " +str(e))
def chromecast_control(command, info): if command == "movie": requests.post("http://" + flextv_server_ip + "/FlexTV/api.php?say&web=true&command=play" + command + "&apiToken=" + flextv_api_token) if command == "youtube": video_id = info chromecasts = pychromecast.get_chromecasts() cast = next(cc for cc in chromecasts if cc.device.friendly_name == cast_name) cast.wait() yt = YouTubeController() cast.register_handler(yt) yt.play_video(video_id) if command == "command": chromecasts = pychromecast.get_chromecasts() cast = next(cc for cc in chromecasts if cc.device.friendly_name == cast_name) cast.wait() print('Connected to ' + cast_name) mc = cast.media_controller if info == 'pause': print("pausing") mc.block_until_active() mc.pause() if info == 'play': print("playing") mc.block_until_active() mc.play() if info == 'stop': print("stopping") mc.block_until_active() mc.stop() if info == 'skip': print("skipping") mc.block_until_active() mc.skip() if info == 'rewind': print("rewinding") mc.block_until_active() mc.rewind()
def castVideo(): # Change to the name of your Chromecast CAST_NAME = "Family Room TV" # Change to the video id of the YouTube video # video id is the last part of the url http://youtube.com/watch?v=video_id VIDEO_ID = "B3aMD0VgPWc" #https://www.youtube.com/watch?v=B3aMD0VgPWc #https://www.youtube.com/watch?v=lLWEXRAnQd0 chromecasts = pychromecast.get_chromecasts() cast = next(cc for cc in chromecasts if cc.device.friendly_name == CAST_NAME) cast.wait() yt = YouTubeController() cast.register_handler(yt) yt.play_video(VIDEO_ID) #castVideo()
def play_youtube(cast, video_id): # Change to the video id of the YouTube video # video id is the last part of the url http://youtube.com/watch?v=video_id cast_ip = None with open('cast.txt', 'r+') as f: print("This is the file pointer", f) if len(f.read(1)) == 0: cast = discover_casts(cast) else: f.seek(0) cast_ip = [line for line in f][0] cast = get_cast(cast_ip, cast) if (cast.host != cast_ip): f.write(cast.host) cast.wait() yt = YouTubeController() cast.register_handler(yt) yt.play_video(video_id)
def Media_Stop(): falcon_logger.info("Parando Cast") chromecasts, browser = pychromecast.get_listed_chromecasts(friendly_names=[config.CHROMECAST.NAME]) if not chromecasts: msg="No encuentro el chromecast con nombre %s" % config.CHROMECAST.NAME falcon_logger.info(msg) return 9,msg cast = chromecasts[0] cast.wait() mc = cast.media_controller falcon_logger.info("Arrancando Stadnby") yt = YouTubeController() cast.register_handler(yt) retry=6 while (retry): yt.play_video("9m6bfFWPIVE") if (mc.status.player_is_playing): break falcon_logger.info("No arranca, espero") time.sleep(2) retry-=1
def run(self): if not self.args["rhost"] and not self.args["name"]: print_info( "Show options, it's necessary to configure onename or rhost") return if str(self.args["timeout"]) == "None": self.args["timeout"] = 6 try: chromecasts = pychromecast.get_chromecasts( timeout=self.args["timeout"]) cast = next(cc for cc in chromecasts if (cc.device.friendly_name == self.args["name"] or cc.host == self.args["rhost"])) cast.wait() print_info("Device found, sending video") except: print_error("Device no found") return yt = YouTubeController() cast.register_handler(yt) yt.play_video(self.args["video"]) print_ok("Done!")