def fshare_download(url, username, password): payload = '{"app_key":"L2S7R6ZMagggC5wWkQhX2+aDi467PPuftWUMRFSn","user_email":"'+username+'","password":"******"}' headers = {'cache-control': "no-cache"} f = 'U2FsdGVkX1+DNcAz9bYFd5cYzmMSxkO6cjEESsnvnFDRwI/cJ7q9e3PMqRvzhaQG/3AKt6uXJwS1dzBpPGlotw' response = urlfetch.post(vmf.gibberishAES(f, 'Faidemteiv'), data=payload, headers=headers) if '405' in response.body: alert('Không đăng nhập được. Kiểm tra lại username và mật khẩu.\nUser: [COLOR yellow]' + username+'[/COLOR]\nPassword: [COLOR yellow]'+password+'[/COLOR]','Fshare thông báo') sys.exit jStr = json.loads(response.body) code = jStr['code'] msg = jStr['msg'] token = jStr['token'] session_id = jStr['session_id'] t = check_user(session_id) t = str(t) if code == 200: notify ('Đăng nhập thành công') notify ('Tài khoản là: [COLOR red]'+t+'[/COLOR]') f = 'U2FsdGVkX1/vJ77W7WEfjOu+hZeMdqup95C+GE85n+a+y7jPpVuWQ/84LkPrQvpvA0xuchHX/FwK++XMK+EnVg' data = '{"token" : "%s", "url" : "%s", "password" : "%s"}' header = {'Cookie' : 'session_id=' + session_id} data = data % (token, url, password1) t = urlfetch.post(vmf.gibberishAES(f, 'Faidemteiv'), headers=header, data=data) jStr = json.loads(t.body) video_url = jStr['location'] if not video_url: notify('Link hỏng') return video_url
def get_servertv24(url): user = ADDON.getSetting('sctv_user') password = ADDON.getSetting('sctv_pass') channelid = re.search(re.compile(r"\/(\d+)\/"), url).group(1) response = urlfetch.get(url) if not response: notify('Kiểm tra nguồn phát tại [COLOR red]tv24h.vn[/COLOR] và báo cho người phát triển.') return cookie=response.cookiestring; matches = re.search(r'\"channel_token\" value=\"(.+?)\"', response.body) channeltoken = matches.group(1) signin_url = 'http://tv24.vn/client/login/process' headers = {'Host': 'tv24.vn', 'Accept-Encoding': 'gzip, deflate, compress, identity, *', 'Accept': '*/*', 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64; rv:49.0) Gecko/20100101 Firefox/49.0', 'Cookie': cookie, 'Referer': 'http://web.tv24.vn/dang-nhap'} data = {'mobile': user, 'password': password} urlfetch.post(signin_url, headers=headers, data=data) data = {'channel_id': channelid, 'channel_token': channeltoken} response = urlfetch.post('http://tv24.vn/client/channel/link', headers=headers, data=data) if 'null' in response.body: if len(user) == 0 or len(password) == 0: sleep(1) alert(u'Bạn hãy đăng ký tài khoản trên web [COLOR red]http://tv24.vn[/COLOR] và nhập trong Setting của Addon VMF'.encode("utf-8")) else: notify('Link bị lỗi') else: json_data = json.loads(response.body) video_url = json_data['data']['PLAY_URL'] notify("Đang getlink") video_url = vmf.sctv(channeltoken, video_url) sleep(5) if len(video_url) == 0: alert(u'Lỗi không lấy được link. Xin vui lòng thử lại.'.encode("utf-8")) return (video_url)
def sendData(data): params = {"access_token": pyfbook.pyfbook._access_token} headers = {"Content-Type": "application/json"} url = "https://graph.facebook.com/v2.6/me/messages" urlfetch.post(url=url, headers=headers, data=json.dumps(data), params=params)
def make_post(url,headers=hd,data='',resp='o'): try: if data:response=post(url=url,headers=headers,data=data,timeout=10) else:response=post(url=url,headers=headers,timeout=10) if resp=='b':response=response.body elif resp=='j':response=response.json except: mess(u'Post link error: %s!'%s2u(url),'make_post');print 'Post link error: %s'%u2s(url) response={} if resp=='j' else '' return response
def get_htvplus(url): if len(USER_VIP_CODE) > 0: try: f='U2FsdGVkX1+RQXkDAFegicGii3RLBVGrsbMVRV+kHpUpTExURcDQLDLLDkxsGOTf' notify(u'VMF Getlink system'.encode("utf-8")) response = fetch_data(VIETMEDIA_HOST + vmf.gibberishAES(f, 'vmf')) json_data = json.loads(response.body) t =json_data['username'].decode("base64") headers = { 'User-Agent' : 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36', 'Referer' : url, 'Cookie' : t } response = urlfetch.get(url, headers=headers) regex = r"iosUrl = \"(.+?)\"" matches = re.search(regex, response.body) video_url = matches.group(1) get_url = 'http://hplus.com.vn/content/getlinkvideo/' headers = { 'User-Agent' : 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36', 'Referer' : url, 'Cookie' : t } data = {'url': video_url, 'type': '1', 'is_mobile': '0'} response = urlfetch.post(get_url, headers=headers, data=data) video_url = response.body.encode("utf-8") refer = "|User-Agent=Mozilla%2F5.0%20%28Windows%20NT%2010.0%3B%20Win64%3B%20x64%29%20AppleWebKit%2F537.36%20%28KHTML%2C%20like%20Gecko%29%20Chrome%2F58.0.3029.110%20Safari%2F537.36&Referer=http%3A%2F%2Fhplus.com.vn%2F" return (video_url + refer) except Exception as e: notify('Khong lay duoc link') pass else: headers = { 'User-Agent' : 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36', 'Referer' : url, 'Cookie' : t } response = urlfetch.get(url, headers=headers) t = response.cookiestring; regex = r"iosUrl = \"(.+?)\"" matches = re.search(regex, response.body) video_url = matches.group(1) get_url = 'http://hplus.com.vn/content/getlinkvideo/' headers = { 'User-Agent' : 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36', 'Referer' : url, 'Cookie' : t } data = {'url': video_url, 'type': '1', 'is_mobile': '0'} response = urlfetch.post(get_url, headers=headers, data=data) video_url = response.body.encode("utf-8") refer = "|User-Agent=Mozilla%2F5.0%20%28Windows%20NT%2010.0%3B%20Win64%3B%20x64%29%20AppleWebKit%2F537.36%20%28KHTML%2C%20like%20Gecko%29%20Chrome%2F58.0.3029.110%20Safari%2F537.36&Referer=http%3A%2F%2Fhplus.com.vn%2F" return (video_url + refer)
def test_file_upload(self): content = open(path('test.file'), 'rb').read() files = {} files['test.file1'] = (b'test.file1', b'test.file', content) #files[b'test.file2'] = (b'test.file2', b'', content) files['test.file3'] = (b'test.file3', b'wangxiaobo', content) files['test.file4'] = (b'test.file4', b'wangtwo', content) r = urlfetch.post( testlib.test_server_host, files = { 'test.file1' : open(path('test.file')), #'test.file2' : content, 'test.file3' : ('wangxiaobo', open(path('test.file'))), 'test.file4' : ('wangtwo', content) }, ) o = json.loads(r.text) self.assertEqual(r.status, 200) self.assertTrue(isinstance(r.json, dict)) self.assertTrue(isinstance(r.text, urlfetch.unicode)) self.assertEqual(o['method'], 'POST') self.assertEqual(sorted(o['files'].keys()), sorted(files.keys())) for i in files: self.assertEqual(o['files'][i][0].encode('utf-8'), files[i][0]) self.assertEqual(o['files'][i][1].encode('utf-8'), files[i][1]) self.assertEqual(o['files'][i][2].encode('utf-8'), md5sum(files[i][2]))
def shurl(url, timeout=3): from urlfetch import post try: response = post("http://shurl.im/", data={'url': url}, timeout=timeout) url = response.getheader('location', url) except: pass return url
def auth_test(token): json_post = {'token': token} headers = { 'User-Agent': f'karmabot/{karmabot.__version__}', 'Content-Type': 'application/json; charset=utf-8', 'Authorization': f"Bearer {token}" } if current_app.config.get('FAKE_SLACK'): current_app.logger.info(str(json_post)) return json.loads('''{ "ok": true, "url": "https://subarachnoid.slack.com/", "team": "Subarachnoid Workspace", "user": "******", "team_id": "T12345678", "user_id": "W12345678" }''') result = urlfetch.post(url="https://slack.com/api/auth.test", data=json.dumps(json_post), headers=headers) return json.loads(result.content)
def get_direct_im_channel(workspace, user_id): token = settings.get_bot_token(workspace) if not token: current_app.logger.warning( f"Requested token for workspace {workspace} but found none") return None json_post = {'user': user_id, 'return_im': True} headers = { 'User-Agent': f'karmabot/{karmabot.__version__}', 'Content-Type': 'application/json; charset=utf-8', 'Authorization': f"Bearer {token}" } if current_app.config.get('FAKE_SLACK'): return json.loads('''{ "ok": true, "channel": { "id": "D947RLWRX" } }''') result = urlfetch.post(url="https://slack.com/api/im.open", data=json.dumps(json_post), headers=headers) current_app.logger.debug(result.content) return json.loads(result.content)
def leave_channel(workspace, channel_id): if current_app.config.get('FAKE_SLACK'): return json.loads('''{ "ok": true }''') token = settings.get_bot_token(workspace) if not token: current_app.logger.warning( f"Requested token for workspace {workspace} but found none") return None myself = auth_test(token) user_id = myself['user_id'] token = settings.get_access_token(workspace) if not token: current_app.logger.warning( f"Requested token for workspace {workspace} but found none") return None json_post = {'channel': channel_id, 'user': user_id} headers = { 'User-Agent': f'karmabot/{karmabot.__version__}', 'Content-Type': 'application/json; charset=utf-8', 'Authorization': f"Bearer {token}" } result = urlfetch.post(url="https://slack.com/api/channels.kick", data=json.dumps(json_post), headers=headers) current_app.logger.debug(result.content) return json.loads(result.content)
def user_group_members(workspace, user_group): token = settings.get_access_token(workspace) if not token: current_app.logger.warning( f"Requested token for workspace {workspace} but found none") return None headers = { 'User-Agent': f'karmabot/{karmabot.__version__}', 'Content-Type': 'application/json; charset=utf-8', 'Authorization': f"Bearer {token}" } if current_app.config.get('FAKE_SLACK'): return json.loads('''{ "ok": true, "users": [ "U060R4BJ4", "W123A4BC5" ] }''') result = urlfetch.post( url= f"https://slack.com/api/usergroups.users.list?usergroup={user_group}&include_disabled=false", # noqa 501 headers=headers) current_app.logger.debug(result.content) return json.loads(result.content)
def test_file_upload(self): content = open('test.file', 'rb').read() files = {} files['test.file1'] = (b'test.file1', b'test.file', content) #files[b'test.file2'] = (b'test.file2', b'', content) files['test.file3'] = (b'test.file3', b'wangxiaobo', content) files['test.file4'] = (b'test.file4', b'wangtwo', content) r = urlfetch.post( testlib.test_server_host, files = { 'test.file1' : open('test.file'), #'test.file2' : content, 'test.file3' : ('wangxiaobo', open('test.file')), 'test.file4' : ('wangtwo', content) }, ) o = json.loads(r.text) self.assertEqual(r.status, 200) self.assertEqual(o['method'], 'POST') self.assertEqual(sorted(o['files'].keys()), sorted(files.keys())) for i in files: for j in range(3): self.assertEqual(o['files'][i][j].encode('utf-8'), files[i][j])
def getAnime47(url): headers = { 'User_Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64; rv:50.0) Gecko/20100101 Firefox/50.0', 'Referer': 'http://anime47.com', 'Cookie' : 'location.href=1; path=/'} url_data = urlfetch.get(url, headers=headers) matches = re.search(r"var _\w+\W+(\[.+?\])", url_data.body) keys = matches.group(1) keys = keys.decode('string_escape') keys = json.loads(keys)[5].encode('utf-8') matches = re.search(r'link:\s\"(.*?)\"', url_data.body) google_link = matches.group(1) player_url = 'http://anime47.com/player/player.php' data = {'link': google_link} response = urlfetch.post(player_url, headers=headers, data=data) j = response.body.decode('base64') jsonStr = json.loads(j) s = jsonStr['s'] salt = s.decode("hex") ct = jsonStr['ct'] l = vmf.decode(ct, keys, salt) links = json.loads(l) matches = re.search(r"\"file\":\"(.*?)\"", links) if matches: links = matches.group(1) else: return 'thongbao2' return (links)
def pass_off(request_data): auth_code = request_data['auth_code'] firebase_refresh_token = None if 'firebase_refresh_token' in request_data: firebase_refresh_token = request_data['firebase_refresh_token'] response = post("https://accounts.spotify.com/api/token", headers={'content_type': 'application/x-www-form-urlencoded'}, data={'grant_type': 'authorization_code', 'code': auth_code, 'redirect_uri': __REDIRECT_URI, 'client_id': __CLIENT_ID, 'client_secret': __CLIENT_SECRET}) if response.status_code != 200: return HttpResponse(response.text, content_type='application/json', status=response.status_code) result = json.loads(response.text) sp = spotipy.Spotify(auth=result['access_token']) spotify_user_data = sp.current_user() # figure out what this gives email = spotify_user_data['email'] result['email'] = email user = updateUser(email, spotify_user_data, result, firebase_refresh_token ) result['user'] = user.to_dict() del result['refresh_token'] # remove it from the respone back to the server return HttpResponse(json.dumps(result), content_type='application/json', status=response.status_code)
def play_url(url): hd['Cookie'] = loginfshare() if not hd['Cookie']: return 'no' response = make_request(url,headers=hd,resp='o') if response.status==302:direct_link=response.headers['location'] elif response.status==200: fs_csrf=xshare_group(re.search('value="(.+?)" name="fs_csrf"',response.body),1);pw='' if re.search('id="DownloadForm_pwd" type="password"',response.body): pw=get_input(u'Hãy nhập: Mật khẩu tập tin') if pw is None or pw=='':mess(u'Bạn đã không nhập password!');return 'fail' data={'fs_csrf':fs_csrf,'DownloadForm[pwd]':pw,'ajax':'download-form'};hd['referer']=url resp=urlfetch.post(url='https://www.fshare.vn/download/get',headers=hd,data=urllib.urlencode(data)) try: if 'url' in resp.json.keys():direct_link=resp.json['url'].encode('utf-8') else: string=resp.json.items()[0][1] if len(resp.json.items()[0][1])>1 else resp.json.items()[0][1][0] mess(string);direct_link='fail' except:mess("Get link that bai");direct_link='fail' else:mess("Get link that bai");direct_link='fail' if myaddon.getSetting('logoutf')=="true":make_request("https://www.fshare.vn/logout",hd) if direct_link=='fail':return 'fail' if os.path.splitext(direct_link)[1][1:].lower() not in media_ext:mess('sorry! this is not a media file');return 'fail' item = xbmcgui.ListItem(path=direct_link) xbmcplugin.setResolvedUrl(int(sys.argv[1]),True,item) return ''
def getvtvgo(url): url = url.lower() vtv = {'vtv1':1, 'vtv2': 2, 'vtv3': 3, 'vtv4': 4, 'vtv5': 5, 'vtv6': 6, 'vtv7': 27, 'vtv8':36, 'vtv9':39, 'vtv5nambo': 7} match = re.search(r"\/(.+)", url) channel = match.group(1) contentid = str(vtv[channel]) f = 'U2FsdGVkX187QjjKy+qMwPB6Z8YoN5Yz2C8miPmAsL+2OuqTXwZzOxcsDnaxbh/N' if len(USER_VIP_CODE) > 0: try: response = fetch_data(VIETMEDIA_HOST + vmf.gibberishAES(f, 'vmf')) json_data = json.loads(response.body) t =json_data['username'].decode('base64') matches = re.search(r"grab=\"(.+?)\"&app_id=\"(.+?)\"&device_type=\"(.+?)\"&vtv_id=\"(.+?)\"&acc_id=\"(.+?)\"&sign=\"(.+?)\"", t) #TextBoxes('VMF', t) grab = matches.group(1) app_id = matches.group(2) device_type = matches.group(3) vtv_id = matches.group(4) acc_id = matches.group(5) sign = matches.group(6) payload = '{"app_id":"'+app_id+'","device_type":"'+device_type+'","vtv_id":"'+vtv_id+'","acc_id":"'+acc_id+'","sign":"'+sign+'","contenttype":"1","contentid":"'+contentid+'"}' headers = {'cache-control': "no-cache"} response = urlfetch.post(grab.decode("base64"), data=payload, headers=headers) jsonStr = json.loads(response.body) video_url = jsonStr['result']['stream_url'][0] return(video_url) except Exception as e: notify('Khong lay duoc link') pass
def getPhimMoi(url): headers = { 'User_Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64; rv:50.0) Gecko/20100101 Firefox/50.0', 'Host' : 'www.phimmoi.net', 'Referer' : url } T2="U2FsdGVkX1+J5yRXU1goqexulsqcAaICSdXjSrml+FFQiYusRAwciVrwAIW86pvrU2RGQmSb9YL/8xMaOnWGbA" response = urlfetch.get(url, headers=headers) regex = r"(;eval.+)<\/script>" matches = re.search(regex, response.body) payload = matches.group(1) payload = urllib.quote(payload) payload = "data="+payload headers = { 'content-type': "application/x-www-form-urlencoded", 'cache-control': "no-cache" } response = urlfetch.post(vmf.gibberishAES(T2, 'vmf'), data=payload, headers=headers) response = urlfetch.get(response.body) regex = r"var _responseJson='(.+)';" matches = re.search(regex, response.body) json_data = matches.group(1) json_data = json.loads(json_data) backup_order = json_data['backupOrder'] t = len(json_data['medias']) video_url = json_data['medias'][(t-1)]['url'] return video_url '''
def test_file_upload(self): content = open(path('test.file'), 'rb').read() files = {} files['test.file1'] = (b'test.file1', b'test.file', content) #files[b'test.file2'] = (b'test.file2', b'', content) files['test.file3'] = (b'test.file3', b'wangxiaobo', content) files['test.file4'] = (b'test.file4', b'wangtwo', content) r = urlfetch.post( testlib.test_server_host, files={ 'test.file1': open(path('test.file')), #'test.file2' : content, 'test.file3': ('wangxiaobo', open(path('test.file'))), 'test.file4': ('wangtwo', content) }, ) o = json.loads(r.text) self.assertEqual(r.status, 200) self.assertTrue(isinstance(r.json, dict)) self.assertTrue(isinstance(r.text, urlfetch.unicode)) self.assertEqual(o['method'], 'POST') self.assertEqual(sorted(o['files'].keys()), sorted(files.keys())) for i in files: self.assertEqual(o['files'][i][0].encode('utf-8'), files[i][0]) self.assertEqual(o['files'][i][1].encode('utf-8'), files[i][1]) self.assertEqual(o['files'][i][2].encode('utf-8'), md5sum(files[i][2]))
def test_post(self): d = testlib.randdict() data = urlfetch.urlencode(d) r = urlfetch.post(testlib.test_server_host, data=data) o = json.loads(r.text) self.assertEqual(r.status, 200) self.assertEqual(o['method'], 'POST') self.assertEqual(o['post'], d)
def fetch_data(self,url, headers=None, data=None): if headers is None: headers = self.hd try: if data: response = urlfetch.post(url, headers=headers, data=data) else: response = urlfetch.get(url, headers=headers) return response except:return None
def resolveUrl(id=None): getUrl = 'http://fptplay.net/show/getlinklivetv?id=%s&type=newchannel&quality=1&mobile=web' result = urlfetch.post(getUrl, data={ "id": id, "quality": __mysettings__.getSetting('quality'), "mobile": "web" }, headers=reg) jsonObject = json.loads(result.content) return jsonObject['stream']
def resolveUrl(id = None): getUrl = 'http://fptplay.net/show/getlinklivetv?id=%s&type=newchannel&quality=1&mobile=web' result = urlfetch.post( getUrl, data={"id": id, "quality": __mysettings__.getSetting('quality'), "mobile": "web" }, headers=reg ) jsonObject = json.loads(result.content) return jsonObject['stream']
def test_post(self): d = testlib.randdict() data = urlfetch.urlencode(d) r = urlfetch.post(testlib.test_server_host, data=data) o = json.loads(r.text) self.assertEqual(r.status, 200) self.assertTrue(isinstance(r.json, dict)) self.assertTrue(isinstance(r.text, urlfetch.unicode)) self.assertEqual(o['method'], 'POST') self.assertEqual(o['post'], d)
def download(link,img): sub_list=[];downloadlink='' if 'phudeviet.org' in link: match = re.search('<a href="(http://phudeviet.org/download/.+?)">',make_request(link)) if match: response=urlfetch.post(match.group(1)) if response.status==302:downloadlink=response.headers['location'] else: pattern='<a href="(.+?)" rel="nofollow" onclick="DownloadSubtitle.+">' match = re.search(pattern,make_request(link)) if match:downloadlink=subscene + match.group(1) if not downloadlink:mess(u'Không tìm được maxspeed link sub');return typeid="srt" if os.path.exists(tempath): shutil.rmtree(tempath) try:os.mkdir(tempath) except: xbmc.sleep(1000) try:os.mkdir(tempath) except:mess(u'Không tạo được thư mục sub');return sub_list body=urlfetch.get(downloadlink).body tempfile = os.path.join(tempath, "subtitle.sub") f = open(tempfile, "wb");f.write(body);f.close() f = open(tempfile, "rb");f.seek(0);fread=f.read(1);f.close() if fread == 'R': typeid = "rar" elif fread == 'P':typeid = "zip" tempfile = os.path.join(tempath, "subtitle." + typeid) os.rename(os.path.join(tempath, "subtitle.sub"), tempfile) if typeid in "rar-zip": xbmc.sleep(500) xbmc.executebuiltin(('XBMC.Extract("%s","%s")' % (tempfile, tempath,)).encode('utf-8'), True) exts = [".srt", ".sub", ".txt", ".smi", ".ssa", ".ass"] for root, dirs, files in os.walk(tempath): for f in files: f=re.sub(',','',f);file = os.path.join(root, f) if os.path.splitext(file)[1] in exts: sub_list.append(file) if img=='en' and addon.getSetting('trans_sub')=='true': mess(u'Google đang dịch sub từ tiếng Anh sang tiếng Việt', timeShown=20000) try: tempfile=xshare_trans(file) os.remove(file) os.rename(tempfile,file) mess(u'Đã dịch xong sub từ tiếng Anh sang tiếng Việt') except:mess(u'Không dịch được sub từ tiếng Anh sang tiếng Việt') if len(sub_list) == 0:mess(u'Không tìm thấy sub') return sub_list
def loginfshare(): url = "https://www.fshare.vn/login";response=make_request(url,resp='o') if not response:mess(u'Lỗi kết nối Fshare.vn');return '' fs_csrf=xshare_group(re.search('value="(.+?)".*name="fs_csrf',response.body),1) hd['Cookie']=response.cookiestring;response.close() form_fields = { "LoginForm[email]": myaddon.getSetting('username'), "LoginForm[password]": myaddon.getSetting('password'),"LoginForm[rememberMe]": "0", "fs_csrf":fs_csrf} response=urlfetch.post(url=url,headers=hd,data=urllib.urlencode(form_fields)) if response and response.status==302:mess(u'Login Fshare.vn thành công',timeShown=100);f=response.cookiestring else:mess(u'Login Fshare.vn thất bại');f='' return f
def url_post(url, data): """Retrieve a URL using HTTP POST, submitting 'data' as a dict. 'data' is URL-encoded before transmission.""" if gae_urlfetch: logging.info("url_post(" + url + ") with GAE") return gae_urlfetch.fetch( url, payload=urllib.urlencode(data), method=gae_urlfetch.POST, headers={'Content-type': 'application/x-www-form-urlencoded'}, deadline=DEADLINE_FETCH) else: logging.info("url_post(" + url + ") with urlfetch") return urlfetch.post(url, data=data)
def post(self, url, data=None, headers={}): url = self.url + url headers['Content-type'] = 'application/json' headers['X-WSSE'] = self.__token() result = urlfetch.post(url, headers=headers, params=data) if result.status >= 400: return "Error: HTTP Status Code " + str(result.status) + " : " + result.reason try: rep = json.loads(result.body) except Exception, e: rep = result.body
def url_post(url, data): """Retrieve a URL using HTTP POST, submitting 'data' as a dict. 'data' is URL-encoded before transmission.""" if gae_urlfetch: logging.info("url_post(" + url + ") with GAE") return gae_urlfetch.fetch(url, payload=urllib.urlencode(data), method=gae_urlfetch.POST, headers={'Content-type': 'application/x-www-form-urlencoded'}, deadline=DEADLINE_FETCH ) else: logging.info("url_post(" + url + ") with urlfetch") return urlfetch.post(url, data = data)
def getLinkById(id=None, quality="3"): #if id.startswith('https://') : # #is event # id = getChannelIdFromEventLink(id) #if id == None : # return None #get cookie & csrf result = urlfetch.fetch( crawurl, headers={ 'User-Agent': 'Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/43.0.2357.81 Safari/537.36' }) #m = re.search(r"name=\"_token\" content=\"(.+)\"",result.content) #if m == None : # return None #csrf = m.group(1) cookie = 'laravel_session=' + result.cookies.get('laravel_session') + ";" csrf = urllib.unquote(result.cookies.get('token')) #plugin.log.info(csrf) result = urlfetch.post( 'https://fptplay.net/show/getlinklivetv', data={ "id": id, "quality": quality, "mobile": "web", "type": "newchannel" }, headers={ 'Content-Type': 'application/x-www-form-urlencoded', 'User-Agent': 'Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/43.0.2357.81 Safari/537.36', 'X-Requested-With': 'XMLHttpRequest', 'Referer': 'https://fptplay.net/livetv', 'x-csrf-token': csrf, 'cookie': cookie }) plugin.log.info(result.content) if result.status_code != 200: return None info = json.loads(result.content) return info['stream']
def test_post_query_string(self): d = testlib.randdict() data = urlfetch.urlencode(d) qs = testlib.randdict(5) query_string = urlfetch.urlencode(qs) r = urlfetch.post(testlib.test_server_host + '?'+query_string, data=data) o = json.loads(r.text) self.assertEqual(r.status, 200) self.assertEqual(o['method'], 'POST') self.assertEqual(o['post'], d) self.assertEqual(o['get'], qs) self.assertEqual(o['query_string'], query_string)
def getLinkById(id = None, quality = "3"): #if id.startswith('https://') : # #is event # id = getChannelIdFromEventLink(id) #if id == None : # return None #get cookie & csrf result = urlfetch.fetch( crawurl, headers={ 'User-Agent':'Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/43.0.2357.81 Safari/537.36' }) #m = re.search(r"name=\"_token\" content=\"(.+)\"",result.content) #if m == None : # return None #csrf = m.group(1) cookie='laravel_session=' + result.cookies.get('laravel_session') + ";" csrf = urllib.unquote(result.cookies.get('token')) #plugin.log.info(csrf) result = urlfetch.post( 'https://fptplay.net/show/getlinklivetv', data={"id": id, "quality": quality, "mobile": "web", "type" : "newchannel" }, headers={'Content-Type': 'application/x-www-form-urlencoded', 'User-Agent':'Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/43.0.2357.81 Safari/537.36', 'X-Requested-With':'XMLHttpRequest', 'Referer':'https://fptplay.net/livetv', 'x-csrf-token': csrf, 'cookie':cookie } ) plugin.log.info(result.content) if result.status_code != 200 : return None info = json.loads(result.content) return info['stream']
def check_fshare(): username = ADDON.getSetting('fshare_username') password = ADDON.getSetting('fshare_password') login_url = 'https://www.fshare.vn/login' response = urlfetch.fetch(login_url) #alert(username) #alert(password) csrf_pattern = '\svalue="(.+?)".*name="fs_csrf"' csrf=re.search(csrf_pattern, response.body) fs_csrf = csrf.group(1) #alert(fs_csrf) headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2228.0 Safari/537.36 VietMedia/1.0', 'Cookie': response.cookiestring} data = { "LoginForm[email]" : username, "LoginForm[password]" : password, "fs_csrf" : fs_csrf } response = urlfetch.post(login_url, headers=headers, data=data) if 'Sai tên đăng nhập hoặc mật khẩu.' in response.body: alert('Sai tên đăng nhập hoặc mật khẩu. Xin vui lòng kiểm tra lại user và password', '[COLOR yellow]Fshare thông báo[/COLOR]') sys.exit("Error message") headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2228.0 Safari/537.36 VietMedia/1.0', 'Cookie': response.cookiestring} check_acc = urlfetch.get('https://www.fshare.vn/account/infoaccount', headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2228.0 Safari/537.36 VietMedia/1.0', 'Cookie': response.cookiestring}) regex = r"data-target=\"#member\">(.+?)</a>" ma_tk=re.search(regex, check_acc.body) ma_tk=ma_tk.group(1) ma_tk='Loại tài khoản: [COLOR red]'+ma_tk+'[/COLOR]' date_create=re.search(r"<dt>Ngày tham gia</dt>.*\n.+?<dd>(.+?)</dd>", check_acc.body) date_create=date_create.group(1) date_create=date_create.rstrip() date_create='Ngày tham gia: [COLOR red]'+date_create+'[/COLOR]' acc_id=re.search(r"<dt>Mã Tài Khoản</dt>.*\n.+?<dd>(.+?)</dd>",check_acc.body) acc_id=acc_id.group(1) acc_id='Mã tài khoản: [COLOR red]'+acc_id+'[/COLOR]' expire_date=re.search(r"<dt>Hạn dùng</dt>.*\n.+?<dd>(.+?)</dd>",check_acc.body) expire_date=expire_date.group(1) #expire='Hạn dùng: [COLOR red]'+expire+'[/COLOR]' bonus=re.search(r"<dt>Điểm thưởng</dt>.*\n.+?<dd>(.+?)</dd>",check_acc.body) bonus=bonus.group(1) bonus='Điểm thưởng: [COLOR red]'+bonus+'[/COLOR]' check_acc = urlfetch.get('https://www.fshare.vn/account/profile', headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2228.0 Safari/537.36 VietMedia/1.0', 'Cookie': response.cookiestring}) regex = r'Địa chỉ email</label>.+<div class=\"col-sm-8.+text-primary\">(.+?)<\/div>' email = re.search(regex, check_acc.body) email = email.group(1) email = 'Địa chỉ e-mail: [COLOR red]'+email+'[/COLOR]' info=acc_id+'\n'+ma_tk+'\n'+date_create+'\n'+'Hạn dùng: [COLOR red]'+expire_date+'[/COLOR]\n'+bonus+'\n'+email TextBoxes('Trạng thái tài khoản fshare', info)
def test_post_query_string(self): d = testlib.randdict() data = urlfetch.urlencode(d) qs = testlib.randdict(5) query_string = urlfetch.urlencode(qs) r = urlfetch.post(testlib.url('?' + query_string), data=data) o = json.loads(r.text) self.assertEqual(r.status, 200) self.assertTrue(isinstance(r.json, dict)) self.assertTrue(isinstance(r.text, urlfetch.unicode)) self.assertEqual(o['method'], 'POST') self.assertEqual(o['post'], d) self.assertEqual(o['get'], qs) self.assertEqual(o['query_string'], query_string)
def get_channel_members(workspace, channel, cursor): token = settings.get_bot_token(workspace) if not token: current_app.logger.warning( f"Requested token for workspace {workspace} but found none") return None headers = { 'User-Agent': f'karmabot/{karmabot.__version__}', 'Content-Type': 'application/json; charset=utf-8', 'Authorization': f"Bearer {token}" } result = urlfetch.post( url= "https://slack.com/api/conversations.members?channel=%s&cursor=%s&limit=1000" % (channel, cursor), headers=headers) return result.json
def test_one_file_upload_gbk(self): content = open('test.file.gbk', 'rb').read() files = {'test.file': (b'test.file', b'test.file', content)} r = urlfetch.post( testlib.test_server_host, files = { 'test.file' : ('test.file', content), }, ) o = json.loads(r.text) self.assertEqual(r.status, 200) self.assertEqual(o['method'], 'POST') self.assertEqual(sorted(o['files'].keys()), sorted(files.keys())) for i in files: for j in range(3): self.assertEqual(o['files'][i][j].encode('gb2312'), files[i][j])
def getMyInfo(): hdr = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.140 Safari/537.36', 'Host': 'space.bilibili.com', 'Origin': 'https://space.bilibili.com', 'Referer': 'https://space.bilibili.com/9579763/' } url = 'https://space.bilibili.com/ajax/member/GetInfo' dat = {'mid': '9579763'} res = urlfetch.post(url, headers=hdr, data=dat) if res.status == 200: resstr = res.content #print resstr strjson = json.loads(resstr) return strjson['data'] else: return []
def command_reply(workspace, url, message): token = settings.get_bot_token(workspace) if not token: current_app.logger.warning( f"Requested token for workspace {workspace} but found none") return None headers = { 'User-Agent': f'karmabot/{karmabot.__version__}', 'Content-Type': 'application/json; charset=utf-8', 'Authorization': 'Bearer %s' % token } if current_app.config.get('FAKE_SLACK'): current_app.logger.info(url) current_app.logger.info(str(message)) return '{"ok": true}' result = urlfetch.post(url=url, data=json.dumps(message), headers=headers) return result
def fetch_data(url, headers=None, data=None): if headers is None: headers = { 'User-agent' : 'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2228.0 Safari/537.36 VietMedia/1.0', 'Referer' : 'http://www.google.com', 'X-User-VIP' : USER_VIP_CODE } try: if data: response = urlfetch.post(url, headers=headers, data=data) else: response = urlfetch.get(url, headers=headers) return response except Exception as e: print e pass
def getLink(self,url): response = urlfetch.get(url) match = re.search(re.compile(r'iosUrl\s=\s\"(.*?)\"'), response.body) linklive = match.group(1) xbmc.log(linklive) cookie=response.cookiestring; headers = { 'User-Agent' : 'Mozilla/5.0 (Windows NT 10.0; WOW64; rv:48.0) Gecko/20100101 Firefox/48.0', 'Cookie' : cookie, 'Referer' : url, 'X-Requested-With' : 'XMLHttpRequest' } data={'url':linklive,'type':'1'} response = urlfetch.post('http://hplus.com.vn/content/getlinkvideo/',data=data, headers=headers) if not response: return '' video_url = response.content xbmc.log(video_url) return video_url
def post_attachment(workspace, post): token = settings.get_bot_token(workspace) if not token: current_app.logger.warning( f"Requested token for workspace {workspace} but found none") return None headers = { 'User-Agent': f'karmabot/{karmabot.__version__}', 'Content-Type': 'application/json; charset=utf-8', 'Authorization': 'Bearer %s' % token } if current_app.config.get('FAKE_SLACK'): current_app.logger.info(str(post)) return '{"ok": true}' result = urlfetch.post(url="https://slack.com/api/chat.postMessage", data=json.dumps(post), headers=headers) return result
def pass_off(request_data): refresh_token = request_data['refresh_token'] response = post("https://accounts.spotify.com/api/token", headers={'content_type': 'application/x-www-form-urlencoded'}, data={'grant_type': 'refresh_token', 'refresh_token': refresh_token, 'client_id': __CLIENT_ID, 'client_secret': __CLIENT_SECRET}) if response.status_code != 200: return HttpResponse(response.text, content_type='application/json', status=response.status_code) return_response = json.loads(response.text) if 'user' in request_data: return_response['user'] = request_data['user'] return_response['client_id'] = __CLIENT_ID return HttpResponse(json.dumps(return_response), content_type='application/json', status=response.status_code)
def fetch_data(url, headers=None, data=None): if headers is None: headers = { 'User-agent': 'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2228.0 Safari/537.36 VietMedia/1.0', 'Referer': 'http://www.google.com' } try: if data: response = urlfetch.post(url, headers=headers, data=data) else: response = urlfetch.get(url, headers=headers) return response except Exception as e: print e pass
def test_one_file_upload_gbk(self): content = open(path('test.file.gbk'), 'rb').read() files = {'test.file': (b'test.file', b'test.file', content)} r = urlfetch.post( testlib.test_server_host, files = { 'test.file' : ('test.file', content), }, ) o = json.loads(r.text) self.assertEqual(r.status, 200) self.assertTrue(isinstance(r.json, dict)) self.assertTrue(isinstance(r.text, urlfetch.unicode)) self.assertEqual(o['method'], 'POST') self.assertEqual(sorted(o['files'].keys()), sorted(files.keys())) for i in files: self.assertEqual(o['files'][i][0].encode('gbk'), files[i][0]) self.assertEqual(o['files'][i][1].encode('gbk'), files[i][1]) self.assertEqual(o['files'][i][2].encode('gbk'), md5sum(files[i][2]))
def send_using_fcm(data, fcm_token): # requests_toolbelt.adapters.appengine.monkeypatch() url = 'https://fcm.googleapis.com/fcm/send' # create the body body = { 'data': { 'body': data, 'url': 'myurl', 'title': 'hello' }, 'registration_ids': [fcm_token] } # fix this to not hardcode the API key headers = { 'Content-Type': 'application/json', 'Authorization': 'key=AAAA6v_4v3I:APA91bEh9-JDKVAZlA7VSSng9wYiF1TMu9ydUwZk6MtWTsAsraQ0x4uDWP1khfxqX6QfQecTte14K8fcz7iZ9ufYamPE5CthCJZO-gqDuDbrVH8q57AaLEicDc1mfcbgkfhmOYjIfLYD' } # requests.post(url, data=json.dumps(body), headers=headers) # print(fcm_token) result = post(url, headers=headers, data=json.dumps(body))
def test_one_file_upload_gbk(self): content = open(path('test.file.gbk'), 'rb').read() files = {'test.file': (b'test.file', b'test.file', content)} r = urlfetch.post( testlib.test_server_host, files={ 'test.file': ('test.file', content), }, ) o = json.loads(r.text) self.assertEqual(r.status, 200) self.assertTrue(isinstance(r.json, dict)) self.assertTrue(isinstance(r.text, urlfetch.unicode)) self.assertEqual(o['method'], 'POST') self.assertEqual(sorted(o['files'].keys()), sorted(files.keys())) for i in files: self.assertEqual(o['files'][i][0].encode('gbk'), files[i][0]) self.assertEqual(o['files'][i][1].encode('gbk'), files[i][1]) self.assertEqual(o['files'][i][2].encode('gbk'), md5sum(files[i][2]))
def test_file_upload_multipart(self): content = open(path('test.file'), 'rb').read() files = {} files['test.file1'] = (b'test.file1', b'test.file', content) #files[b'test.file2'] = (b'test.file2', b'', content) files['test.file3'] = (b'test.file3', b'wangxiaobo', content) files['test.file4'] = (b'test.file4', b'wangtwo', content) data = testlib.randdict() params = testlib.randdict(5) r = urlfetch.post( testlib.test_server_host, data=data, params=params, files={ 'test.file1': open(path('test.file')), #'test.file2' : content, 'test.file3': ('wangxiaobo', open(path('test.file'))), 'test.file4': ('wangtwo', content) }, ) o = json.loads(r.text) self.assertEqual(r.status, 200) self.assertTrue(isinstance(r.json, dict)) self.assertTrue(isinstance(r.text, urlfetch.unicode)) self.assertEqual(o['method'], 'POST') self.assertEqual(o['post'], data) self.assertEqual(sorted(o['files'].keys()), sorted(files.keys())) for i in files: self.assertEqual(o['files'][i][0].encode('utf-8'), files[i][0]) self.assertEqual(o['files'][i][1].encode('utf-8'), files[i][1]) self.assertEqual(o['files'][i][2].encode('utf-8'), md5sum(files[i][2])) for k, v in params.items(): self.assertTrue(('%s=%s' % (k, v)) in r.url)
def getLink(id = None): if id.startswith('http://') : #is event id = getChannelIdFromEventLink(id) if id == None : return None result = urlfetch.post( 'http://fptplay.net/show/getlinklivetv', data={"id": id, "quality": __settings__.getSetting('quality'), "mobile": "web" }, headers={'Content-Type': 'application/x-www-form-urlencoded', 'User-Agent':'Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/43.0.2357.81 Safari/537.36' } ) if result.status_code != 200 : plugin.log.error("Can't get link for id " + id) return None info = json.loads(result.content) return info['stream']
def test_file_upload_multipart(self): content = open(path('test.file'), 'rb').read() files = {} files['test.file1'] = (b'test.file1', b'test.file', content) #files[b'test.file2'] = (b'test.file2', b'', content) files['test.file3'] = (b'test.file3', b'wangxiaobo', content) files['test.file4'] = (b'test.file4', b'wangtwo', content) data = testlib.randdict() params = testlib.randdict(5) r = urlfetch.post( testlib.test_server_host, data = data, params = params, files = { 'test.file1' : open(path('test.file')), #'test.file2' : content, 'test.file3' : ('wangxiaobo', open(path('test.file'))), 'test.file4' : ('wangtwo', content) }, ) o = json.loads(r.text) self.assertEqual(r.status, 200) self.assertTrue(isinstance(r.json, dict)) self.assertTrue(isinstance(r.text, urlfetch.unicode)) self.assertEqual(o['method'], 'POST') self.assertEqual(o['post'], data) self.assertEqual(sorted(o['files'].keys()), sorted(files.keys())) for i in files: self.assertEqual(o['files'][i][0].encode('utf-8'), files[i][0]) self.assertEqual(o['files'][i][1].encode('utf-8'), files[i][1]) self.assertEqual(o['files'][i][2].encode('utf-8'), md5sum(files[i][2])) for k, v in params.items(): self.assertTrue(('%s=%s' % (k, v)) in r.url)
def getxemphimbox(url): matches = re.search(r"-(\d+)", url) idfilm = matches.group(1) response = urlfetch.get(url) cookie = response.cookiestring; matches = re.search(r"filmInfo\.episodeID = parseInt\('(\d+)'\);", response.body) idEP = matches.group(1) host = 'xemphimbox.com' headers = { 'User_Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64; rv:50.0) Gecko/20100101 Firefox/50.0', 'Referer': url, 'Host' : host, 'X-Requested-With' : 'XMLHttpRequest', 'Cookie' : cookie} data = { 'NextEpisode': 1, 'EpisodeID' : idEP, 'filmID' : idfilm, 'playTech' : 'auto'} response = urlfetch.post('http://xemphimbox.com/ajax', headers=headers, data=data) matches = re.search(r"src=\"(.+?)\"", response.body) getlink = matches.group(1) millis = int(round(time.time() * 1000)) getlink += '&_=' + str(millis) host = 'grab.xemphimbox.com' headers = { 'User_Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64; rv:50.0) Gecko/20100101 Firefox/50.0', 'Referer': url, 'Host' : host, 'X-Requested-With' : 'XMLHttpRequest', 'Cookie' : cookie} response = urlfetch.get(getlink, headers=headers) matches = re.search(r"jwConfigPlayer.playlist\[0\].sources =(.*?);", response.body) jsonStr = json.loads(matches.group(1)) video_url = jsonStr[len(jsonStr)-1]['file'] return video_url
def dialog_open(workspace, trigger_id, dialog): token = settings.get_bot_token(workspace) if not token: current_app.logger.warning( f"Requested token for workspace {workspace} but found none") return None headers = { 'User-Agent': f'karmabot/{karmabot.__version__}', 'Content-Type': 'application/json; charset=utf-8', 'Authorization': f"Bearer {token}" } json_post = {'trigger_id': trigger_id, 'dialog': dialog} if current_app.config.get('FAKE_SLACK'): current_app.logger.info(str(json_post)) return json.loads('''{"ok": true}''') result = urlfetch.post(url="https://slack.com/api/dialog.open", data=json.dumps(json_post), headers=headers) current_app.logger.debug(result.content) return json.loads(result.content)
def download(link, filename, img): sub_list = [] downloadlink = '' if 'phudeviet.org' in link: match = re.search('<a href="(http://phudeviet.org/download/.+?)">', make_request(link)) if match: response = urlfetch.post(match.group(1)) if response.status == 302: downloadlink = response.headers['location'] else: pattern = '<a href="(.+?)" rel="nofollow" onclick="DownloadSubtitle.+">' try: match = re.search(pattern, urlfetch.get(link).body) except: match = '' if match: downloadlink = subscene + match.group(1) if not downloadlink: mess(u'Không tìm được maxspeed link sub') return if os.path.exists(tempath): for root, dirs, files in os.walk(tempath, topdown=False): for name in files: try: os.remove(os.path.join(root, name)) except: pass for name in dirs: try: os.rmdir(os.path.join(root, name)) except: pass else: try: os.mkdir(tempath) except: mess(u'Không tạo được thư mục temp') return [] try: body = urlfetch.get(downloadlink).body except: body = ' ' tempfile = os.path.join(tempath, "subtitle.sub") f = open(tempfile, "wb") f.write(body) f.close() f = open(tempfile, "rb") f.seek(0) fread = f.read(1) f.close() if fread == 'R': typeid = "rar" elif fread == 'P': typeid = "zip" else: typeid = "srt" def rename(fs, fd): try: if os.path.isfile(fd): os.remove(fd) os.rename(fs, fd) except: pass tempfile = os.path.join(tempath, "subtitle." + typeid) rename(os.path.join(tempath, "subtitle.sub"), tempfile) if typeid in "rar-zip": xbmc.sleep(500) try: xbmc.executebuiltin(('XBMC.Extract("%s","%s")' % ( tempfile, tempath, )).encode('utf-8'), True) except: pass exts = [".srt", ".sub", ".txt", ".smi", ".ssa", ".ass"] trans = True for root, dirs, files in os.walk(tempath): for f in files: #f=re.sub(',','',f); file = os.path.join(root, f) ext = os.path.splitext(f)[1] if os.path.exists(subsfolder): subfile = os.path.join(subsfolder, filename + ext) else: subfile = os.path.join(tempsubs, filename + ext) if ext in exts: if img == 'en' and addon.getSetting( 'trans_sub') == 'true' and trans: mess(u'Google đang dịch sub từ tiếng Anh sang tiếng Việt', timeShown=2000) if xshare_trans(file, subfile): mess(u'Đã dịch xong sub từ tiếng Anh sang tiếng Việt') else: mess(u'Dịch sub thất bại do Google chặn dịch vụ !!!') trans = False else: rename(file, subfile) sub_list.append(subfile) if not sub_list: mess(u'Không tìm thấy sub') return sub_list
def get_users(workspace, cursor): token = settings.get_bot_token(workspace) if not token: current_app.logger.warning( f"Requested token for workspace {workspace} but found none") return None headers = { 'User-Agent': f'karmabot/{karmabot.__version__}', 'Content-Type': 'application/json; charset=utf-8', 'Authorization': f"Bearer {token}" } if current_app.config.get('FAKE_SLACK'): return json.loads('''{ "ok": true, "members": [ { "id": "W012A3CDE", "team_id": "T012AB3C4", "name": "spengler", "deleted": false, "color": "9f69e7", "real_name": "spengler", "tz": "America/Los_Angeles", "tz_label": "Pacific Daylight Time", "tz_offset": -25200, "profile": { "avatar_hash": "ge3b51ca72de", "status_text": "Print is dead", "status_emoji": ":books:", "real_name": "Egon Spengler", "display_name": "spengler", "real_name_normalized": "Egon Spengler", "display_name_normalized": "spengler", "email": "*****@*****.**", "image_24": "https://.../avatar/e3b51ca72dee4ef87916ae2b9240df50.jpg", "image_32": "https://.../avatar/e3b51ca72dee4ef87916ae2b9240df50.jpg", "image_48": "https://.../avatar/e3b51ca72dee4ef87916ae2b9240df50.jpg", "image_72": "https://.../avatar/e3b51ca72dee4ef87916ae2b9240df50.jpg", "image_192": "https://.../avatar/e3b51ca72dee4ef87916ae2b9240df50.jpg", "image_512": "https://.../avatar/e3b51ca72dee4ef87916ae2b9240df50.jpg", "team": "T012AB3C4" }, "is_admin": true, "is_owner": false, "is_primary_owner": false, "is_restricted": false, "is_ultra_restricted": false, "is_bot": false, "updated": 1502138686, "is_app_user": false, "has_2fa": false }, { "id": "W07QCRPA4", "team_id": "T0G9PQBBK", "name": "glinda", "deleted": false, "color": "9f69e7", "real_name": "Glinda Southgood", "tz": "America/Los_Angeles", "tz_label": "Pacific Daylight Time", "tz_offset": -25200, "profile": { "avatar_hash": "8fbdd10b41c6", "image_24": "https://a.slack-edge.com...png", "image_32": "https://a.slack-edge.com...png", "image_48": "https://a.slack-edge.com...png", "image_72": "https://a.slack-edge.com...png", "image_192": "https://a.slack-edge.com...png", "image_512": "https://a.slack-edge.com...png", "image_1024": "https://a.slack-edge.com...png", "image_original": "https://a.slack-edge.com...png", "first_name": "Glinda", "last_name": "Southgood", "title": "Glinda the Good", "phone": "", "skype": "", "real_name": "Glinda Southgood", "real_name_normalized": "Glinda Southgood", "display_name": "Glinda the Fairly Good", "display_name_normalized": "Glinda the Fairly Good", "email": "*****@*****.**" }, "is_admin": true, "is_owner": false, "is_primary_owner": false, "is_restricted": false, "is_ultra_restricted": false, "is_bot": false, "updated": 1480527098, "has_2fa": false } ], "cache_ts": 1498777272, "response_metadata": { "next_cursor": "dXNlcjpVMEc5V0ZYTlo=" } }''') result = urlfetch.post( url="https://slack.com/api/users.list?cursor=%s&limit=1000" % cursor, headers=headers) # self.log.debug(result.content) return json.loads(result.content)
def get_usergroups(workspace): token = settings.get_access_token(workspace) if not token: current_app.logger.warning( f"Requested token for workspace {workspace} but found none") return None headers = { 'User-Agent': f'karmabot/{karmabot.__version__}', 'Content-Type': 'application/json; charset=utf-8', 'Authorization': f"Bearer {token}" } if current_app.config.get('FAKE_SLACK'): return json.loads('''{ "ok": true, "usergroups": [ { "id": "S0614TZR7", "team_id": "T060RNRCH", "is_usergroup": true, "name": "Team Admins", "description": "A group of all Administrators on your team.", "handle": "admins", "is_external": false, "date_create": 1446598059, "date_update": 1446670362, "date_delete": 0, "auto_type": "admin", "created_by": "USLACKBOT", "updated_by": "U060RNRCZ", "deleted_by": null, "prefs": { "channels": [], "groups": [] }, "user_count": "2" }, { "id": "S06158AV7", "team_id": "T060RNRCH", "is_usergroup": true, "name": "Team Owners", "description": "A group of all Owners on your team.", "handle": "owners", "is_external": false, "date_create": 1446678371, "date_update": 1446678371, "date_delete": 0, "auto_type": "owner", "created_by": "USLACKBOT", "updated_by": "USLACKBOT", "deleted_by": null, "prefs": { "channels": [], "groups": [] }, "user_count": "1" }, { "id": "S0615G0KT", "team_id": "T060RNRCH", "is_usergroup": true, "name": "Marketing Team", "description": "Marketing gurus, PR experts and product advocates.", "handle": "marketing-team", "is_external": false, "date_create": 1446746793, "date_update": 1446747767, "date_delete": 1446748865, "auto_type": null, "created_by": "U060RNRCZ", "updated_by": "U060RNRCZ", "deleted_by": null, "prefs": { "channels": [], "groups": [] }, "user_count": "0" } ] }''') result = urlfetch.post( url= "https://slack.com/api/usergroups.list?include_count=false&include_users=false", headers=headers) current_app.logger.debug(result.content) response = json.loads(result.content) if response['ok']: return response['usergroups'] return []
def get_fshare(url): response = urlfetch.get(url) if 'Tập tin quý khách yêu cầu không tồn tại' in response.body: notify('Tập tin quý khách yêu cầu không tồn tại') sys.exit("Error message") def checkpass(url): response = urlfetch.get(url) if 'Tập tin có mật khẩu bảo vệ' in response.body: keyboardHandle = xbmc.Keyboard('','Nhập mật khẩu bảo vệ của tập tin') keyboardHandle.doModal() if (keyboardHandle.isConfirmed()): queryText = keyboardHandle.getText() if len(queryText) == 0: return queryText = urllib.quote_plus(queryText) password1 = queryText return password1 else: return url = url.replace('http://', 'https://') if '-' in url: matches = re.search(r"(http.*)-(.*)", url) password1 = matches.group(2) url = matches.group(1) else: password1 = checkpass(url) #notify(password1) match = re.search(r"(https://)", url) if not match: url = 'https://'+url else: url = url username = ADDON.getSetting('fshare_username') password = ADDON.getSetting('fshare_password') fshare_option = ADDON.getSetting('fshare_option') F = 'U2FsdGVkX1+oRjEcO06h18WuKSLFnniVhsVxR1l2aUWLmQAC3v4KfeXi5Xx5I11I' def check_user(session_id): f = 'U2FsdGVkX1+fntz3Jv92YvlUvQk6pEhgPiGKJcEBVtVH9lpd8YS6idK8G9Lr7etACq/sLnO12tI2klwOz9QQWQ' headers = {'cookie': "session_id="+session_id} response = urlfetch.get(vmf.gibberishAES(f, 'Faidemteiv'), headers=headers) jStr = json.loads(response.body) c = jStr['account_type'] return(c) def fshare_download(url, username, password): payload = '{"app_key":"L2S7R6ZMagggC5wWkQhX2+aDi467PPuftWUMRFSn","user_email":"'+username+'","password":"******"}' headers = {'cache-control': "no-cache"} f = 'U2FsdGVkX1+DNcAz9bYFd5cYzmMSxkO6cjEESsnvnFDRwI/cJ7q9e3PMqRvzhaQG/3AKt6uXJwS1dzBpPGlotw' response = urlfetch.post(vmf.gibberishAES(f, 'Faidemteiv'), data=payload, headers=headers) if '405' in response.body: alert('Không đăng nhập được. Kiểm tra lại username và mật khẩu.\nUser: [COLOR yellow]' + username+'[/COLOR]\nPassword: [COLOR yellow]'+password+'[/COLOR]','Fshare thông báo') sys.exit jStr = json.loads(response.body) code = jStr['code'] msg = jStr['msg'] token = jStr['token'] session_id = jStr['session_id'] t = check_user(session_id) t = str(t) if code == 200: notify ('Đăng nhập thành công') notify ('Tài khoản là: [COLOR red]'+t+'[/COLOR]') f = 'U2FsdGVkX1/vJ77W7WEfjOu+hZeMdqup95C+GE85n+a+y7jPpVuWQ/84LkPrQvpvA0xuchHX/FwK++XMK+EnVg' data = '{"token" : "%s", "url" : "%s", "password" : "%s"}' header = {'Cookie' : 'session_id=' + session_id} data = data % (token, url, password1) t = urlfetch.post(vmf.gibberishAES(f, 'Faidemteiv'), headers=header, data=data) jStr = json.loads(t.body) video_url = jStr['location'] if not video_url: notify('Link hỏng') return video_url def getlink(url, username, password): login_url = 'https://www.fshare.vn/login' logout_url = 'https://www.fshare.vn/logout' download_url = 'https://www.fshare.vn/download/get' notify (u'VMF Getlink system'.encode("utf-8")) response = fetch_data(login_url) if not response: return csrf_pattern = '\svalue="(.+?)".*name="fs_csrf"' csrf=re.search(csrf_pattern, response.body) fs_csrf = csrf.group(1) headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2228.0 Safari/537.36 VietMedia/1.0', 'Cookie': response.cookiestring} data = { "LoginForm[email]" : username, "LoginForm[password]" : password, "fs_csrf" : fs_csrf } response = fetch_data(login_url, headers, data) if 'Sai tên đăng nhập hoặc mật khẩu.' in response.body: alert('Sai tên đăng nhập hoặc mật khẩu. Xin vui lòng kiểm tra lại user và password', '[COLOR yellow]Fshare thông báo[/COLOR]') sys.exit check_acc = fetch_data('https://www.fshare.vn/account/infoaccount', headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2228.0 Safari/537.36 VietMedia/1.0', 'Cookie': response.cookiestring}) regex = r"data-target=\"#member\">(.+?)</a>" ma_tk=re.search(regex, check_acc.body) ma_tk=ma_tk.group(1) notify1('Tài khoản Fshare của bạn là: [COLOR red]'+ma_tk+'[/COLOR]') headers['Cookie'] = response.cookiestring headers['Referer'] = url direct_url = '' attempt = 1 MAX_ATTEMPTS = 3 file_id = os.path.basename(url) if response and response.status == 302: notify (u'Đang xử lý lấy link'.encode("utf-8")) while attempt < MAX_ATTEMPTS: if attempt > 1: sleep(2) notify (u'Lấy link lần thứ #%s'.encode("utf-8") % attempt) attempt += 1 response = fetch_data(url, headers, data) if response.status == 200: csrf=re.search(csrf_pattern, response.body) fs_csrf = csrf.group(1) data = { 'fs_csrf' : fs_csrf, 'ajax' : 'download-form', 'DownloadForm[pwd]' : password1, 'DownloadForm[linkcode]' : file_id } response=fetch_data(download_url, headers, data); json_data = json.loads(response.body) if json_data.get('url'): direct_url = json_data['url'] elif json_data.get('msg'): notify(json_data['msg'].encode("utf-8")) else: notify('Kiểm tra lại user, mật khẩu, mã password') elif response.status == 302: direct_url = response.headers['location'] else: notify (u'Lỗi khi lấy link, mã lỗi #%s. Đang thử lại...'.encode("utf-8") % response.status) response = fetch_data(logout_url, headers) if response.status == 302: notify (u'Done'.encode("utf-8")) else: notify (u'Lấy link không thành công.'.encode("utf-8")) if len(direct_url) > 0: notify (u'Đã lấy được link'.encode("utf-8")) else: notify (u'Có sự cố khi lấy link. Xin vui lòng thử lại'.encode("utf-8")) return direct_url #+++++++++++++++++ if fshare_option == "true": if len(username) == 0 or len(password) == 0: alert(u'Bạn chưa nhập [COLOR red]VMF[/COLOR] code hoặc tài khoản cá nhân Fshare'.encode("utf-8"), 'Soạn tin: [COLOR red]VMF[/COLOR] gửi [COLOR red]8798[/COLOR] để lấy VMF Code') return else: try: notify('Đang lấy link') #return fshare_download(url, username, password) return getlink(url, username, password) except: notify('Không đăng nhập được tài khoản') if fshare_option == "false": if len(USER_VIP_CODE) == 0: alert(u'Bạn chưa có tài khoản cá nhân Fshare'.encode("utf-8")) return if len(USER_VIP_CODE) > 0: download_url = 'https://www.fshare.vn/download/get' try: response = fetch_data(VIETMEDIA_HOST + vmf.gibberishAES(F1, 'idok')) json_data = json.loads(response.body) a =json_data['ttt'] c = a.split('|') for x in c: file_id = re.search(r"file\/(.+)", url).group(1) headers = { 'User-Agent' : 'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2228.0 Safari/537.36', 'Cookie':'session_id='+x } response = urlfetch.get(url, headers=headers) if 'Tài khoản VIP là tài khoản trả tiền của Fshare' in response.body or 'Tài khoản BUNDLE là tài khoản KM theo gói Internet FPT' in response.body and 'getlink' not in response.body: fs_csrf = re.search(r"fs_csrf:'(.+?)'", response.body).group(1) headers = { 'User-Agent' : 'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2228.0 Safari/537.36', 'Cookie':'session_id='+x } data = { 'fs_csrf' : fs_csrf, 'ajax' : 'download-form', 'DownloadForm[pwd]' : '', 'DownloadForm[linkcode]' : file_id, 'underfined' : 'underfined' } response=urlfetch.post(download_url, headers=headers, data=data); json_data = json.loads(response.body) if json_data.get('url'): if len(json_data['url']) > 0: video_url = json_data['url'] return (video_url) break except Exception as e: alert('Sử dụng tài khoản Fshare VIP cá nhân để play. Liên hệ [COLOR yellow][email protected][/COLOR] để mua Fshare VIP', 'VMF code lỗi') pass