def get_link(url, media, include_header=True): base_url = urlparse(media.get('originUrl')) base_url = base_url.scheme + '://' + base_url.netloc host_url = urlparse(url) r = Request() r.head(url) if include_header: return cors.get_link(r.get_request().history[0].headers['Location'], media) return r.get_request().history[0].headers['Location'], host_url.netloc
class Motphim: domain = "https://motphim.net" api = "https://api.motphim.net" def __init__(self): self.request = Request(session=True) # if helper.has_file_path('motphim.bin'): # with open(helper.get_file_path('motphim.bin')) as f: # self.request.set_session(pickle.load(f)) def updateSession(self): with open(helper.get_file_path('motphim.bin'), 'wb') as f: pickle.dump(self.request.get_request_session(), f) def getCategory(self): response = self.request.get(self.domain) return Category().get(response), Channel().get(response) def getChannel(self, channel, page=1): channel = channel.replace(self.domain, "") if page > 1: url = '%s%s/%d' % (self.domain, channel, page) else: url = '%s%s' % (self.domain, channel) response = self.request.get(url) return Channel().get(response) def getMovie(self, url): response = self.request.get("%s%s" % (self.domain, url)) url = Movie().get_movie_link(response) response = self.request.get("%s%s" % (self.domain, url)) # self.updateSession() return Movie().get(response) def getLink(self, movie): url = "%s%s" % (self.domain, movie['link']) response = self.request.get(url) print self.request.get_request().cookies # self.updateSession() return Movie().get_link(response, self.request, self.api, self.domain, url) def search(self, text, page=1): url = "%s/tim-kiem/%s/" % (self.domain, urllib.quote_plus(text)) response = self.request.get(url) return Channel().get(response)
def parse_link(self, url): r = re.search('getLinkSimple', url) if r: res = Request() res.get(url) url = res.get_request().url return url
def get_stream(url, header): if 'fvs.io' in url: request = Request() request.head(url, headers=header) req = request.get_request() if req.history: return req.url + "|%s" % urlencode(header) return url
def get_link(url, movie): base_url = urlparse(url) base_url = base_url.scheme + '://' + base_url.netloc request = Request() if 'embedplay' in url: return iframeembed.get_link(url, movie) if url.endswith('m3u8'): header = { 'Origin': 'http://www.vtv16.com', 'User-Agent': "Chrome/59.0.3071.115 Safari/537.36", 'Referer': movie.get('originUrl') } return url + "|%s" % urlencode(header), base_url # method 1 try: mid = re.search(r'\?id=(.*)', url).group(1) hosturl = '%s/getHost/%s' % (base_url, mid) response = Request().post(hosturl, headers={ 'origin': base_url, 'referer': url }) movie_url = base64.b64decode(response) header = { 'Origin': 'http://www.vtv16.com', 'User-Agent': "Chrome/59.0.3071.115 Safari/537.36", 'Referer': movie.get('originUrl') } return movie_url + "|%s" % urlencode(header), base_url except: pass # method 2 request.get(url) location = request.get_request().history[0].headers['Location'] base_url = urlparse(location) base_url = base_url.scheme + '://' + base_url.netloc # https://vip4.movie3s.net/public/dist/index.html?id=0676953662683db3977a8d30e4084414 mid = re.search(r'\?id=(.*)', location).group(1) return '%s/hls/%s/%s.playlist.m3u8' % (base_url, mid, mid), base_url # method 3 medias = json.loads(request.post('%s/vl/%s' % (base_url, mid))) if '720p' in medias: return create_stream(medias['720p'], base_url) return url, base_url
def get_link(url): req = Request() req.get(url, redirect=True) response = req.get_request() location = response.history[0].headers['Location'] id = re.search('id=(.*)', location).group(1) base_url = urlparse(location) base_url = base_url.scheme + '://' + base_url.netloc return '%s/hls/%s/%s.playlist.m3u8' % (base_url, id, id)
def parse_link(self, url): r = re.search('getLinkSimple', url) if r: res = Request() res.get(url) url = res.get_request().url r = re.search('128.199.198.106/video\?url=(.*)', url) if r: url = urllib.unquote(r.group(1)) return url
def parse_link(url): r = re.search('getLinkSimple', url) if r: res = Request() res.get(url) url = res.get_request().url r = re.search('128.199.198.106/video\?url=(.*)', url) if r: url = urllib.unquote(r.group(1)) if 'error' in url.encode('utf-8'): return None return url
def get_link(url): req = Request() req.get(url, redirect=True) response = req.get_request() location = response.history[0].headers['Location'] id = re.search('id=(.*)', location).group(1) # POST http://sl2.animehay.tv/vl/{id} response = json.loads( req.post('http://sl2.animehay.tv/vl/%s' % id, headers={'Referer': location})) if '720p' in response: create_playlist(response['720p']) return None
def get_link(url, media): request = Request() base_url = urlparse(media.get('originUrl')) base_url = base_url.scheme + '://' + base_url.netloc header = { 'Referer': url, 'User-Agent': "Chrome/59.0.3071.115 Safari/537.36", 'Origin': base_url } print "Apply iframeembed url %s" % url resp = request.get(url, headers=header) req = request.get_request() if req.history: r_url = req.url rurl = urlparse(r_url) rurl = rurl.scheme + '://' + rurl.netloc rid = re.search(r'id=(.*)', r_url).group(1) rurl = "{}/getLinkStreamMd5/{}".format(rurl, rid) sources = request.get(rurl, headers=header) sources = json.loads(sources) print 11111111111111111111111111 print sources else: sources = re.search(r'sources\s?[=:]\s?(\[.*?\])', resp, re.DOTALL) if sources: sources = "".join([s for s in sources.group(1).splitlines() if s.strip("\r\n")]) sources = re.sub(r'\s+', '', sources) sources = helper.convert_js_2_json(sources) print 2222222222222222222222222 print sources if sources: if len(sources) > 1: listitems = [] for i in sources: listitems.append("%s (%s)" % (i.get('label'), i.get('file'))) index = xbmcgui.Dialog().select("Select stream", listitems) if index == -1: return None, None else: return sources[index].get('file') + "|%s" % urlencode(header), sources[index].get('label') else: return sources[0].get('file') + "|%s" % urlencode(header), sources[0].get('label') return None, None
def parse_link(url): r = re.search('getLinkSimple', url) if r: res = Request() res.get(url) url = res.get_request().url r = re.search('128.199.198.106/video\?url=(.*)', url) if r: url = urllib.unquote(r.group(1)) if 'error' in url.encode('utf-8'): return None r = re.search(r'^/iframe.*?ref=(.*)', url) if r: base_url = r.group(1) base_url = urlparse(base_url) base_url = base_url.scheme + '://' + base_url.netloc url = base_url + url return url
def get_link(url, media): request = Request() base_url = urlparse(media.get('originUrl')) base_url = base_url.scheme + '://' + base_url.netloc header = { 'Referer': media.get('originUrl'), 'User-Agent': "Chrome/59.0.3071.115 Safari/537.36", 'Origin': base_url } resp = request.get(url, headers=header) req = request.get_request() if req.history: r_url = req.url rurl = urlparse(r_url) rurl = rurl.scheme + '://' + rurl.netloc rid = re.search(r'id=(.*)', r_url).group(1) rurl = "{}/getLinkStreamMd5/{}".format(rurl, rid) sources = request.get(rurl, headers=header) sources = json.loads(sources) else: sources = re.search(r'sources\s?[=:]\s?(\[.*?\])', resp) sources = json.loads(sources.group(1)) if sources: if len(sources) > 1: listitems = [] for i in sources: listitems.append("%s (%s)" % (i.get('label'), i.get('file'))) index = xbmcgui.Dialog().select("Select stream", listitems) if index == -1: return None, None else: return sources[index].get('file') + "|%s" % urlencode( header), sources[index].get('label') else: return sources[0].get( 'file') + "|%s" % urlencode(header), sources[0].get('label') return None, None
def get_link(self, response, originUrl): movie = { 'group': {}, 'episode': [], 'links': [], } sources = re.findall(r"<iframe.*?src=['|\"](http.*?)['|\"]\s?", response) if len(sources) > 0: for source in sources: if source in 'http://lb.animehay.tv/play/' and len(source) == len('http://lb.animehay.tv/play/'): continue movie['links'].append({ 'link': source, 'title': 'Link direct', 'type': 'mp4', 'resolve': False }) return movie sources = re.search(r'player.setup.*"sources":\s?(\[.*?\])', response, re.DOTALL) if sources: sources = json.loads(sources.group(1)) if sources and len(sources) > 0: for source in sources: movie['links'].append({ 'link': source['file'], 'title': 'Link %s' % source['label'], 'type': source['type'], 'resolve': False }) sources = re.search(r"<iframe.*?src=['|\"](.*animehay.tv/play.*?)['|\"]\s?", response) if sources: res = Request() if 'key=' in sources.group(1): vkey = re.search('key=(.*)', sources.group(1)).group(1) # http://vl.animehay.tv/initPlayer/f555b31844becd2e378d4978457014521af38ab8e66834ade1062b44827ef642 resp = res.post('http://vl.animehay.tv/initPlayer/%s' % vkey) resp = json.loads(resp) if 'availablePlayers' not in resp: return movie if 'p2pdrive' in resp['availablePlayers']: data = json.loads(res.post('http://vl.animehay.tv/getDataPlayer/%s/%s' % ('p2pdrive', vkey))) source = data['data'] if source: movie['links'].append({ 'link': source, 'title': 'Link p2pdrive', 'type': 'hls', 'resolve': False }) if 'gphoto' in resp['availablePlayers']: data = json.loads(res.post('http://vl.animehay.tv/getDataPlayer/%s/%s' % ('gphoto', vkey))) data = res.get(data['data']) sources = json.loads(re.search(r"var\s?sources\s?=\s?(\[.*?\])", data).group(1)) if sources and len(sources) > 0: for source in sources: movie['links'].append({ 'link': source['file'], 'title': 'Link %s' % source['label'], 'type': 'mp4', 'resolve': False }) if 'fembed' in resp['availablePlayers']: data = json.loads(res.post('http://vl.animehay.tv/getDataPlayer/%s/%s' % ('fembed', vkey))) data = res.get(data['data']) source = re.search(r"<iframe.*?src=['|\"](.*?)['|\"]\s?", data).group(1) if source: movie['links'].append({ 'link': source, 'title': 'Link fembed', 'type': 'mp4', 'resolve': False }) if 'okru' in resp['availablePlayers']: data = json.loads(res.post('http://vl.animehay.tv/getDataPlayer/%s/%s' % ('okru', vkey))) data = res.get(data['data']) source = re.search(r"<iframe.*?src=['|\"](.*?)['|\"]\s?", data).group(1) if source: movie['links'].append({ 'link': source, 'title': 'Link okru', 'type': 'mp4', 'resolve': False }) if 'openload' in resp['availablePlayers']: data = json.loads(res.post('http://vl.animehay.tv/getDataPlayer/%s/%s' % ('openload', vkey))) data = res.get(data['data']) source = re.search(r"<iframe.*?src=['|\"](.*?)['|\"]\s?", data).group(1) if source: movie['links'].append({ 'link': source, 'title': 'Link openload', 'type': 'mp4', 'resolve': False }) return movie else: res.get(sources.group(1)) link = res.get_request().url vkey = re.search('id=(.*)', link) if vkey: vkey = vkey.group(1) base_url = urlparse(link) base_url = base_url.scheme + '://' + base_url.netloc urlVideo = "{}/hls/{}/{}.playlist.m3u8".format(base_url, vkey, vkey) movie['links'].append({ 'link': urlVideo, 'title': 'Link p2pdrive', 'type': 'hls', 'resolve': False, 'originUrl': originUrl }) sources = re.search(r'player.setup\((.*?)\);', response, re.DOTALL) if sources: source = sources.group(1) source = re.search(r'"file":\s"(.*?)",', source) movie['links'].append({ 'link': source.group(1), 'title': 'Link direct', 'type': 'mp4', 'resolve': False }) # sources = re.search('<script rel="nofollow" src="(.*)" async>', response) # if sources: # response = Request().get(sources.group(1)) # if 'links:' in response: # sources = json.loads(re.search('links: (.*?),', response).group(1)) # for key, value in sources.items(): # if value: # label = key[1:].encode('utf-8') # movie['links'].append({ # 'link': value, # 'title': 'Link %s' % label, # 'type': label, # 'resolve': True # }) # # movie['links'] = sorted(movie['links'], key=lambda elem: int(elem['type']), reverse=True) return movie