Răsfoiți Sursa

added basic chromcast support

Phil 4 ani în urmă
părinte
comite
b6b84fdc33
3 a modificat fișierele cu 64 adăugiri și 1 ștergeri
  1. 12 1
      main.py
  2. 3 0
      settings.cfg
  3. 49 0
      util/chromecast.py

+ 12 - 1
main.py

@@ -11,6 +11,7 @@ from parsers.episode import episodeParser
 from parsers.lesezeichen import lesezeichenParser
 from parsers.chapter import chapterParser
 from parsers.player import playerParser
+from util.chromecast import ccast
 
 
 baseurl = ''
@@ -147,13 +148,14 @@ def episode(sess,ep):
         print('4 - go to next')
         print('5 - go to previous')
         print('6 - Details')
+        print('7 - Play on Chromecast')
         print('99 - Exit')
         path = 'anime/'+ep['name']+'/'
         if not os.path.exists(path):
             os.makedirs(path)
         uin = input('$>: ')
         if uin == '1':
-            call(["vlc", link])
+            call(["vlc",'-f', link])
         if uin == '2':
             call(['curl',link,'-o',path+ep['num']+'.mp4'])
         if uin == '3':
@@ -169,6 +171,15 @@ def episode(sess,ep):
             prev['num'] = str(int(prev['num'])+1)
             episode(sess,prev)
 
+        if uin == '7':
+            #TODO improve discovery and multiple favorites
+
+            cast = ccast(config['devices']['chromecast'])
+
+            if len(cast.getCasts()) <= 0:
+                print('no chromecast found')
+            cast.play(link,cast.getCasts()[0])
+
         if uin == '99':
             break
 

+ 3 - 0
settings.cfg

@@ -5,3 +5,6 @@ cookie_jar:./cookies
 
 [urls]
 base_url:https://proxer.net
+
+[devices]
+chromecast:WirelessMagic

+ 49 - 0
util/chromecast.py

@@ -0,0 +1,49 @@
+import pychromecast
+import time
+
+class ccast:
+
+
+    def __init__(self,name):
+        if type(name) == 'list':
+            if len(name) <= 0:               
+                self.chromecasts, slef.browser = pychromecast.get_chromecasts()
+            else:
+                self.chromecasts, self.browser = pychromecast.get_listed_chromecasts(friendly_names=name)
+        else:
+            if len(name) >= 0:
+                self.chromecasts, self.browser = pychromecast.get_chromecasts()
+            else:
+                lst = []
+                lst.append(name)
+                self.chromecasts, self.browser = pychromecast.get_listed_chromecasts(friendly_names=lst)
+
+    def getCasts(self):
+        return self.chromecasts
+
+    def play(self,uri,cast):
+        #check if mdeium finished ?
+        cast.wait()
+        print('ready to cast')
+        cast.media_controller.play_media(uri, "video/mp4")
+
+
+        player_state = None
+        t = 30
+        has_played = False
+        while True:
+            if player_state != cast.media_controller.status.player_state:
+                player_state = cast.media_controller.status.player_state
+                print("Player state:", player_state)
+                if player_state == "PLAYING":
+                    has_played = True
+                    if cast.socket_client.is_connected and has_played and player_state != "PLAYING":
+                        has_played = False
+                        cast.media_controller.play_media(uri, "video/mp4")
+
+                        time.sleep(0.1)
+                        t = t - 0.1
+
+        # Shut down discovery
+        pychromecast.discovery.stop_discovery(browser)
+