Exemplo n.º 1
0
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()
Exemplo n.º 2
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.º 3
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.º 4
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.º 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 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.º 8
0
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"])
Exemplo n.º 9
0
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"])
Exemplo n.º 10
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.º 11
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.º 13
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.º 14
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.º 15
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.º 16
0
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)
Exemplo n.º 17
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.º 18
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.º 19
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")
Exemplo n.º 20
0
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)
Exemplo n.º 21
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
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.º 23
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.º 24
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.º 25
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.º 26
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.º 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 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!")
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
"""
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)
Exemplo n.º 32
0
def cast_media(cast, url):
    yt = YouTubeController()
    cast.register_handler(yt)
    yt.play_video(url)
Exemplo n.º 33
0
#!/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)
Exemplo n.º 34
0
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")