def find_videourls(foldername, foldertitle, folderimage, isdownload): top_url = 'http://beeg.com/' + foldername url_content = find_read_error(top_url) if url_content == 'HIBA': return direct_url = re.compile('\'([0-9]+p)\'[^\']+\'([^\']+)').findall( url_content) if direct_url: if isdownload == 'True': foldertitle = foldertitle[:41] + '.mp4' import download download.download_video(foldertitle, direct_url[0][1]) else: videoitem = xbmcgui.ListItem( label=foldertitle, thumbnailImage='http://img.beeg.com/236x177/' + foldername + '.jpg') videoitem.setInfo(type='Video', infoLabels={'Title': foldertitle}) xbmc.Player().play(direct_url[0][1], videoitem) else: just_removed('Video') return
def find_videourls(foldername, foldertitle, folderimage, isdownload): top_url = 'https://player.tnaflix.com/video/' + foldername url_content = find_read_error(top_url) if url_content == 'HIBA': return top_url2 = re.compile( 'flashvars\.config\s*=\s*escape\("([^"]*)"\);').findall(url_content) url_content = find_read_error(top_url2[0]) if url_content == 'HIBA': return direct_url = re.compile('<res>([^<]+)</res>[^>]+>([^<]+)').findall( url_content) if direct_url: if isdownload == 'True': foldertitle = foldertitle[:41] + '.mp4' import download download.download_video(foldertitle, direct_url[-1][1]) else: videoitem = xbmcgui.ListItem(label=foldertitle, thumbnailImage=folderimage) videoitem.setInfo(type='Video', infoLabels={'Title': foldertitle}) xbmc.Player().play(direct_url[-1][1], videoitem) else: just_removed('Video') return
def find_videourls(foldername, foldertitle, folderimage, isdownload): top_url = 'http://www.eporner.com' + foldername url_content = find_read_error(top_url) if url_content == 'HIBA': return """java_url = re.compile('(/config[^\']+)').findall(url_content) top_url = 'http://www.eporner.com' + java_url[0] url_content = find_read_error(top_url) if url_content == 'HIBA': return""" direct_url = re.compile('"(/dload/[^"]+)"').findall(url_content) """dmax = len(direct_url) - 1 if dmax > 1: dmax = 1""" if direct_url: if isdownload == 'True': foldertitle = foldertitle[:41] + '.mp4' import download download.download_video(foldertitle, direct_url[0]) else: videoitem = xbmcgui.ListItem(label=foldertitle, thumbnailImage=folderimage) videoitem.setInfo(type='Video', infoLabels={'Title': foldertitle}) xbmc.Player().play('http://www.eporner.com' + direct_url[0], videoitem) else: just_removed('Video') return
def download_cb(self, widget): """Lance les téléchargements.""" self.base.force_cancel = False nbDL = len(self.mdl_dl) pluriel = sf.get_pluriel(nbDL) widget.set_sensitive(False) self.btn_cancel.set_sensitive(True) while len(self.mdl_dl)> 0 and not self.base.force_cancel: #id de la première ligne emi_id = self.mdl_dl[0][0] #pgbar_text = self.mdl_dl[0][5] for page_info in self.base.arte7 : if page_info[0] == emi_id : #id match dl.download_video(self.base, page_info, self.mdl_dl[0]) #supprime ligne mdl_dl et réaffiche dans mdl_emi rootiter = self.mdl_emi.get_iter_first() sf.display_emi_iter(self.mdl_emi, rootiter, page_info[0]) #print (page_info) widget.set_sensitive(True) if self.base.force_cancel: sf.display_info(self, "Téléchargement(s) annulé(s)") # efface sélection self.base.downloads = [] self.btn_download.set_sensitive(len(self.mdl_dl)>0) self.btn_cancel.set_sensitive(False) self.base.cat = self.base.get_catalogue()
def interactive_download(self): """ choix interactif en CLI des émissions à télécharger """ idx_downloads = [] idx = 0 #récupère le plus long titre zMax = 0 for z in self.arte7: zMax = max(len(z[2]) + 2, zMax) iMin, iMax = 0, 0 flagTitre = True for line in self.arte7: if idx < len(self.arte7): if self.arte7[idx][1] != self.arte7[idx - 1][1]: print("\n Page " + line[1]) iMin = idx print( str(idx + 1).rjust(3), line[2].ljust(zMax, '.'), line[3], line[4], line[5]) if idx + 1 == len( self.arte7) or self.arte7[idx][1] != self.arte7[idx + 1][1]: flagOK = False iMax = idx while not flagOK: response = input( '\nChoix (séparés par des espaces ou ENTER): ') flagOK = self.interactive_check(iMin, iMax, response) for r in response.split(): idx_downloads.append(r) idx += 1 if len(idx_downloads) == 0: print("\nRien à faire ...") sys.exit(0) for d in idx_downloads: download = self.arte7[int(d) - 1] print(download[3], download[2], download[5]) print("\n== Téléchargements ==") for d in idx_downloads: idx = int(d) - 1 dl.download_video(self, self.arte7[idx])
def download(self, dl_type, path): """ :param dl_type: Specifies whether to download video or audio file :param path: Directory to save file to :return: Iff dl_type unspecified """ url = self.url_input.text() if dl_type == DownloadType.VIDEO: res, err = download_video(url, path) if err: alert = QMessageBox() alert.setText(err) alert.exec_() else: success = QMessageBox() success.setText(f"Successfully downloaded {res}.") success.exec_() elif dl_type == DownloadType.AUDIO: res, err = download_audio(url, path) if err: alert = QMessageBox() alert.setText(err) alert.exec_() else: success = QMessageBox() success.setText(f"Successfully downloaded {res}.") success.exec_() else: # The download type was not an expected value, throw an error. alert = QMessageBox() alert.setText( "Error downloading video data.\n" "Could not determine if video or audio should be downloaded.") alert.exec_() return
def interactive_download(self): """ choix interactif en CLI des émissions à télécharger """ idx_downloads = [] idx = 0 #récupère le plus long titre zMax = 0 for z in self.arte7: zMax = max(len(z[2]) +2, zMax) iMin, iMax = 0, 0 flagTitre = True for line in self.arte7: if idx < len(self.arte7) : if self.arte7[idx][1] != self.arte7[idx-1][1]: print ("\n Page " + line[1]) iMin = idx print (str(idx+1).rjust(3), line[2].ljust(zMax, '.'), line[3], line[4], line[5]) if idx+1 == len(self.arte7) or self.arte7[idx][1] != self.arte7[idx+1][1]: flagOK = False iMax= idx while not flagOK : response = input('\nChoix (séparés par des espaces ou ENTER): ') flagOK = self.interactive_check(iMin, iMax, response) for r in response.split(): idx_downloads.append(r) idx += 1 if len(idx_downloads) == 0: print ("\nRien à faire ...") sys.exit(0) for d in idx_downloads: download = self.arte7[int(d)-1] print (download[3], download[2], download[5]) print ("\n== Téléchargements ==") for d in idx_downloads: idx = int(d)-1 dl.download_video(self, self.arte7[idx])
def find_videourls(foldername, foldertitle, folderimage, isdownload): top_url = 'http://www.madthumbs.com' + foldername url_content = find_read_error(top_url) if url_content == 'HIBA': return direct_url = re.compile('<source src="([^"]+mp4[^"]+)"').findall(url_content) if direct_url: if isdownload == 'True': foldertitle = foldertitle[:41] + '.mp4' import download download.download_video(foldertitle, direct_url[0]) else: videoitem = xbmcgui.ListItem(label=foldertitle, thumbnailImage=folderimage) videoitem.setInfo(type='Video', infoLabels={'Title': foldertitle}) xbmc.Player().play(direct_url[0], videoitem) else: just_removed('Video') return
def find_videourls(foldername, foldertitle, folderimage, isdownload): top_url = foldername url_content = find_read_error(top_url) if url_content == 'HIBA': return direct_url = re.compile('(http://videos\.pornworms\.com/media/videos/mp4/[0-9]+\.mp4)').findall(url_content) if direct_url: if isdownload == 'True': foldertitle = foldertitle[:41] + '.mp4' import download download.download_video(foldertitle, direct_url[0]) else: videoitem = xbmcgui.ListItem(label=foldertitle, thumbnailImage=folderimage) videoitem.setInfo(type='Video', infoLabels={'Title': foldertitle}) xbmc.Player().play(direct_url[0], videoitem) else: just_removed('Video') return
def find_videourls(foldername, foldertitle, folderimage, isdownload): top_url = 'http://porndoe.com' + foldername url_content = find_read_error(top_url) if url_content == 'HIBA': return direct_url = re.compile('file:[^"]+"([^"]+)".+label:"([^"]+)').findall(url_content) if direct_url: max_res = len(direct_url) - 1 if isdownload == 'True': foldertitle = foldertitle[:41] + '.mp4' import download download.download_video(foldertitle, direct_url[max_res][0].replace('\\','')) else: videoitem = xbmcgui.ListItem(label=foldertitle, thumbnailImage=folderimage) videoitem.setInfo(type='Video', infoLabels={'Title': foldertitle}) xbmc.Player().play(direct_url[max_res][0].replace('\\',''), videoitem) else: just_removed('Video') return
def find_videourls(foldername, foldertitle, folderimage, isdownload): top_url = 'http://www.pornhub.com/view_video.php?viewkey=' + foldername url_content = find_read_error(top_url) if url_content == 'HIBA': return direct_url = re.compile( 'player_quality_[0-9a-zA-Z]+\s*=\s*\'([^\']+)').findall(url_content) if direct_url: if isdownload == 'True': foldertitle = foldertitle[:41] + '.mp4' import download download.download_video(foldertitle, direct_url[-1]) else: videoitem = xbmcgui.ListItem(label=foldertitle, thumbnailImage=folderimage) videoitem.setInfo(type='Video', infoLabels={'Title': foldertitle}) xbmc.Player().play(direct_url[-1], videoitem) else: just_removed('Video') return
def find_videourls(foldername, foldertitle, folderimage, isdownload): top_url = 'http://www.xvideos.com' + foldername url_content = find_read_error(top_url) if url_content == 'HIBA': return find_url = re.compile('flv_url=([^&]+)&').findall(url_content) direct_url = urllib.unquote(find_url[0]).decode('utf8') if direct_url: if isdownload == 'True': foldertitle = foldertitle[:41] + '.flv' import download download.download_video(foldertitle, direct_url) else: videoitem = xbmcgui.ListItem(label=foldertitle, thumbnailImage=folderimage) videoitem.setInfo(type='Video', infoLabels={'Title': foldertitle}) xbmc.Player().play(direct_url, videoitem) else: just_removed('Video') return
file_id_server = file_name_server.split(".")[0] video_t_cnt += 1 # filter by the duration if item['duration'] <= run_param.len_video_min or item['duration'] > run_param.len_video_max: print("Neglect for length: %s, name %s." % (url_video, video_name)) continue # filter by the index if file_id_server in crawled_index: print("Video has been crawled and neglected here.") continue print("Downloading: %s to %s." % (url_video, video_name)) cnt_video += 1 download.download_video(url_video, run_param.drive_base_path, video_name, func=print) # print type(item["title"]), item['title'] # update the index crawled_index[file_id_server] = True else: # this is posion holder, remove it continue # update the next cycle run_param.yidian_interval_cstart += video_t_cnt sys.stdout.flush() sleep(run_param.yidian_sleep_every_10) else: # other errors. print(res_json) print("Crawling failed for: %s." % res_json['reason'])
def __init__(self): # constantes self.default_config_name = '.artebox.cfg' self.pages_arte = [ 'actu-societe', 'series-fiction', 'cinema', 'arts-spectacles-classiques', 'culture-pop', 'decouverte', 'histoire', 'junior' ] # pour test une page self.pages_arte = [ 'actu-et-societe', 'arte-concert', 'cinema', 'series-et-fictions', 'culture-et-pop', 'sciences', 'voyages-et-decouvertes', 'histoire' ] #self.pages_arte = [ 'culture-et-pop'] self.url_arte7 = 'http://www.arte.tv/guide/fr/plus7/' self.url_arte7 = 'http://www.arte.tv/fr/videos/' # Initialize vars self.args = None self.has_gui = False self.GUI = None self.TITLE = __name__ + ' ' + __version__ self.params = {} self.abos = [] # abonnements + emissions passées avec -e self.cat = [] # catalogue self.arte7 = [] # emissions disponibles sur le site self.downloads = [] self.dl_running = False self.force_cancel = False self.args, self.has_gui = self.parse_command_line() # Listing des émissions, en console uniquement if self.args.LISTING or self.args.LISTING_PLUS: sf.listing_emissions_arte(self, True) sys.exit(0) self.params, self.abos = self.parse_config_file(self.args.CONFIG_FILE) self.check_params() self.cat = self.get_catalogue() if self.has_gui: self.GUI = ui.GUI_Main(self) if self.args.INTERACTIVE: self.arte7 = sf.listing_emissions_arte(self, True) self.interactive_download() sys.exit(0) # Infos dans terminal # print("== Options ==") # print("affichage interface : %s" % self.has_gui) print("\n== Paramètres ==") print("fichier configuration : %s" % self.args.CONFIG_FILE) print("dossier enregistrements : %s" % self.params['save_dir']) print("fichier catalogue : %s" % self.params['catalogue']) print(" %d lignes" % len(self.cat)) if self.args.ABOS: print("fichier abonnements : %s" % self.params['abonnements']) # Affichage emissions dans terminal if len(self.abos) > 0: for nom in self.abos: if nom == self.abos[0]: print("\némission(s) : - %s " % nom) else: print(" - %s" % nom) # GO GUI if self.has_gui: self.GUI.run() # GO CLI if not self.has_gui: if len(self.abos) == 0: print('\nRien à faire ...\nBye') sys.exit(0) # pour formatage affichage lg = 0 for abo in self.abos: lg = max(len(abo), lg) # récupère les urls des abonnements sf.display_info(self.GUI, "\nRécupère les liens des émissions ...") self.arte7 = sf.listing_emissions_arte(self, False) # création du tableau de téléchargements for abo in self.abos: nbLiens = 0 #nb de liens pour une émission donnée # pour les séries, on utilise * abo_serial = '' if abo.find("*") > -1: abo_serial = abo.split("*")[0] for page_info in self.arte7: # recherche dans nom émission if page_info[2].lower() == abo.lower(): self.downloads.append(page_info) nbLiens += 1 if abo_serial != '' and page_info[2].lower().find( abo_serial.lower()) > -1: self.downloads.append(page_info) nbLiens += 1 if self.args.SEARCH_IN_TITLE: # recherche dans sujet émission if page_info[5].lower() == abo.lower(): self.downloads.append(page_info) nbLiens += 1 if abo_serial != '' and page_info[5].lower().find( abo_serial.lower()) > -1: self.downloads.append(page_info) nbLiens += 1 # mise en forme affichage print('%s %d émission(s)' % (abo.ljust(lg + 4, "."), nbLiens)) print("\n %d émission(s) disponible(s)\n" % len(self.downloads)) for download in self.downloads: print(download[3], download[2], download[5]) if len(self.downloads) > 0: print("\n== Téléchargements ==") for download in self.downloads: dl.download_video(self, download) #args, params, arrCatalogue, dl ) return
def __init__(self): # constantes self.default_config_name = '.artebox.cfg' self.pages_arte = ['actu-societe' , 'series-fiction', 'cinema', 'arts-spectacles-classiques', 'culture-pop', 'decouverte', 'histoire', 'junior'] # pour test une page self.pages_arte = [ 'actu-et-societe' , 'arte-concert', 'cinema', 'series-et-fictions', 'culture-et-pop', 'sciences', 'voyages-et-decouvertes', 'histoire'] #self.pages_arte = [ 'culture-et-pop'] self.url_arte7 = 'http://www.arte.tv/guide/fr/plus7/' self.url_arte7 = 'http://www.arte.tv/fr/videos/' # Initialize vars self.args = None self.has_gui = False self.GUI = None self.TITLE = __name__ + ' ' + __version__ self.params = {} self.abos = [] # abonnements + emissions passées avec -e self.cat = [] # catalogue self.arte7 = [] # emissions disponibles sur le site self.downloads = [] self.dl_running = False self.force_cancel = False self.args, self.has_gui = self.parse_command_line() # Listing des émissions, en console uniquement if self.args.LISTING or self.args.LISTING_PLUS : sf.listing_emissions_arte(self, True) sys.exit(0) self.params, self.abos = self.parse_config_file(self.args.CONFIG_FILE) self.check_params() self.cat = self.get_catalogue() if self.has_gui : self.GUI = ui.GUI_Main(self) if self.args.INTERACTIVE : self.arte7 = sf.listing_emissions_arte(self, True) self.interactive_download() sys.exit(0) # Infos dans terminal # print("== Options ==") # print("affichage interface : %s" % self.has_gui) print("\n== Paramètres ==") print("fichier configuration : %s" % self.args.CONFIG_FILE) print("dossier enregistrements : %s" % self.params['save_dir']) print("fichier catalogue : %s" % self.params['catalogue']) print(" %d lignes" % len(self.cat)) if self.args.ABOS: print("fichier abonnements : %s" % self.params['abonnements']) # Affichage emissions dans terminal if len(self.abos)>0 : for nom in self.abos: if nom == self.abos[0]: print("\némission(s) : - %s " % nom) else: print(" - %s" % nom) # GO GUI if self.has_gui : self.GUI.run() # GO CLI if not self.has_gui: if len(self.abos) == 0 : print('\nRien à faire ...\nBye') sys.exit(0) # pour formatage affichage lg = 0 for abo in self.abos : lg = max(len(abo), lg) # récupère les urls des abonnements sf.display_info(self.GUI, "\nRécupère les liens des émissions ...") self.arte7 = sf.listing_emissions_arte(self,False) # création du tableau de téléchargements for abo in self.abos: nbLiens = 0 #nb de liens pour une émission donnée # pour les séries, on utilise * abo_serial = '' if abo.find("*") > -1: abo_serial = abo.split("*")[0] for page_info in self.arte7 : # recherche dans nom émission if page_info[2].lower() == abo.lower(): self.downloads.append( page_info ) nbLiens +=1 if abo_serial != '' and page_info[2].lower().find(abo_serial.lower())> -1 : self.downloads.append( page_info ) nbLiens +=1 if self.args.SEARCH_IN_TITLE : # recherche dans sujet émission if page_info[5].lower() == abo.lower(): self.downloads.append( page_info ) nbLiens +=1 if abo_serial != '' and page_info[5].lower().find(abo_serial.lower())> -1 : self.downloads.append( page_info ) nbLiens +=1 # mise en forme affichage print('%s %d émission(s)' % (abo.ljust(lg + 4, "."), nbLiens)) print("\n %d émission(s) disponible(s)\n" %len (self.downloads)) for download in self.downloads: print (download[3], download[2], download[5]) if len(self.downloads)>0: print ("\n== Téléchargements ==") for download in self.downloads: dl.download_video( self, download ) #args, params, arrCatalogue, dl ) return