浏览代码

merge fix

Phil 3 年之前
父节点
当前提交
5cdbc6d7e6
共有 4 个文件被更改,包括 85 次插入9 次删除
  1. 6 2
      auth.py
  2. 24 7
      main.py
  3. 6 0
      settings.cfg
  4. 49 0
      util/chromecast.py

+ 6 - 2
auth.py

@@ -16,10 +16,14 @@ def checkLogin():
     dump.close
     dump.close
 
 
 
 
-def login(user,passw):
+def login(user,passw,config):
     sess = requests.Session()
     sess = requests.Session()
     #obtain token
     #obtain token
+<<<<<<< HEAD
     response = requests.get('https://proxer.me/')
     response = requests.get('https://proxer.me/')
+=======
+    response = requests.get(config['urls']['base_url'])
+>>>>>>> b6b84fdc3318b4f7255a1d972fff99fbf9a7c180
     data = response.content
     data = response.content
     tparse = tokenParser()
     tparse = tokenParser()
     tparse.feed(str(data))
     tparse.feed(str(data))
@@ -28,7 +32,7 @@ def login(user,passw):
     cookies = response.cookies
     cookies = response.cookies
 
 
     #make auth
     #make auth
-    response = sess.post('https://proxer.me/login?' + token + '=1',
+    response = sess.post(config['urls']['base_url']+'/login?' + token + '=1',
         data={'username':user,'password':passw,'remember':'1','submit':'login'},
         data={'username':user,'password':passw,'remember':'1','submit':'login'},
         cookies=cookies)
         cookies=cookies)
     cookies = response.cookies
     cookies = response.cookies

+ 24 - 7
main.py

@@ -11,6 +11,10 @@ from parsers.episode import episodeParser
 from parsers.lesezeichen import lesezeichenParser
 from parsers.lesezeichen import lesezeichenParser
 from parsers.chapter import chapterParser
 from parsers.chapter import chapterParser
 from parsers.player import playerParser
 from parsers.player import playerParser
+from util.chromecast import ccast
+
+
+baseurl = ''
 
 
 if os.path.isfile('cookies'):
 if os.path.isfile('cookies'):
     f = open('cookies','rb') 
     f = open('cookies','rb') 
@@ -45,7 +49,7 @@ def main():
         if uin == '1':
         if uin == '1':
             user = input('username: ')
             user = input('username: ')
             pw = getpass('password:' )
             pw = getpass('password:' )
-            sess = auth.login(user,pw)
+            sess = auth.login(user,pw,config)
             print(str(auth.token))
             print(str(auth.token))
             f = open(config['paths']['cookie_jar'],'wb')
             f = open(config['paths']['cookie_jar'],'wb')
             pickle.dump(sess.cookies,f)
             pickle.dump(sess.cookies,f)
@@ -63,7 +67,7 @@ def main():
             exit()
             exit()
 
 
 def chapter(sess,ep):
 def chapter(sess,ep):
-    url = 'https://proxer.me' + ep['link'].replace('chapter','read').replace('#top','')+'/1'
+    url = baseurl + ep['link'].replace('chapter','read').replace('#top','')+'/1'
     response = sess.get(url)
     response = sess.get(url)
     content = response.content
     content = response.content
     chapPars = chapterParser()
     chapPars = chapterParser()
@@ -95,12 +99,12 @@ def chapter(sess,ep):
                 count +=1
                 count +=1
 
 
         if uin == '2':
         if uin == '2':
-            url = 'https://proxer.me' + ep['link'].replace('#top','?format=json&type=reminder&'+ chapPars.token +'=1&title=reminder_next')
+            url = baseurl + ep['link'].replace('#top','?format=json&type=reminder&'+ chapPars.token +'=1&title=reminder_next')
             response = sess.post(url,data = {"check":1})
             response = sess.post(url,data = {"check":1})
             print(str(response.content))
             print(str(response.content))
 
 
         if uin == '5':
         if uin == '5':
-            url = 'https://proxer.me' + ep['link'].replace('#top','?format=json&type=reminder&'+ chapPars.token +'=1&title=reminder_this')
+            url = baseurl + ep['link'].replace('#top','?format=json&type=reminder&'+ chapPars.token +'=1&title=reminder_this')
             response = sess.post(url,data = {"check":1})
             response = sess.post(url,data = {"check":1})
             print(str(response.content))
             print(str(response.content))
 
 
@@ -127,7 +131,7 @@ def chapter(sess,ep):
             break
             break
          
          
 def episode(sess,ep):
 def episode(sess,ep):
-    response = sess.get('https://proxer.me'+ep['link'])
+    response = sess.get(baseurl+ep['link'])
     content = response.content
     content = response.content
     epars = episodeParser()
     epars = episodeParser()
     epars.feed(str(content))
     epars.feed(str(content))
@@ -146,17 +150,18 @@ def episode(sess,ep):
         print('4 - go to next')
         print('4 - go to next')
         print('5 - go to previous')
         print('5 - go to previous')
         print('6 - Details')
         print('6 - Details')
+        print('7 - Play on Chromecast')
         print('99 - Exit')
         print('99 - Exit')
         path = 'anime/'+ep['name']+'/'
         path = 'anime/'+ep['name']+'/'
         if not os.path.exists(path):
         if not os.path.exists(path):
             os.makedirs(path)
             os.makedirs(path)
         uin = input('$>: ')
         uin = input('$>: ')
         if uin == '1':
         if uin == '1':
-            call(["vlc", link])
+            call(["vlc",'-f', link])
         if uin == '2':
         if uin == '2':
             call(['curl',link,'-o',path+ep['num']+'.mp4'])
             call(['curl',link,'-o',path+ep['num']+'.mp4'])
         if uin == '3':
         if uin == '3':
-            url = 'https://proxer.me' + ep['link'].replace('#top','?format=json&type=reminder&'+ epars.token +'=1&title=reminder_next')
+            url = baseurl + ep['link'].replace('#top','?format=json&type=reminder&'+ epars.token +'=1&title=reminder_next')
             response = sess.post(url,data = {"check":1})
             response = sess.post(url,data = {"check":1})
             print(str(response.content))
             print(str(response.content))
 
 
@@ -168,6 +173,15 @@ def episode(sess,ep):
             prev['num'] = str(int(prev['num'])+1)
             prev['num'] = str(int(prev['num'])+1)
             episode(sess,prev)
             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':
         if uin == '99':
             break
             break
 
 
@@ -228,8 +242,11 @@ def LesezeichenSingle(sess,mode):
 
 
 def ReadConfig():
 def ReadConfig():
     global config 
     global config 
+    global baseurl
     config = configparser.ConfigParser()
     config = configparser.ConfigParser()
     config.read_file(open('settings.cfg'))
     config.read_file(open('settings.cfg'))
+    baseurl = config['urls']['base_url']
+
     
     
 def ListLocal():
 def ListLocal():
     anime = []
     anime = []

+ 6 - 0
settings.cfg

@@ -3,3 +3,9 @@ base_url:https://proxer.me
 anime_path:./anime
 anime_path:./anime
 manga_path:./manga
 manga_path:./manga
 cookie_jar:./cookies
 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)
+