class myChromeCast: #Leapcast? def __init__(self): self.ChromeCastName = "FILL" self.cast = pychromecast.get_chromecast(friendly_name=self.ChromeCastName) self.mc = self.cast.media_controller def playVideo(self, youtubeLink): self.quitApp() self.yt = YouTubeController() self.cast.register_handler(self.yt) self.yt.play_video(youtubeLink) def play(self): self.mc.play() def pause(self): self.mc.pause() def quitApp(self): self.cast.quit_app()
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 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 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 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 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)
class YoutubeCastController(CastController, MediaControllerMixin, PlaybackBaseMixin): def __init__(self, cast, app, prep=None): self._controller = YouTubeController() super(YoutubeCastController, self).__init__(cast, app, prep=prep) self.info_type = "id" self.save_capability = "partial" self.playlist_capability = "complete" def play_media_id(self, video_id): self._controller.play_video(video_id) def play_playlist(self, playlist_id, video_id): self.clear() self._controller.play_video(video_id, playlist_id) def add(self, video_id): # You can't add videos to the queue while the app is buffering. self.wait_for(["BUFFERING"], invert=True) self._controller.add_to_queue(video_id) def add_next(self, video_id): self.wait_for(["BUFFERING"], invert=True) self._controller.play_next(video_id) def remove(self, video_id): self.wait_for(["BUFFERING"], invert=True) self._controller.remove_video(video_id) def clear(self): self._controller.clear_playlist() def restore(self, data): self.play_media_id(data["content_id"]) self.wait_for(["PLAYING"]) self.seek(data["current_time"])
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 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")
class YouTubeHandler: def __init__(self): self.controller = YouTubeController() def playYoutubeVideo(self, youtubeId): self.controller.play_video(youtubeId) def turnOff(self): self.controller.tear_down() def playNextVideo(self, youtubeId): self.controller.play_next(youtubeId)
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 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")
class ChromeCast: # Initializer / Instance Attributes 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 play(self, videoId): self.yt.start_session_if_none() self.yt.play_video(videoId)
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 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 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 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 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 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!")
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
""" Example on how to use the YouTube Controller """ import pychromecast from pychromecast.controllers.youtube import YouTubeController # Change to the name of your Chromecast CAST_NAME = "Living 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 = "" 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)
VIDEO_ID = "dQw4w9WgXcQ" parser = argparse.ArgumentParser( description="Example on how to use the Youtube Controller." ) parser.add_argument("--show-debug", help="Enable debug log", action="store_true") parser.add_argument( "--cast", help='Name of cast device (default: "%(default)s")', default=CAST_NAME ) parser.add_argument( "--videoid", help='Youtube video ID (default: "%(default)s")', default=VIDEO_ID ) args = parser.parse_args() if args.show_debug: logging.basicConfig(level=logging.DEBUG) chromecasts = pychromecast.get_listed_chromecasts(friendly_names=[args.cast]) 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() yt = YouTubeController() cast.register_handler(yt) yt.play_video(VIDEO_ID)
def cast_media(cast, url): yt = YouTubeController() cast.register_handler(yt) yt.play_video(url)
#!/usr/bin/python3 import config import time import pychromecast from pychromecast.controllers.youtube import YouTubeController import click previous_key = '' while True: chromecasts = pychromecast.get_chromecasts() cast = next(cc for cc in chromecasts if cc.device.friendly_name == config.chromecast_name) cast.wait() yt = YouTubeController() cast.register_handler(yt) print('Ready') key = click.getchar().lower() if key in config.videos and previous_key != key: previous_key = key video_id = config.videos[key] print("Starting " + video_id) yt.play_video(video_id) print("Playing " + video_id) time.sleep(1)
import time import pychromecast print( "\r\nGetting Devices" ) devices = pychromecast.get_chromecasts_as_dict().keys() print( devices ) selectedDevice = list(devices)[0] selectedDevice = "Nate PC Right" print( "\r\nUsing Device: "+selectedDevice ) #exit() cast = pychromecast.get_chromecast(friendly_name=selectedDevice) print(cast.device) print(cast.status) mc = cast.media_controller print(mc.status) mc.stop() time.sleep(5) mc.pause() time.sleep(5) mc.play() from pychromecast.controllers.youtube import YouTubeController yt = YouTubeController() cast.register_handler(yt) #yt.play_video("Xw8XCxWWTDg") #yt.play_video("Nr_5Y6JKPc0") #yt.play_video("YiUdrIsqmyQ") yt.play_video("O5RdMvgk8b0")