Exemple #1
0
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
Exemple #2
0
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
Exemple #3
0
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
Exemple #4
0
    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()
Exemple #5
0
    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])
Exemple #6
0
 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
Exemple #7
0
    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])
Exemple #8
0
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
Exemple #9
0
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
Exemple #10
0
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
Exemple #11
0
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
Exemple #12
0
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=([^&]+)&amp').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
Exemple #13
0
                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'])
Exemple #14
0
    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
Exemple #15
0
    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