Exemplo n.º 1
0
    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
Exemplo n.º 2
0
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
Exemplo n.º 3
0
 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)
Exemplo n.º 4
0
 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)
Exemplo n.º 5
0
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")
Exemplo n.º 6
0
    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()
Exemplo n.º 7
0
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))
Exemplo n.º 8
0
 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)
Exemplo n.º 9
0
 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)
Exemplo n.º 11
0
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
Exemplo n.º 12
0
 def playVideo(self, youtubeLink):
     
     self.quitApp()
     
     self.yt = YouTubeController()
     
     self.cast.register_handler(self.yt)
 
     self.yt.play_video(youtubeLink)
Exemplo n.º 13
0
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)
Exemplo n.º 14
0
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")
Exemplo n.º 15
0
 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
     }
Exemplo n.º 16
0
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")
Exemplo n.º 17
0
    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)
Exemplo n.º 18
0
 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)
Exemplo n.º 19
0
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)
Exemplo n.º 20
0
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
Exemplo n.º 22
0
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
Exemplo n.º 23
0
    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)
Exemplo n.º 24
0
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)
Exemplo n.º 25
0
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))
Exemplo n.º 26
0
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()
Exemplo n.º 27
0
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()
Exemplo n.º 28
0
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)
Exemplo n.º 29
0
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
Exemplo n.º 30
0
    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!")