import requests from bs4 import BeautifulSoup import os import urllib from urllib.parse import unquote MUSIC_FORMAT = "mp3" DOWNLOAD_DIRECTORY = "/home/geezo/Documents/navidrome/music" mixtapes_to_download = [ "https://archive.org/details/themoviepart2_front/" "https://archive.org/details/da-drought-3-lil-wayne", "https://archive.org/details/dedication-2-lil-wayne", "https://archive.org/details/no-ceilings-lil-wayne", "https://archive.org/details/the-drought-is-over-2-lil-wayne", "https://archive.org/details/VA-The_Empire_Presents_Lil_Wayne_-_The_Drought_Is_Over_Vol.5Grand_ClosingBoot", "https://archive.org/details/sorry-4-the-wait-2-lil-wayne", "https://archive.org/details/DJ_Whiteowl_NY_CEO_Presents_Lil_Wayne-New_Orleans_Nightmare_8_The_Saga_Continue", "https://archive.org/details/VA-The_Empire_Presents_Lil_Wayne-The_Drought_Is_Over_Pt.4Bootleg-2007-JL", "https://archive.org/details/guccimanethemovie", "https://archive.org/details/FrankOceanNostalgiaULTRAMixtapeManic", "https://archive.org/details/trap-back-gucci-mane", "https://archive.org/details/theburrprint", "https://archive.org/details/VA-DJ_Smallz_-_Southern_Smoke_Radio_2_Hosted_By_DJ_Drama-2011", "https://archive.org/details/00-cover_20211207_2352", "https://archive.org/details/Waka_Flocka_Flame_-_Salute_Me_Or_Shoot_Me_4", "https://archive.org/details/eastside-piru", "https://archive.org/details/01-gucci-mane-ft-shawty-lo-waka-flocka-and-nicki-minaj-movie", "https://archive.org/details/VA-Trap-A-Holics_-_Trap_Music_Hosted_By_Tity_Boi-2010", "https://archive.org/details/va-dj-smallz-best-thing-smokin-vol.-9-bootleg-2007-cr", "https://archive.org/details/VA-The_Empire_Presents_Lil_Wayne-The_Drought_Is_Over_Pt.4Bootleg-2007-JL", "https://archive.org/details/slime-season-young-thug", "https://archive.org/details/Young_Thug_-_Slime_Season_2-2015", "https://archive.org/details/rich-forever-rick-ross", "https://archive.org/details/dj_smallz_and_lil_wayne-the_le4k-bootleg-2008-ragemp3", # "https://archive.org/details/future-1000", "https://archive.org/details/20200530_20200530_1609", "https://archive.org/details/DJScrewChapter003DuckSick1996", "https://archive.org/details/VA-Juelz_Santana_Lil_Wayne_Trap-A-Holics-I_Cant_Feel_My_Face_The_Prequel-Boot", "https://archive.org/details/Drake_-_Heartbreak_Drake_4-2010", "https://archive.org/details/VA-Trap-A-Holics_-_Trap_Music_2012", "https://archive.org/details/dj-drama-gucci-mane-mr.-zone-6", "https://archive.org/details/so-icey-survivors", "https://archive.org/details/00-cover_20211206", "https://archive.org/details/VA-Trap-A-Holics_-_Trap_Music_Trick_Or_Trap-2010", "https://archive.org/details/rich-boy-the-life-and-times-of-cartier-benjamin", "https://archive.org/details/14-bowling", "https://archive.org/details/rich-boy-bigger-than-the-mayor", "https://archive.org/details/00-cover_20210107_2255", "https://archive.org/details/00-cover_20220612", "https://archive.org/details/00-cover_20220612_1730" ] def download_mixtape(url): archive_url = url response=requests.get(archive_url) soup = BeautifulSoup(response.text) links = soup.find_all("link", {"itemprop": "associatedMedia"}) title = soup.find("meta", {"property": "og:title"}) album_title = str(title["content"]).split(":")[0] mp3_links = [item["href"] for item in links if item["href"][-3:] == MUSIC_FORMAT] if not os.path.exists(f"{DOWNLOAD_DIRECTORY}/{album_title}"): os.makedirs(f"{DOWNLOAD_DIRECTORY}/{album_title}") for song in mp3_links: song_title = unquote(song.split("/")[-1]) if not os.path.isfile(f"{DOWNLOAD_DIRECTORY}/{album_title}/{song_title}"): print(f"{song_title} has not been downloaded yet.") print(f"downloadingt {song_title}") urllib.request.urlretrieve(song, f"{DOWNLOAD_DIRECTORY}/{album_title}/{song_title}") else: print(f"{song_title} has already been downloaded") for url in mixtapes_to_download: download_mixtape(url)