Esempio n. 1
0
def getAllQuals(url, online=None):
	try:
		if online == None:
			if check(url) == False: 
				raise Exception('Video not available')
			
		page_data_string = client.request(url, httpsskip=True)
		video_urls, err = decode(page_data_string)
		
		if video_urls == None:
			raise Exception(err)
		
		video_url_a = []
		myheaders = {}
		myheaders['User-Agent'] = client.agent()
		myheaders['Referer'] = url
		
		for v in video_urls:
			try:
				fs = client.getFileSize(v, retry429=True)
				qs = qual_based_on_fs(fs)
				f_i = {'label': '%s' % qs, 'file':v, 'fs':fs, 'page':url}
				video_url_a.append(f_i)
			except:
				pass
		
		video_urlf = video_url_a
		return (video_urlf, '', None)
	except Exception as e:
		e = '{}'.format(e)
		return (None, e, None)
	def createMeta(self, url, provider, logo, quality, links, key, riptype, vidtype='Movie', lang='en', sub_url=None, txt='', file_ext = '.mp4', testing=False, poster=None, headers=None, page_url=None):
	
		files_ret = []
		orig_url = url
		
		if testing == True:
			links.append(url)
			return links
			
		if control.setting('Host-%s' % name) == False:
			log('INFO','createMeta','Host Disabled by User')
			return links
			
		try:
			urldata = client.b64encode(json.dumps('', encoding='utf-8'))
			params = client.b64encode(json.dumps('', encoding='utf-8'))
			
			online = check(url)
			vidurls, err, sub_url_t = getAllQuals(url, online)
	
			if sub_url_t != None:
				sub_url = sub_url_t
				
			seq = 0
			for vv in vidurls:
				durl = vv['page']
				vidurl, r1, r2 = resolve(durl, online)
				if vidurl != None and '.mp4' in vidurl:
					quality = vv['label']
					try:
						fs = client.getFileSize(vidurl)
						fs = int(fs)
					except:
						fs = 0

					try:
						log(type='INFO',method='createMeta', err=u'durl:%s ; res:%s; fs:%s' % (vidurl,quality,fs))
						files_ret.append({'source':self.name, 'maininfo':'', 'titleinfo':txt, 'quality':quality, 'vidtype':vidtype, 'rip':riptype, 'provider':provider, 'orig_url':orig_url, 'url':durl, 'durl':durl, 'urldata':urldata, 'params':params, 'logo':logo, 'online':online, 'allowsDownload':self.allowsDownload, 'resumeDownload':self.resumeDownload, 'allowsStreaming':self.allowsStreaming, 'key':key, 'enabled':True, 'fs':fs, 'file_ext':file_ext, 'ts':time.time(), 'lang':lang, 'poster':poster, 'sub_url':sub_url, 'subdomain':client.geturlhost(url), 'page_url':page_url, 'misc':{'player':'iplayer', 'gp':False}, 'seq':seq})
					except Exception as e:
						log(type='FAIL',method='createMeta', err=u'%s' % e)
						files_ret.append({'source':urlhost, 'maininfo':'', 'titleinfo':txt, 'quality':quality, 'vidtype':vidtype, 'rip':'Unknown' ,'provider':provider, 'orig_url':orig_url, 'url':durl, 'durl':durl, 'urldata':urldata, 'params':params, 'logo':logo, 'online':online, 'allowsDownload':self.allowsDownload, 'resumeDownload':self.resumeDownload, 'allowsStreaming':self.allowsStreaming, 'key':key, 'enabled':True, 'fs':fs, 'file_ext':file_ext, 'ts':time.time(), 'lang':lang, 'sub_url':sub_url, 'poster':poster, 'subdomain':client.geturlhost(url), 'page_url':page_url, 'misc':{'player':'iplayer', 'gp':False}, 'seq':seq})
					seq += 1
		except Exception as e:
			log('ERROR', 'createMeta', '%s' % e)
			
		for fr in files_ret:
			if fr != None and 'key' in fr.keys():
				control.setPartialSource(fr,self.name)
				links.append(fr)

		if len(files_ret) > 0:
			log('SUCCESS', 'createMeta', 'Successfully processed %s link >>> %s' % (provider, orig_url), dolog=self.init)
		else:
			log('FAIL', 'createMeta', 'Failed in processing %s link >>> %s' % (provider, orig_url), dolog=self.init)
			
		log('INFO', 'createMeta', 'Completed', dolog=self.init)
			
		return links
def decode(url, page_url):
    items = []
    err = ''
    try:
        id = re.compile('//.+?/(?:embed|v)/([0-9a-zA-Z-_]+)').findall(url)[0]
        headersx = {
            'Referer': 'https://www.xstreamcdn.com/v/%s' % id,
            'User-Agent': client.agent()
        }
        post_data = {'r': page_url, 'd': 'www.xstreamcdn.com'}
        api_url = 'https://www.xstreamcdn.com/api/source/%s' % id
        page_data = client.request(api_url,
                                   post=client.encodePostData(post_data),
                                   headers=headersx)

        j_data = json.loads(page_data)
        success = j_data['success']
        if success == False:
            try:
                msd = j_data['data']
            except:
                msd = ""
            raise Exception(
                'API returned error: %s | Data: %s | Return msg: %s' %
                (api_url, post_data, msd))
        else:
            srcs = j_data['data']
            for src in srcs:
                q = src['label']
                u = src['file']
                fs = client.getFileSize(u, retry429=True, headers=headersx)
                online = check(u)
                u1 = client.request(u, output='geturl')
                if u1 != None:
                    u = u1
                urldata = client.b64encode(json.dumps('', encoding='utf-8'))
                params = client.b64encode(json.dumps('', encoding='utf-8'))
                paramsx = {'headers': headersx}
                params = client.b64encode(json.dumps(paramsx,
                                                     encoding='utf-8'))

                items.append({
                    'quality': q,
                    'src': u,
                    'fs': fs,
                    'online': online,
                    'params': params,
                    'urldata': urldata
                })
        if len(items) == 0:
            raise Exception('No videos found !')
    except Exception as e:
        err = 'xtreamcdn Error: %s' % e

    return items, err
	def process(self, url, q, r, headers, page_url):
		items = []

		try:
			if 'vcstream.to' in url:
				id = re.compile('//.+?/(?:embed|f)/([0-9a-zA-Z-_]+)').findall(url)[0]
				headersx = {'Referer': url, 'User-Agent': client.agent()}
				page_data = client.request('https://vcstream.to/player?fid=%s&page=embed' % id, headers=headersx)
				srcs = re.findall(r'sources:.\[(.*?)\]', page_data)[0]
				srcs = srcs.replace('\\n','').replace('\\','')
				srcs = '''[%s]''' % srcs
				j_data = json.loads(srcs)
				for j in j_data:
					t = j['name']
					label = j['label']
					u = j['src']
					if label.lower() == 'raw':
						q = source_utils.check_sd_url(t)
					else:
						q = label
					r = source_utils.check_sd_url_rip(t)
					
					fs = client.getFileSize(u, retry429=True, headers=headers)
					if fs == None or int(fs) == 0:
						fs = client.getFileSize(u, retry429=True)
					q = qual_based_on_fs(q,fs)
					online = check(u)
					urldata = client.b64encode(json.dumps('', encoding='utf-8'))
					params = client.b64encode(json.dumps('', encoding='utf-8'))
					if headers != None:
						paramsx = {'headers':headers}
						params = client.b64encode(json.dumps(paramsx, encoding='utf-8'))
					
					items.append({'quality':q, 'riptype':r, 'src':u, 'fs':fs, 'online':online, 'params':params, 'urldata':urldata, 'allowsStreaming':True, 'allowsDownload':True})
					
			elif '3donlinefilms.com' in url or '3dmoviesfullhd.com' in url or 'freedocufilms.com' in url:
				data = urlparse.parse_qs(url)
				headers = {}
				
				if '3donlinefilms.com' in url:
					headers['Referer'] = 'http://3donlinefilms.com'
					l0 = 'https://3donlinefilms.com/update.php'
				elif 'freedocufilms.com' in url:
					headers['Referer'] = 'http://freedocufilms.com'
					l0 = 'https://freedocufilms.com/update.php'
				else:
					headers['Referer'] = 'http://3dmoviesfullhd.com'
					l0 = 'https://3dmoviesfullhd.com/update.php'
					
				page = data['page'][0]
				cook = client.request(page, output='cookie')
				post_data = {'file':data['src_file'][0]}
				
				cookie = '%s; zeroday=; visit=yes; jwplayer.qualityLabel=HD' % cook
				headers['Referer'] = page
				headers['User-Agent'] = client.agent()
				headers['Cookie'] = cookie
				
				u = data['file'][0]
				u = u.replace('//freedocufilms','//www.freedocufilms')
	
				try:
					ret = client.request(l0, post=client.encodePostData(post_data),headers=headers, output='extended', XHR=True, cookie=cookie)
				except Exception as e:
					log(type='FAIL', method='process', err='%s' % e, dolog=False, logToControl=False, doPrint=True)
				
				ret = client.request(u, output='headers', headers=headers, XHR=True)
				
				try:
					fs = int(re.findall(r'Content-Length:(.*)', str(ret), re.MULTILINE)[0].strip())
				except:
					fs = 0

				q = qual_based_on_fs(q,fs)
				online = False
				
				if int(fs) > 0:
					online = True
					
				urldata = client.b64encode(json.dumps('', encoding='utf-8'))
				paramsx = {'headers':headers}
				params = client.b64encode(json.dumps(paramsx, encoding='utf-8'))
				
				items.append({'quality':q, 'riptype':r, 'src':url, 'fs':fs, 'online':online, 'params':params, 'urldata':urldata, 'allowsStreaming':False, 'allowsDownload':True})
			elif 'cooltvseries.com' in url:
				urlx = client.request(url, output='geturl', headers=headers)
				urlx = '%s?e=file.mp4' % urlx
				fs = client.getFileSize(url, retry429=True, headers=headers)
				if fs == None or int(fs) == 0:
					fs = client.getFileSize(url, retry429=True)
				q = qual_based_on_fs(q,fs)
				online = check(url)
				urldata = client.b64encode(json.dumps('', encoding='utf-8'))
				params = client.b64encode(json.dumps('', encoding='utf-8'))
				if headers != None:
					paramsx = {'headers':headers}
					params = client.b64encode(json.dumps(paramsx, encoding='utf-8'))
				allowsDownload = True
				items.append({'quality':q, 'riptype':r, 'src':urlx, 'fs':fs, 'online':online, 'params':params, 'urldata':urldata, 'allowsStreaming':True, 'allowsDownload':allowsDownload})
			else:
				fs = client.getFileSize(url, retry429=True, headers=headers)
				if fs == None or int(fs) == 0:
					fs = client.getFileSize(url, retry429=True)
				q = qual_based_on_fs(q,fs)
				online = check(url)
				urldata = client.b64encode(json.dumps('', encoding='utf-8'))
				params = client.b64encode(json.dumps('', encoding='utf-8'))
				if headers != None:
					paramsx = {'headers':headers}
					params = client.b64encode(json.dumps(paramsx, encoding='utf-8'))
				allowsDownload = True
				if '.m3u8' in url:
					allowsDownload = False
				items.append({'quality':q, 'riptype':r, 'src':url, 'fs':fs, 'online':online, 'params':params, 'urldata':urldata, 'allowsStreaming':True, 'allowsDownload':allowsDownload})
					
		except Exception as e:
			log(type='ERROR',method='process', err=u'%s' % e)

		if len(items) == 0:
			fs = client.getFileSize(url, retry429=True, headers=headers)
			if fs == None or int(fs) == 0:
				fs = client.getFileSize(url, retry429=True)
			q = qual_based_on_fs(q,fs)
			online = check(url)
			urldata = client.b64encode(json.dumps('', encoding='utf-8'))
			params = client.b64encode(json.dumps('', encoding='utf-8'))
			if headers != None:
				paramsx = {'headers':headers}
				params = client.b64encode(json.dumps(paramsx, encoding='utf-8'))
			items.append({'quality':q, 'riptype':r, 'src':url, 'fs':fs, 'online':online, 'params':params, 'urldata':urldata, 'allowsStreaming':True, 'allowsDownload':True})
			
		return items
Esempio n. 5
0
	def createMeta(self, url, provider, logo, quality, links, key, riptype, vidtype='Movie', lang='en', sub_url=None, txt='', file_ext = '.mp4', testing=False, poster=None, headers=None, page_url=None):
	
		files_ret = []
		orig_url = url
		
		if testing == True:
			links.append(url)
			return links
			
		if control.setting('Host-%s' % name) == False:
			log('INFO','createMeta','Host Disabled by User')
			return links
	
		try:
			urldata = client.b64encode(json.dumps('', encoding='utf-8'))
			params = client.b64encode(json.dumps('', encoding='utf-8'))
			online = check(url)
			titleinfo = txt
			maininfo = ''
			fs = 0

			try:
				furl, fs, file_ext1, err = mega.get_mega_dl_link(url)
				if err != '':
					raise Exception(err)
				if file_ext1 != None:
					file_ext = file_ext1
				if file_ext not in ['.mp4','.mkv','.avi']:
					titleinfo = '%s%s' % (txt+' ' if len(txt)>0 else '', file_ext+' file')
				
				quality = qual_based_on_fs(quality, fs)
				
				if int(fs) == 0:
					fs = client.getFileSize(furl)
				urldata = createurldata(furl, quality)
			except Exception as e:
				online = False
				log('FAIL', 'createMeta-1', '%s - %s' % (url,e))
				maininfo = '*File Unavailable*'

			try:
				log(type='INFO',method='createMeta', err=u'durl:%s ; res:%s; fs:%s' % (url,quality,fs))
				files_ret.append({'source':self.name, 'maininfo':maininfo, 'titleinfo':titleinfo, 'quality':quality, 'vidtype':vidtype, 'rip':riptype, 'provider':provider, 'orig_url':orig_url, 'durl':url, 'url':url, 'urldata':urldata, 'params':params, 'logo':logo, 'allowsDownload':self.allowsDownload, 'resumeDownload':self.resumeDownload, 'allowsStreaming':self.allowsStreaming, 'online':online, 'key':key, 'enabled':True, 'fs':int(fs), 'file_ext':file_ext, 'ts':time.time(), 'lang':lang, 'sub_url':sub_url, 'poster':poster, 'subdomain':self.netloc[0], 'page_url':page_url, 'misc':{'player':'iplayer', 'gp':False}, 'seq':0})
			except Exception as e:
				log('ERROR', 'createMeta-2', '%s - %s' % (url,e))
				files_ret.append({'source':urlhost, 'maininfo':maininfo, 'titleinfo':titleinfo, 'quality':quality, 'vidtype':vidtype, 'rip':'Unknown' ,'provider':provider, 'orig_url':orig_url, 'durl':url, 'url':url, 'urldata':urldata, 'params':params, 'logo':logo, 'online':online, 'allowsDownload':self.allowsDownload, 'resumeDownload':self.resumeDownload, 'allowsStreaming':self.allowsStreaming, 'key':key, 'enabled':True, 'fs':int(fs), 'file_ext':file_ext, 'ts':time.time(), 'lang':lang, 'sub_url':sub_url, 'poster':poster, 'subdomain':self.netloc[0], 'page_url':page_url, 'misc':{'player':'iplayer', 'gp':False}, 'seq':0})
		except Exception as e:
			log('ERROR', 'createMeta', '%s' % e)
			
		for fr in files_ret:
			if fr != None and 'key' in fr.keys():
				control.setPartialSource(fr,self.name)
				links.append(fr)

		if len(files_ret) > 0:
			log('SUCCESS', 'createMeta', 'Successfully processed %s link >>> %s' % (provider, orig_url), dolog=self.init)
		else:
			log('FAIL', 'createMeta', 'Failed in processing %s link >>> %s' % (provider, orig_url), dolog=self.init)
			
		log('INFO', 'createMeta', 'Completed', dolog=self.init)
		
		return links
Esempio n. 6
0
    def createMeta(self,
                   url,
                   provider,
                   logo,
                   quality,
                   links,
                   key,
                   riptype,
                   showsplit=False,
                   useGetlinkAPI=True,
                   vidtype='Movie',
                   lang='en',
                   sub_url=None,
                   txt='',
                   file_ext='.mp4',
                   testing=False):

        orig_url = url

        if testing == True:
            links.append(url)
            return links

        if control.setting('Host-%s' % name) == False:
            log('INFO', 'createMeta', 'Host Disabled by User')
            return links

        if 'http' not in url and 'google.com/file' in url:
            url = 'https://drive.google.com/' + url.split('.com/')[1]

        httpsskip = False
        if control.setting('use_https_alt') != None and (
                control.setting('use_https_alt') == True
                or control.setting('use_https_alt') == False):
            httpsskip = control.setting('httpsskip')

        #print "createMeta1 : %s %s %s %s" % (url, provider, logo, quality)
        videoData, headers, content, cookie = getVideoMetaData(url, httpsskip)
        try:
            cookie += '; %s' % content['Set-Cookie']
            # cookie_s = cookie.split(';')
            # cookie_n = []
            # for cook in cookie_s:
            # cook = cook.strip()
            # if '=' in cook and cook not in cookie_n:
            # cookie_n.append(cook)
            # cookie = ('; '.join(x for x in sorted(cookie_n)))
            cookie_value = client.search_regex(r"DRIVE_STREAM=([^;]+);",
                                               cookie,
                                               'cookie val',
                                               group=1)
            domain = client.search_regex(r"https?://([^\/]+)",
                                         url,
                                         'host val',
                                         group=1)
            cookie = 'DRIVE_STREAM=%s; path=/; domain=.%s;' % (cookie_value,
                                                               domain)
        except:
            pass
        #print cookie

        #cookie = urllib.quote_plus(cookie).replace('+','%20').replace('%2F','/')
        # DRIVE_STREAM%3Dva1wsBbVn3A%3B%20path%3D/%3B%20domain%3D.docs.google.com%3B
        # DRIVE_STREAM%3DtV76KFL8a6k%3B+path%3D%2F%3B+domain%3D.docs.google.com%3B

        params = {'headers': headers, 'cookie': cookie}
        params = json.dumps(params, encoding='utf-8')
        params = client.b64encode(params)

        if client.geturlhost(url) in self.host[4]:
            pass  # skip for googleapis.com link
        else:
            quality = file_quality(url, quality, videoData)[0]
        isOnline = check(url,
                         videoData,
                         headers=headers,
                         cookie=cookie,
                         httpsskip=httpsskip)[0]
        type = rip_type(url, riptype)

        files = []

        #print "createMeta : %s %s %s %s" % (url, provider, logo, quality)
        titleinfo = txt
        if txt != '':
            titleinfo = txt
        ntitleinfo = titleinfo

        files_ret = []

        enabled = True
        try:
            #udata = urldata(url, videoData=videoData, usevideoData=True)
            if 'google.com/file' in url:
                idstr = '%s' % (url.split('/preview')[0].split('/edit')
                                [0].split('/view')[0])
                idstr = idstr.split('/')
                id = idstr[len(idstr) - 1]
                try:
                    durl, f_res, fs = getFileLink(id, httpsskip)
                except:
                    fs = 0
                    durl = None

                if durl != None:
                    files_ret.append({
                        'source': self.name,
                        'maininfo': '',
                        'titleinfo': ntitleinfo,
                        'quality': quality,
                        'vidtype': vidtype,
                        'rip': type,
                        'provider': provider,
                        'url': durl,
                        'durl': durl,
                        'urldata': createurldata(durl, quality),
                        'params': params,
                        'logo': logo,
                        'online': isOnline,
                        'allowsDownload': self.allowsDownload,
                        'allowsStreaming': self.allowsStreaming,
                        'key': key,
                        'enabled': enabled,
                        'fs': int(fs),
                        'file_ext': file_ext,
                        'ts': time.time(),
                        'lang': lang,
                        'sub_url': sub_url,
                        'subdomain': client.geturlhost(durl),
                        'misc': {
                            'player': 'iplayer',
                            'gp': False
                        }
                    })
                else:
                    fs = client.getFileSize(url, retry429=True)

                files_ret.append({
                    'source': self.name,
                    'maininfo': '',
                    'titleinfo': ntitleinfo,
                    'quality': quality,
                    'vidtype': vidtype,
                    'rip': type,
                    'provider': provider,
                    'url': url,
                    'durl': url,
                    'urldata': urldata('', ''),
                    'params': params,
                    'logo': logo,
                    'online': isOnline,
                    'allowsDownload': self.allowsDownload,
                    'allowsStreaming': self.allowsStreaming,
                    'key': key,
                    'enabled': enabled,
                    'fs': int(fs),
                    'file_ext': file_ext,
                    'ts': time.time(),
                    'lang': lang,
                    'sub_url': sub_url,
                    'subdomain': client.geturlhost(url),
                    'misc': {
                        'player': 'eplayer',
                        'gp': False
                    }
                })
            else:
                fs = client.getFileSize(url, retry429=True)

                files_ret.append({
                    'source': self.name,
                    'maininfo': '',
                    'titleinfo': ntitleinfo,
                    'quality': quality,
                    'vidtype': vidtype,
                    'rip': type,
                    'provider': provider,
                    'url': url,
                    'durl': url,
                    'urldata': urldata('', ''),
                    'params': params,
                    'logo': logo,
                    'online': isOnline,
                    'allowsDownload': self.allowsDownload,
                    'allowsStreaming': self.allowsStreaming,
                    'key': key,
                    'enabled': enabled,
                    'fs': int(fs),
                    'file_ext': file_ext,
                    'ts': time.time(),
                    'lang': lang,
                    'sub_url': sub_url,
                    'subdomain': client.geturlhost(url),
                    'misc': {
                        'player': 'iplayer',
                        'gp': False
                    }
                })
        except Exception as e:
            log(type='ERROR', method='createMeta-1', err=u'%s' % e)

        isGetlinkWork = False
        try:
            if useGetlinkAPI == True and isOnline and 'google.com/file' in url and self.useGetLinkAPI:
                client.setIP4()
                ntitleinfo = titleinfo + ' | (via GetLink API) '
                files = urldata(url)
                files = client.b64decode(files)
                filesJ = json.loads(files)
                if len(filesJ) > 0:
                    for mfile in filesJ:
                        mfile = json.loads(mfile)
                        #print "mfile --- : %s" % mfile
                        furl = mfile['src']
                        f2url = client.request(furl,
                                               followredirect=True,
                                               output='geturl')
                        if 'http' in f2url:
                            furl = f2url
                            #print "furl --- : %s" % furl
                            quality = file_quality(furl, mfile['res'],
                                                   videoData)[0]
                            isOnlineT = check(furl,
                                              videoData,
                                              headers=headers,
                                              cookie=cookie)[0]
                            type = rip_type(furl, riptype)
                        else:
                            isOnlineT = 'Unknown'

                        p = {'headers': '', 'cookie': ''}
                        p = json.dumps(p, encoding='utf-8')
                        p = client.b64encode(p)

                        fs = client.getFileSize(furl, retry429=True)

                        files_ret.append({
                            'source': self.name,
                            'maininfo': '',
                            'titleinfo': ntitleinfo,
                            'quality': quality,
                            'vidtype': vidtype,
                            'rip': type,
                            'provider': provider,
                            'url': furl,
                            'durl': furl,
                            'urldata': urldata('', ''),
                            'params': p,
                            'logo': logo,
                            'online': isOnlineT,
                            'allowsDownload': self.allowsDownload,
                            'allowsStreaming': self.allowsStreaming,
                            'key': key,
                            'enabled': enabled,
                            'fs': int(fs),
                            'file_ext': file_ext,
                            'ts': time.time(),
                            'lang': lang,
                            'sub_url': sub_url,
                            'subdomain': client.geturlhost(furl),
                            'misc': {
                                'player': 'iplayer',
                                'gp': False
                            }
                        })
                        isGetlinkWork = True
                client.setIP6()
        except Exception as e:
            log(type='ERROR', method='createMeta-2', err=u'%s' % e)

        try:
            if showsplit == True and isOnline and isGetlinkWork == False:
                # currently suffers from transcoding failure on most clients
                ntitleinfo = titleinfo + ' | *limited support* '
                files = get_files(url, videoData)[0]
                for furl in files:
                    quality = file_quality(furl, quality, videoData)[0]
                    type = rip_type(furl, riptype)

                    furl = urllib.unquote(furl).decode('utf8')
                    furl = furl.decode('unicode_escape')

                    isOnlineT = check(furl,
                                      videoData,
                                      headers=headers,
                                      cookie=cookie)[0]

                    fs = client.getFileSize(furl, retry429=True)

                    files_ret.append({
                        'source': self.name,
                        'maininfo': '',
                        'titleinfo': ntitleinfo,
                        'quality': quality,
                        'vidtype': vidtype,
                        'rip': type,
                        'provider': provider,
                        'url': furl,
                        'durl': furl,
                        'urldata': createurldata(furl, quality),
                        'params': params,
                        'logo': logo,
                        'online': isOnlineT,
                        'allowsDownload': self.allowsDownload,
                        'allowsStreaming': self.allowsStreaming,
                        'key': key,
                        'enabled': enabled,
                        'fs': int(fs),
                        'file_ext': file_ext,
                        'ts': time.time(),
                        'lang': lang,
                        'sub_url': sub_url,
                        'subdomain': client.geturlhost(furl),
                        'misc': {
                            'player': 'iplayer',
                            'gp': False
                        }
                    })
        except Exception as e:
            log(type='ERROR', method='createMeta-3', err=u'%s' % e)

        for fr in files_ret:
            fr['resumeDownload'] = self.resumeDownload
            links.append(fr)

        log('INFO',
            'createMeta',
            'Successfully processed %s link >>> %s' % (provider, orig_url),
            dolog=self.init)
        return links
Esempio n. 7
0
def check(url, videoData=None, skipPageCheck=False, usePairing=True, embedpage=False, headers=None, cookie=None, session=None):
	try:
		retmsg = ''
		fs = 0
		result = None
		sub_url = None
		
		#ifstream = re.search('//.+?/(?:embed|f)/([0-9a-zA-Z-_]+)',(url)[0])
		#if ifstream:
		#	return True
		
		if videoData != None:
			if 'File not found' in videoData or 'deleted by the owner' in videoData or 'Sorry!' in videoData:
				log(type='FAIL', method='check', err='File deleted by the owner or was removed. : %s' % url)
				return (False, videoData, 'File not found', fs, None, sub_url)

		if '/stream/' not in url and '.oloadcdn.' not in url:
			id = re.compile('//.+?/(?:embed|f)/([0-9a-zA-Z-_]+)').findall(url)[0]
			url = 'https://openload.co/embed/%s/' % id

			if skipPageCheck == False:
				openloadhdrx = openloadhdr
				if headers != None:
					for key in headers.keys():
						openloadhdrx[key] = headers[key]

				videoData = client.request(url, headers=openloadhdrx, cookie=cookie)
				if videoData == None:
					log(type='FAIL', method='check', err='File deleted by the owner or was removed. : %s' % url)
					return (False, videoData, 'File not found', fs, None, sub_url)
				if 'File not found' in videoData or 'deleted by the owner' in videoData or 'Sorry!' in videoData: 
					log(type='FAIL', method='check', err='File deleted by the owner or was removed. : %s' % url)
					return (False, videoData, 'File not found', fs, None, sub_url)
					
				try:
					fs = re.findall(r'window.filesize=(.*?);', videoData)[0]
				except:
					pass
					
				if USE_OPENLOAD_SUB == True:
					try:
						sub_url_t = re.findall(r'suburl = \"(.*?)\";', videoData)[0]
						sub_url_t = sub_url_t.replace('\\','')
						sub_url_t = client.request(sub_url_t, headers=openloadhdrx, cookie=cookie)
						if len(sub_url_t) > 50:
							sub_url = sub_url_t
					except:
						sub_url = None
					
				try:
					if fs == 0:
						vidData = client.request('https://openload.co/f/%s/' % id, headers=openloadhdr, cookie=cookie)
						#print vidData
						respD = client.parseDOM(vidData, 'div', attrs={'class': 'content-text'})[0]
						#print respD
						fs = re.findall(r':\ (.*?)\ ', respD)[0]
						if 'gb' in respD.lower():
							fs = int(float(fs.strip()) * (1024*1024*1024))
						else:
							fs = int(float(fs.strip()) * (1024*1024))
				except:
					pass
					
				if embedpage == True:
					return (True, videoData, retmsg, fs, None, sub_url)

			# if openloadS is success then the stream would be available
			result, videoData, retmsg = openloadS(url, videoData, usePairing=usePairing, session=session)
		else:
			result = url
			try:
				fs = client.getFileSize(url)
			except:
				fs = 0

		if result == None:
			if retmsg != '':
				log(type='FAIL', method='check', err='%s : %s' % (retmsg, url))
			return (False, videoData, retmsg, fs, result, sub_url)
		
		if fs > 0:
			return (True, videoData, retmsg, fs, result, sub_url)
		else:
			return (checkVidPresence(result), videoData, retmsg, fs, result, sub_url)
	except:
		return (False, videoData, retmsg, fs, result, sub_url)
Esempio n. 8
0
    def createMeta(self,
                   url,
                   provider,
                   logo,
                   quality,
                   links,
                   key,
                   riptype,
                   vidtype='Movie',
                   lang='en',
                   sub_url=None,
                   txt='',
                   file_ext='.mp4',
                   testing=False,
                   poster=None,
                   headers=None):

        if testing == True:
            links.append(url)
            return links

        if control.setting('Host-%s' % name) == False:
            log('INFO', 'createMeta', 'Host Disabled by User')
            return links

        urldata = client.b64encode(json.dumps('', encoding='utf-8'))
        params = client.b64encode(json.dumps('', encoding='utf-8'))
        orig_url = url
        online = check(url)
        files_ret = []
        titleinfo = txt
        fs = 0

        try:
            furl, fs, file_ext = mega.get_mega_dl_link(url)

            quality = qual_based_on_fs(quality, fs)

            if int(fs) == 0:
                fs = client.getFileSize(furl)
            urldata = createurldata(furl, quality)
        except Exception as e:
            online = False
            log('FAIL', 'createMeta-1', '%s - %s' % (url, e))

        try:
            files_ret.append({
                'source': self.name,
                'maininfo': '',
                'titleinfo': titleinfo,
                'quality': quality,
                'vidtype': vidtype,
                'rip': riptype,
                'provider': provider,
                'durl': url,
                'url': url,
                'urldata': urldata,
                'params': params,
                'logo': logo,
                'allowsDownload': self.allowsDownload,
                'resumeDownload': self.resumeDownload,
                'allowsStreaming': self.allowsStreaming,
                'online': online,
                'key': key,
                'enabled': True,
                'fs': int(fs),
                'file_ext': file_ext,
                'ts': time.time(),
                'lang': lang,
                'sub_url': sub_url,
                'poster': poster,
                'subdomain': self.netloc[0],
                'misc': {
                    'player': 'iplayer',
                    'gp': False
                }
            })
        except Exception as e:
            log('ERROR', 'createMeta-2', '%s - %s' % (url, e))
            files_ret.append({
                'source': urlhost,
                'maininfo': '',
                'titleinfo': titleinfo,
                'quality': quality,
                'vidtype': vidtype,
                'rip': 'Unknown',
                'provider': provider,
                'durl': url,
                'url': url,
                'urldata': urldata,
                'params': params,
                'logo': logo,
                'online': online,
                'allowsDownload': self.allowsDownload,
                'resumeDownload': self.resumeDownload,
                'allowsStreaming': self.allowsStreaming,
                'key': key,
                'enabled': True,
                'fs': int(fs),
                'file_ext': file_ext,
                'ts': time.time(),
                'lang': lang,
                'sub_url': sub_url,
                'poster': poster,
                'subdomain': self.netloc[0],
                'misc': {
                    'player': 'iplayer',
                    'gp': False
                }
            })

        for fr in files_ret:
            links.append(fr)

        log('INFO',
            'createMeta',
            'Successfully processed %s link >>> %s' % (provider, orig_url),
            dolog=self.init)
        return links
    def createMeta(self,
                   url,
                   provider,
                   logo,
                   quality,
                   links,
                   key,
                   riptype,
                   vidtype='Movie',
                   lang='en',
                   sub_url=None,
                   txt='',
                   file_ext='.mp4',
                   testing=False,
                   poster=None,
                   headers=None,
                   page_url=None):

        files_ret = []
        orig_url = url

        if testing == True:
            links.append(url)
            return links

        if control.setting('Host-%s' % name) == False:
            log('INFO', 'createMeta', 'Host Disabled by User')
            return links

        try:
            if 'vidcloud.icu/load' in url:
                raise Exception('No mp4 Video found')
            elif 'vidcloud.icu/download' in url:
                headersx = {'Referer': url, 'User-Agent': client.agent()}
                page_data, head, ret, cookie = client.request(
                    url, output='extended', headers=headersx)
                try:
                    cookie = re.findall(r'Set-Cookie:(.*)', str(ret),
                                        re.MULTILINE)[0].strip()
                except:
                    pass
                headersx['Cookie'] = cookie
                mp4_vids = re.findall(r'\"(http.*?.mp4.*?)\"', page_data)
                items = []
                for u in mp4_vids:
                    u = u.strip().replace(' ', '%20').replace('&', '&')
                    fs = client.getFileSize(u, headers=headersx)
                    q = qual_based_on_fs(quality, fs)
                    online = check(u, headers=headersx)
                    urldata = client.b64encode(json.dumps('',
                                                          encoding='utf-8'))
                    params = client.b64encode(json.dumps('', encoding='utf-8'))
                    if headersx != None:
                        paramsx = {'headers': headers}
                        params = client.b64encode(
                            json.dumps(paramsx, encoding='utf-8'))

                    items.append({
                        'quality': q,
                        'riptype': riptype,
                        'src': u,
                        'fs': fs,
                        'online': online,
                        'params': params,
                        'urldata': urldata,
                        'allowsStreaming': False
                    })

                seq = 0
                for item in items:

                    durl = url
                    vidurl = item['src']
                    allowsStreaming = item['allowsStreaming']
                    quality = item['quality']
                    riptype = item['riptype']
                    fs = item['fs']
                    online = item['online']
                    params = item['params']
                    urldata = item['urldata']

                    try:
                        log(type='INFO',
                            method='createMeta',
                            err=u'durl:%s ; res:%s; fs:%s' %
                            (durl, quality, fs))
                        files_ret.append({
                            'source': self.name,
                            'maininfo': txt,
                            'titleinfo': '',
                            'quality': quality,
                            'vidtype': vidtype,
                            'rip': riptype,
                            'provider': provider,
                            'orig_url': orig_url,
                            'url': vidurl,
                            'durl': durl,
                            'urldata': urldata,
                            'params': params,
                            'logo': logo,
                            'online': online,
                            'allowsDownload': self.allowsDownload,
                            'resumeDownload': self.resumeDownload,
                            'allowsStreaming': allowsStreaming,
                            'key': key,
                            'enabled': True,
                            'fs': int(fs),
                            'file_ext': file_ext,
                            'ts': time.time(),
                            'lang': lang,
                            'sub_url': sub_url,
                            'poster': poster,
                            'subdomain': client.geturlhost(url),
                            'page_url': page_url,
                            'misc': {
                                'player': 'iplayer',
                                'gp': True
                            },
                            'seq': seq
                        })
                    except Exception as e:
                        log(type='ERROR', method='createMeta', err=u'%s' % e)
                        files_ret.append({
                            'source': urlhost,
                            'maininfo': txt,
                            'titleinfo': '',
                            'quality': quality,
                            'vidtype': vidtype,
                            'rip': 'Unknown',
                            'provider': provider,
                            'orig_url': orig_url,
                            'url': vidurl,
                            'durl': durl,
                            'urldata': urldata,
                            'params': params,
                            'logo': logo,
                            'online': online,
                            'allowsDownload': self.allowsDownload,
                            'resumeDownload': self.resumeDownload,
                            'allowsStreaming': allowsStreaming,
                            'key': key,
                            'enabled': True,
                            'fs': int(fs),
                            'file_ext': file_ext,
                            'ts': time.time(),
                            'lang': lang,
                            'sub_url': sub_url,
                            'poster': poster,
                            'subdomain': client.geturlhost(url),
                            'page_url': page_url,
                            'misc': {
                                'player': 'iplayer',
                                'gp': True
                            },
                            'seq': seq
                        })
                    seq += 1

            elif url != None:
                online = True
                result = client.request(orig_url, httpsskip=True)
                if 'Sorry, this video reuploading' in result:
                    online = False

                if online == True:
                    vids = client.parseDOM(
                        result, 'ul', attrs={'class': 'list-server-items'})[0]
                    vids = client.parseDOM(vids,
                                           'li',
                                           attrs={'class': 'linkserver'},
                                           ret='data-video')
                    vids = list(set(vids))
                    for video_url in vids:
                        video_urlx = video_url
                        if 'http' not in video_urlx:
                            video_urlx = 'http:' + video_urlx
                        if video_urlx != None and 'vidcloud.icu/load' not in video_urlx:
                            log(type='INFO',
                                method='createMeta',
                                err=u'url:%s requires additional processing' %
                                video_urlx)
                            video_url1 = '%s' % client.request(
                                video_urlx,
                                followredirect=True,
                                httpsskip=True,
                                output='geturl')
                            if video_url1 != None and 'http' in video_url1 and 'vidcloud.icu' not in video_url1:
                                try:
                                    files_ret = resolvers.createMeta(
                                        video_url1,
                                        provider,
                                        logo,
                                        quality,
                                        files_ret,
                                        key,
                                        poster=poster,
                                        riptype=riptype,
                                        vidtype=vidtype,
                                        sub_url=sub_url,
                                        testing=testing,
                                        headers=headers,
                                        page_url=page_url)
                                except Exception as e:
                                    log(type='ERROR',
                                        method='createMeta',
                                        err=u'%s' % e)
                        elif video_urlx != None and 'vidcloud.icu/load' in video_urlx:
                            log(type='INFO',
                                method='createMeta',
                                err=u'url:%s requires additional processing' %
                                video_urlx)
                            id = re.findall(r'id=(.*?)&', video_urlx)[0]
                            u = 'https://vidcloud.icu/download?id=%s' % id
                            res = client.request(u)
                            mp4_vids = re.findall(r'http.*?mp4', res)
                            if len(mp4_vids) > 0:
                                try:
                                    files_ret = resolvers.createMeta(
                                        u,
                                        provider,
                                        logo,
                                        quality,
                                        files_ret,
                                        key,
                                        poster=poster,
                                        riptype=riptype,
                                        vidtype=vidtype,
                                        sub_url=sub_url,
                                        testing=testing,
                                        headers=headers,
                                        page_url=page_url,
                                        urlhost='vidcloud.icu')
                                except Exception as e:
                                    log(type='ERROR',
                                        method='createMeta',
                                        err=u'%s' % e)
                            elif len(mp4_vids) == 0 and video_url == vids[
                                    len(vids) - 1] and len(files_ret) == 0:
                                raise Exception('No mp4 Video found')
        except Exception as e:
            log('FAIL', 'createMeta', '%s' % e)

        for fr in files_ret:
            if fr != None and 'key' in fr.keys():
                control.setPartialSource(fr, self.name)
                links.append(fr)

        if len(files_ret) > 0:
            log('SUCCESS',
                'createMeta',
                'Successfully processed %s link >>> %s' % (provider, orig_url),
                dolog=self.init)
        else:
            log('FAIL',
                'createMeta',
                'Failed in processing %s link >>> %s' % (provider, orig_url),
                dolog=self.init)

        log('INFO', 'createMeta', 'Completed', dolog=self.init)

        return links
Esempio n. 10
0
    def createMeta(self,
                   url,
                   provider,
                   logo,
                   quality,
                   links,
                   key,
                   riptype,
                   vidtype='Movie',
                   lang='en',
                   sub_url=None,
                   txt='',
                   file_ext='.mp4',
                   testing=False,
                   poster=None,
                   headers=None):

        if testing == True:
            links.append(url)
            return links

        if control.setting('Host-%s' % name) == False:
            log('INFO', 'createMeta', 'Host Disabled by User')
            return links

        orig_url = url
        ua = client.randomagent()
        headers = {'Referer': 'https://vidnode.net/', 'User-Agent': 'Mozilla'}

        urldata = client.b64encode(json.dumps('', encoding='utf-8'))
        params = {'headers': headers, 'cookie': None}
        params = json.dumps(params, encoding='utf-8')
        params = client.b64encode(params)

        online = check(url, headers=headers)
        vidurls, err, sub_url_t = getAllQuals(url, online)

        if vidurls == None:
            log(type='ERROR', method='createMeta-1', err=u'%s' % err)
            return links

        if sub_url_t != None:
            sub_url = sub_url_t

        files_ret = []

        #print vidurls

        for vv in vidurls:
            durl = vv['page']
            vidurl, r1, r2 = resolve(durl, online)

            print vidurl

            if vidurl == None:
                log(type='ERROR', method='createMeta', err=u'%s' % r1)
            else:
                quality = vv['label']
                try:
                    online = check(vidurl, headers=headers)
                    fs = client.getFileSize(vidurl)
                    fs = int(fs)
                except:
                    fs = 0

                try:
                    log(type='INFO',
                        method='createMeta',
                        err=u'durl:%s ; res:%s; fs:%s' % (vidurl, quality, fs))
                    files_ret.append({
                        'source': self.name,
                        'maininfo': '',
                        'titleinfo': txt,
                        'quality': quality,
                        'vidtype': vidtype,
                        'rip': riptype,
                        'provider': provider,
                        'url': durl,
                        'durl': durl,
                        'urldata': urldata,
                        'params': params,
                        'logo': logo,
                        'online': online,
                        'allowsDownload': self.allowsDownload,
                        'resumeDownload': self.resumeDownload,
                        'allowsStreaming': self.allowsStreaming,
                        'key': key,
                        'enabled': True,
                        'fs': fs,
                        'file_ext': file_ext,
                        'ts': time.time(),
                        'lang': lang,
                        'poster': poster,
                        'sub_url': sub_url,
                        'subdomain': client.geturlhost(url),
                        'misc': {
                            'player': 'iplayer',
                            'gp': False
                        }
                    })
                except Exception as e:
                    log(type='ERROR', method='createMeta', err=u'%s' % e)
                    files_ret.append({
                        'source': urlhost,
                        'maininfo': '',
                        'titleinfo': txt,
                        'quality': quality,
                        'vidtype': vidtype,
                        'rip': 'Unknown',
                        'provider': provider,
                        'url': durl,
                        'durl': durl,
                        'urldata': urldata,
                        'params': params,
                        'logo': logo,
                        'online': online,
                        'allowsDownload': self.allowsDownload,
                        'resumeDownload': self.resumeDownload,
                        'allowsStreaming': self.allowsStreaming,
                        'key': key,
                        'enabled': True,
                        'fs': fs,
                        'file_ext': file_ext,
                        'ts': time.time(),
                        'lang': lang,
                        'sub_url': sub_url,
                        'poster': poster,
                        'subdomain': client.geturlhost(url),
                        'misc': {
                            'player': 'iplayer',
                            'gp': False
                        }
                    })

        for fr in files_ret:
            links.append(fr)

        log('INFO',
            'createMeta',
            'Successfully processed %s link >>> %s' % (provider, orig_url),
            dolog=self.init)
        return links
Esempio n. 11
0
    def createMeta(self,
                   url,
                   provider,
                   logo,
                   quality,
                   links,
                   key,
                   riptype,
                   vidtype='Movie',
                   lang='en',
                   sub_url=None,
                   txt='',
                   file_ext='.mp4',
                   testing=False):

        if testing == True:
            links.append(url)
            return links

        if control.setting('Host-%s' % name) == False:
            log('INFO', 'createMeta', 'Host Disabled by User')
            return links

        orig_url = url

        urldata = client.b64encode(json.dumps('', encoding='utf-8'))
        params = client.b64encode(json.dumps('', encoding='utf-8'))

        online = check(url)
        files_ret = []
        fs = client.getFileSize(url, retry429=True)

        try:
            files_ret.append({
                'source': self.name,
                'maininfo': txt,
                'titleinfo': '',
                'quality': quality,
                'vidtype': vidtype,
                'rip': riptype,
                'provider': provider,
                'url': url,
                'durl': url,
                'urldata': urldata,
                'params': params,
                'logo': logo,
                'online': online,
                'allowsDownload': self.allowsDownload,
                'resumeDownload': self.resumeDownload,
                'allowsStreaming': self.allowsStreaming,
                'key': key,
                'enabled': True,
                'fs': int(fs),
                'file_ext': file_ext,
                'ts': time.time(),
                'lang': lang,
                'sub_url': sub_url,
                'subdomain': client.geturlhost(url),
                'misc': {
                    'player': 'eplayer',
                    'gp': False
                }
            })
        except Exception as e:
            log(type='ERROR', method='createMeta', err=u'%s' % e)
            files_ret.append({
                'source': urlhost,
                'maininfo': txt,
                'titleinfo': '',
                'quality': quality,
                'vidtype': vidtype,
                'rip': 'Unknown',
                'provider': provider,
                'url': url,
                'durl': url,
                'urldata': urldata,
                'params': params,
                'logo': logo,
                'online': online,
                'allowsDownload': self.allowsDownload,
                'resumeDownload': self.resumeDownload,
                'allowsStreaming': self.allowsStreaming,
                'key': key,
                'enabled': True,
                'fs': int(fs),
                'file_ext': file_ext,
                'ts': time.time(),
                'lang': lang,
                'sub_url': sub_url,
                'subdomain': client.geturlhost(url),
                'misc': {
                    'player': 'eplayer',
                    'gp': False
                }
            })

        for fr in files_ret:
            links.append(fr)

        log('INFO',
            'createMeta',
            'Successfully processed %s link >>> %s' % (provider, orig_url),
            dolog=self.init)
        return links