Форум сайта python.su
import urllib import hashlib import sys import os import http.cookiejar as cookielib import re ,base64, requests,json class FoobarDB(object): location = '' pwd = '***********' username = '*********' session = '' qual_v = '3' json_base = '' def __init__(self , location): self.location = location try: self.f = open(location,'r') except: self.f = open(location,'w') self.f.close() [b]def set_db(self,key,value):[/b] with open(self.location,'r') as self.file: self.data = self.file.read() self.file.close() if (self.data != ''): self.jsonData = json.loads(self.data) self.jsonData.update({key:value}) self.jsonData = json.dumps(self.jsonData) else: self.jsonData = {key:value} self.jsonData = json.dumps(self.jsonData) self.__burn__db(self.jsonData) def __burn__db(self,data): with open(self.location,'w') as self.file: result = self.file.write(data) print (result) self.file.flush() def getSetting(self,param): qual_v = self.qual_v pwd = self.pwd username = self.username session = self.session if (param == 'pwd'): return pwd if (param == 'username'): return username if (param == 'session'): return session if (param == 'qual_v'): return qual_v def setSetting(self,param,value): pwd = self.pwd username = self.username session = self.session if (param == 'pwd'): pwd = value if (param == 'username'): username = value if (param == 'session'): session = value def GET(self,url, mCmd, mParams): url="https://api.megogo.net/v1/"+url remc=mCmd remp=mParams session=self.getSetting('session') if mParams==[]: mParams={} req_p1 = [] req_p2 = [] if mParams: if len(mParams): for mKey in mParams: req_p1.append('%s=%s' % (mKey, urllib.parse.quote_plus(str(mParams[mKey])))) req_p2.append('%s=%s' % (mKey, mParams[mKey])) req_params = '&'.join(req_p1) req_hash = ''.join(req_p2) res = ('%s%s'%(req_hash,'63ee38849d')).encode('utf-8') m = hashlib.md5() m.update(res) target =( '%s/%s?%s&sign=%s' % (url, mCmd, req_params, '%s%s' % (m.hexdigest(), '_kodi_j1')))#.replace('//','/') print (target) try: cookie = json.loads(base64.b64decode(get_db("login"))) except: cookie=None if cookie=={}: cookie=None try:http=get_db(target) except: http="" #print "saved cook as %s"%cookie cookies = None if len(http)<6: try: print (requests.get(target, cookies = cookie, headers = {'User-Agent':'UA'})) request = requests.get(target, cookies = cookie, headers = {'User-Agent':'UA'}) http = request.text cookies = requests.utils.dict_from_cookiejar(request.cookies) print (cookies) http=http.encode('utf-8') [b]self.set_db('target',http)[/b] if not cookie and cookies: [b] self.set_db("login",base64.b64encode(str(cookies).replace("'", '"')))[/b] except: print ("Error GET") cookies = None return None def login(self): data = self.GET('auth', 'login', {'login': self.getSetting('username'), 'password': self.getSetting('pwd'), 'remember':"1"}) if data: if data['result'] == 'ok': #print data['data']['tokens']['remember_me_token'] #fav= data['user']['favorites'] #session = data['session'] session=data['data']['tokens']['remember_me_token'] self.setSetting('session',session) else: self.setSetting('session','') def tvshow(self): print ("TV") http=GET('','tv',{'limit':'100'}) ids=[] if http: for pak in http['data']['packages']: print (pak['title']) for ch in pak['channels']: print (ch) if ch['is_available']==True and ch['id'] not in ids: ids.append(ch['id']) urip = {'func':'play', 'video_id': ch['id']} uri = '%s?%s' % (sys.argv[0], urllib.parse.urlencode(urip)) print ('Ссылка: ' + str(uri)) # i.setInfo(type = 'Video', infoLabels = {'title':ch['title']}) # i.setProperty('IsPlayable', 'true') # xbmcplugin.addDirectoryItem(hos, uri, i, False) print ("%s:%s"%(ch['title'].encode('utf-8'),ch['is_available'])) #xbmcplugin.endOfDirectory(hos) def play(self,params): print (params) qu = self.getSetting('qual_v') bitrate=['240','320','360','480','576','720','1080'] #if (qu>0): params['bitrate']=bitrate[int(qu)-1] data = GET('','stream', params) print (data) path = data['data']['src'] mydb = FoobarDB("mydb.db") #mydb.set_db('testoviy_key','testoviy_value') mydb.login() #play({'video_id': '3946161','bitrate':'240'})
Офлайн
enjoy44 М-м-м-да, и ктоже вас научил подавлять все ошибки? за такие конструкции
try: .... except : print ("Error GET")
TypeError: b'{"result":"error","message":"\xd0\x92\xd0\xb2\xd0\xb5\xd0\xb4\xd0\xb5\xd0\xbd\xd0\xbd\xd1\x8b\xd0\xb9 \xd0\xbb\xd0\xbe\xd0\xb3\xd0\xb8\xd0\xbd \xd0\xb8\xd0\xbb\xd0\xb8 \xd0\xbf\xd0\xb0\xd1\x80\xd0\xbe\xd0\xbb\xd1\x8c \xd0\xbd\xd0\xb5\xd0\xbf\xd1\x80\xd0\xb0\xd0\xb2\xd0\xb8\xd0\xbb\xd1\x8c\xd0\xbd\xd1\x8b\xd0\xb5","errors":{"login":"\xd0\x92\xd0\xb2\xd0\xb5\xd0\xb4\xd0\xb5\xd0\xbd\xd0\xbd\xd1\x8b\xd0\xb9 \xd0\xbb\xd0\xbe\xd0\xb3\xd0\xb8\xd0\xbd \xd0\xb8\xd0\xbb\xd0\xb8 \xd0\xbf\xd0\xb0\xd1\x80\xd0\xbe\xd0\xbb\xd1\x8c \xd0\xbd\xd0\xb5\xd0\xbf\xd1\x80\xd0\xb0\xd0\xb2\xd0\xb8\xd0\xbb\xd1\x8c\xd0\xbd\xd1\x8b\xd0\xb5"}}' is not JSON serializable
File "D:\PL\test\test004.py", line 30, in set_db self.jsonData = json.dumps(self.jsonData)
[code python][/code]
Отредактировано PEHDOM (Апрель 1, 2020 11:03:52)
Офлайн