Exemple #1
0
	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	
Exemple #2
0
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)
Exemple #3
0
    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)
Exemple #4
0
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
Exemple #5
0
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)
Exemple #6
0
    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]))
Exemple #7
0
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
Exemple #8
0
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)
Exemple #9
0
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)
Exemple #10
0
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)
Exemple #11
0
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)
Exemple #12
0
    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])
Exemple #13
0
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)
Exemple #14
0
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 ''
Exemple #16
0
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
Exemple #17
0
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
	'''
Exemple #18
0
    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]))
Exemple #19
0
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
Exemple #20
0
    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)
Exemple #21
0
	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
Exemple #22
0
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']
Exemple #23
0
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']
Exemple #24
0
    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
Exemple #27
0
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)
Exemple #28
0
	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
Exemple #29
0
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)
Exemple #30
0
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']
Exemple #31
0
    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)
Exemple #32
0
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']
Exemple #33
0
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)
Exemple #34
0
    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)
Exemple #35
0
    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)
Exemple #36
0
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
Exemple #37
0
    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])
Exemple #38
0
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 []
Exemple #39
0
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
Exemple #40
0
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
Exemple #41
0
	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							
Exemple #42
0
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
Exemple #43
0
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)
Exemple #44
0
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
Exemple #45
0
    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]))
Exemple #46
0
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))
Exemple #47
0
    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]))
Exemple #48
0
    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)
Exemple #49
0
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']
Exemple #50
0
    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)
Exemple #51
0
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
Exemple #52
0
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
Exemple #54
0
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)
Exemple #55
0
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 []
Exemple #56
0
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