Exemple #1
0
def download_songs(song_list):
    spk = SongsPK()
    total_songs = len(song_list)
    songs_download_count = 0
    songs_not_downloaded = []

    for song in song_list:
        try:
            parsed_song = parse(song)
            if len(parsed_song) == 0:
                songs_not_downloaded.append(song)
                continue
            getVars = {'q': parsed_song}
            url = search_url + urllib.parse.urlencode(getVars)

            page = get_content(url)
            download_url = base_url + URLParserHref.get_songs_page_url(
                page, song)
            page = get_content(download_url)
            song_download_url = URLParserHref.get_songs_url(page)
            print("Downloading %s ..." % song)
            spk.download(song_download_url, song)
            songs_download_count += 1
        except Exception as e:
            print(e)
            songs_not_downloaded.append(song)

    print("%s out of %s songs downloaded" %
          (songs_download_count, total_songs)),
    if len(songs_not_downloaded) > 0:
        print("Following songs were not downloaded")
        for song in songs_not_downloaded:
            print(song),
    def moviehandler(self):

        """
            Get Movie name list and allow user to enter multiple movie number to
             download songs from all the movies in one hit.

            STEPS- Enter starting letter of any indian Movie
                   Select your movie number from the displayed list
                   Files will be downloaded on your desktop in a folder named
                   songsPK_Collection.Movie Name
            os command mainly has been used for clearing the mess

        """
        movie_letter = raw_input("Enter Indian Movie start letter [A-Z] to get movie name list\n")
        os.system("clear && echo PLEASE WAIT ...")
        try:
            url_data = "http://songspk.name/%s_list.html" % movie_letter
            movies = requests.get(url_data).content
        except:
            url_data = "http://songspk.name/indian_movie/%s_List.html" % movie_letter.upper()
            movies = requests.get(url_data).content
        url_dict = {}
        count = 1
        for url in URLParserHref.get_movie_names(movies):
            print url
            if not url.startswith(".."):
                url_dict[str(count)] = url
                count += 1
        for k, v in url_dict.iteritems():
            print k + "-----" + v.rstrip(".html").split("/")[-1]

        movie = raw_input(
            "Enter comma separated movie number to\
             download all songs of movies\n"
        )

        movie = movie.split(",")
        os.system("clear && echo PLEASE WAIT ...")
        movie_url = ""
        for no in movie:
            movie_url += "http://songspk.name/%s" % url_dict[no] + ","
        self.urlbased(url_datas=movie_url)
 def urlbased(self, url_datas=None):
     """
     Prepares the url and then download the mp3 file.
     To write the file in Disk it depends on write_mp3 function
     """
     visited_url = []
     if not url_datas:
         url_datas = raw_input("Enter comma separated url strings\n")
         os.system("clear && echo PLEASE WAIT ...")
     url_datas = url_datas.split(",")
     for url_data in url_datas:
         movie_name = url_data.rstrip(".html").split("/")[-1]
         if url_data.startswith("www"):
             url_data = url_data.replace("www", "http://www")
         try:
             s_data = requests.get(url_data).content
             song_urls = URLParserHref.get_songs_url(s_data)
             parse_url = 0
             for url in list(set(song_urls)):
                 parse_url += 1
                 try:
                     res, finalurl = url_resolver(url)
                     # Now check the function
                     if finalurl.endswith(".mp3") and finalurl not in visited_url and not finalurl.startswith(".."):
                         with warnings.catch_warnings():
                             warnings.simplefilter("ignore")
                             if self.play_mode:
                                 Player.play(finalurl)
                             else:
                                 # call to write mp3 file in Disk
                                 self.write_mp3(res, filename=finalurl.split("/")[-1])
                     visited_url.append(finalurl)
                 except:
                     continue
                 sys.stdout.write(
                     "\r%d out of %d songs processed for movie ---> %s" % (parse_url, len(song_urls), movie_name)
                 )
                 sys.stdout.flush()
         except:
             pass