def resolve_url(url, play=False): headers = { 'Accept': '*/*', 'Accept-Encoding': 'gzip,deflate', 'Connection': 'keep-alive', 'X-Requested-With': 'XMLHttpRequest' } result = requester.request(url, headers=urllib.urlencode(headers)) result = result.decode('iso-8859-1').encode('utf-8') name = requester.parseDOM(result, 'meta', ret='content', attrs={'property': 'og:title'})[0] fileid = requester.parseDOM(result, 'input', ret='value', attrs={'name': 'fileId'})[0] token = requester.parseDOM(result, 'input', ret='value', attrs={'name': '__RequestVerificationToken'})[0] formurl = CopiaPopURL + requester.parseDOM( result, 'form', ret='action', attrs={'class': 'download_form'})[0] headers = { 'Accept': '*/*', 'Accept-Encoding': 'gzip,deflate', 'Connection': 'keep-alive', 'X-Requested-With': 'XMLHttpRequest' } post = {'fileId': fileid, '__RequestVerificationToken': token} result = json.loads( requester.request(formurl, post=urllib.urlencode(post), headers=urllib.urlencode(headers))) if result['DownloadUrl'].startswith('http'): if play == True: play_url(result['DownloadUrl'], name, original_url=url, original_filename=name) else: return result['DownloadUrl']
def list_folders(url, query=None, result=None): try: list = [] items = [] headers = { 'Accept': '*/*', 'Accept-Encoding': 'gzip,deflate', 'Connection': 'keep-alive', 'X-Requested-With': 'XMLHttpRequest' } if result == None: result = requester.request(url, headers=urllib.urlencode(headers)) result = result.decode('iso-8859-1').encode('utf-8') result = requester.parseDOM( result, 'div', attrs={'class': 'collections_list responsive_width'})[0] items = requester.parseDOM(result, 'li') for indiv in items: if re.search('name', indiv): name = requester.replaceHTMLCodes( requester.parseDOM(indiv, 'a', attrs={'class': 'name'})[0].encode('utf-8')) length = re.compile('(\d+)').findall( requester.parseDOM(indiv, 'p', attrs={'class': 'info'})[0].encode('utf-8'))[0] pageurl = SiteURL + requester.parseDOM( indiv, 'a', attrs={'class': 'name'}, ret='href')[0] thumb = requester.parseDOM(indiv, 'img', ret='src')[0].replace( '/thumbnail', '') list.append({ 'type': 'folder', 'name': name, 'length': length, 'thumb': thumb, 'pageurl': pageurl }) list = sorted( list, key=lambda k: re.sub('(^the |^a )', '', k['name'].lower())) return list except: return []
def list_items(url, query=None, result=None, content_type=None): list = [] try: if result == None: headers = { 'Accept': '*/*', 'Accept-Encoding': 'gzip,deflate', 'Connection': 'keep-alive', 'X-Requested-With': 'XMLHttpRequest' } if query: post = { 'Mode': 'List', 'Type': content_type, 'Phrase': query, 'SizeFrom': '0', 'SizeTo': '0', 'Extension': '', 'ref': 'pager', 'pageNumber': '1' } result = requester.request(url, post=urllib.urlencode(post), headers=urllib.urlencode(headers)) else: result = requester.request(url, headers=urllib.urlencode(headers)) except: pass result = result.decode('iso-8859-1').encode('utf-8') items = requester.parseDOM(result, 'div', attrs={'class': 'list_row'}) try: thumb = requester.parseDOM(result, 'meta', ret='content', attrs={'property': 'og:image'})[0] except: thumb = None for indiv in items: name = requester.replaceHTMLCodes( requester.parseDOM( requester.parseDOM(indiv, 'div', attrs={'class': 'name'}), 'a')[0].encode('utf-8')) size = requester.parseDOM( requester.parseDOM(indiv, 'div', attrs={'class': 'size'}), 'p')[0].encode('utf-8') pageurl = CopiaPopURL + requester.parseDOM(requester.parseDOM( indiv, 'div', attrs={'class': 'name'}), 'a', ret='href')[0] temp = requester.parseDOM( requester.parseDOM(indiv, 'div', attrs={'class': 'date'})[0], 'div')[0] fileid = requester.parseDOM(temp, 'input', ret='value', attrs={'name': 'fileId'})[0] list.append({ 'type': 'content', 'name': name, 'size': size, 'fileid': fileid, 'thumb': thumb, 'pageurl': pageurl }) return list
def login(): import requests headers = { 'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8', 'Accept-Encoding': 'gzip, deflate, sdch', 'Accept-Language': 'pt-PT,pt;q=0.8,en-US;q=0.6,en;q=0.4', 'Cache-Control': 'no-cache', 'Connection': 'keep-alive', 'Pragma': 'no-cache', 'Upgrade-Insecure-Requests': '1', 'User-Agent': user_agent } cookie = requester.request(SiteURL, headers=urllib.urlencode(headers), output='cookie') timestamp = str(int(time.time())) + str(randint(0, 9)) + str(randint( 0, 9)) + str(randint(0, 9)) url = SiteURL + '/action/Account/Login?returnUrl=%2F&TimeStamp=' + timestamp headers = { 'Cookie': cookie, 'Connection': 'keep-alive', 'Pragma': 'no-cache', 'Cache-Control': 'no-cache', 'Accept': '*/*', 'X-Requested-With': 'XMLHttpRequest', 'User-Agent': user_agent, 'Referer': SiteURL, 'Accept-Encoding': 'gzip, deflate, sdch', 'Accept-Language': 'pt-PT,pt;q=0.8,en-US;q=0.6,en;q=0.4' } result = requester.request(url, headers=headers) resdec = result.decode('ascii', 'ignore') headers = { 'Cookie': cookie, 'Accept': '*/*', 'Accept-Encoding': 'gzip, deflate', 'Accept-Language': 'pt-PT,pt;q=0.8,en-US;q=0.6,en;q=0.4', 'Cache-Control': 'no-cache', 'Connection': 'keep-alive', 'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8', 'Origin': SiteURL, 'Pragma': 'no-cache', 'Referer': SiteURL, 'User-Agent': user_agent, 'X-Requested-With': 'XMLHttpRequest' } newJSON = json.loads(resdec)['Content'] token = requester.parseDOM(newJSON, 'input', ret='value', attrs={'name': '__RequestVerificationToken'})[0] if setting('copiapop-enable') == 'true': post = { 'UserName': setting('copiapop-username'), 'Password': setting('copiapop-password'), '__RequestVerificationToken': token } if setting('diskokosmiko-enable') == 'true': post = { 'UserName': setting('diskokosmiko-username'), 'Password': setting('diskokosmiko-password'), '__RequestVerificationToken': token } if setting('kumpulbagi-enable') == 'true': post = { 'UserName': setting('kumpulbagi-username'), 'Password': setting('kumpulbagi-password'), '__RequestVerificationToken': token } formurl = SiteURL + '/action/Account/Login?returnUrl=%2F' raw = requests.post(formurl, data=post, headers=headers) success = raw.json()['Type'] if success == 'Redirect': setSetting('request_cookie', raw.headers['Set-Cookie'].split(';')[0]) else: dialog.ok( 'CopiaDB', 'Verifique se os dados de conta introduzidos estão correctos.') execute('Addon.OpenSettings(%s)' % (addon_id)) sys.exit(0)