From b3bda35de179bfbf2aa5f6b6d8c4d395807eab6b Mon Sep 17 00:00:00 2001 From: geezo Date: Sun, 22 Dec 2024 18:17:12 +0000 Subject: [PATCH] Innitial commit --- main.py | 77 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 77 insertions(+) create mode 100644 main.py diff --git a/main.py b/main.py new file mode 100644 index 0000000..fdce4d6 --- /dev/null +++ b/main.py @@ -0,0 +1,77 @@ +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)