diff --git a/src/__pycache__/musify.cpython-310.pyc b/src/__pycache__/musify.cpython-310.pyc new file mode 100644 index 0000000..01549f5 Binary files /dev/null and b/src/__pycache__/musify.cpython-310.pyc differ diff --git a/src/__pycache__/youtube_music.cpython-310.pyc b/src/__pycache__/youtube_music.cpython-310.pyc new file mode 100644 index 0000000..a884025 Binary files /dev/null and b/src/__pycache__/youtube_music.cpython-310.pyc differ diff --git a/src/download.py b/src/download.py index ab2d6ed..89986be 100644 --- a/src/download.py +++ b/src/download.py @@ -3,9 +3,11 @@ import os.path import pandas as pd from mutagen.easyid3 import EasyID3 import json - import logging +import musify +import youtube_music + """ https://en.wikipedia.org/wiki/ID3 https://mutagen.readthedocs.io/en/latest/user/id3.html @@ -87,15 +89,25 @@ class Download: for idx, row in self.dataframe.iterrows(): row['artist'] = json.loads(row['artist'].replace("'", '"')) - self.download(row['path'], row['file'], row['url']) + if self.path_stuff(row['path'], row['file']): + continue + + src = row['src'] + if src == 'musify': + self.download_from_musify(row['path'], row['file'], row['url']) + elif src == 'youtube': + youtube_music.download(row) self.write_metadata(row, row['file']) - def download(self, path, file, url): - if os.path.exists(file): - logging.info(f"'{file}' does already exist, thus not downloading.") - return + def path_stuff(self, path: str, file_: str): + # returns true if it shouldn't be downloaded + if os.path.exists(file_): + logging.info(f"'{file_}' does already exist, thus not downloading.") + return True os.makedirs(path, exist_ok=True) + return False + def download_from_musify(self, path, file, url): logging.info(f"downloading: '{url}'") r = self.session.get(url) if r.status_code != 200: @@ -118,16 +130,6 @@ class Download: row[key] = str(row[key]) audiofile[key] = row[key] - """ - audiofile["artist"] = row['artist'] - audiofile["albumartist"] = row['album_artist'] - audiofile["date"] = str(row['year']) - audiofile["genre"] = row['genre'] - audiofile["title"] = row['title'] - audiofile["album"] = row['album'] - audiofile["tracknumber"] = str(row['track']) - """ - audiofile.save() diff --git a/src/download_links.py b/src/download_links.py index 85f2aed..06c048a 100644 --- a/src/download_links.py +++ b/src/download_links.py @@ -1,69 +1,47 @@ import json import os.path - import pandas as pd import requests import logging +import musify +import youtube_music + class Download: def __init__(self, metadata_csv: str = ".cache1.csv", session: requests.Session = requests.Session(), file: str = ".cache2.csv", temp: str = "temp") -> None: self.temp = temp - - self.session = session - self.session.headers = { - "Connection": "keep-alive", - "Referer": "https://musify.club/" - } - self.metadata = pd.read_csv(os.path.join(self.temp, metadata_csv), index_col=0) self.urls = [] - missing_urls, self.urls = self.check_musify() - - self.dump_urls(file) - - def check_musify_track(self, row): - artist = json.loads(row['artist'].replace("'", '"')) - track = row['title'] - - url = f"https://musify.club/search/suggestions?term={track}" - - r = self.session.get(url=url) - if r.status_code == 200: - autocomplete = r.json() - for row in autocomplete: - if any(a in row['label'] for a in artist) and "/track" in row['url']: - return row - - return None - - def check_musify(self, urls: list = []): - missing_urls = [] - - def get_download_link(default_url): - # https://musify.club/track/dl/18567672/rauw-alejandro-te-felicito-feat-shakira.mp3 - # /track/sundenklang-wenn-mein-herz-schreit-3883217' - - file_ = default_url.split("/")[-1] - musify_id = file_.split("-")[-1] - musify_name = "-".join(file_.split("-")[:-1]) - - logging.info(f"https://musify.club/track/dl/{musify_id}/{musify_name}.mp3") - - return f"https://musify.club/track/dl/{musify_id}/{musify_name}.mp3" for idx, row in self.metadata.iterrows(): - url = self.check_musify_track(row) - if url is None: - missing_urls.append(row['id']) + row['artist'] = json.loads(row['artist'].replace("'", '"')) + + # check musify + musify_url = musify.get_musify_url(row) + if musify_url is not None: + self.add_url(musify_url, 'musify', dict(row)) continue - data = dict(row) - data['url'] = get_download_link(url['url']) - urls.append(data) - return missing_urls, urls + # check youtube + youtube_url = youtube_music.get_youtube_url(row) + if youtube_url is not None: + self.add_url(youtube_url, 'youtube', dict(row)) + continue + + logging.warning(f"Didn't find any sources for {row['title']}") + + self.dump_urls(file) + + + def add_url(self, url: str, src: str, row: dict): + row['url'] = url + row['src'] = src + + self.urls.append(row) + def dump_urls(self, file: str = ".cache2.csv"): df = pd.DataFrame(self.urls) diff --git a/src/musify.py b/src/musify.py new file mode 100644 index 0000000..fb02f46 --- /dev/null +++ b/src/musify.py @@ -0,0 +1,35 @@ +import logging +import requests + +session = requests.Session() +session.headers = { + "Connection": "keep-alive", + "Referer": "https://musify.club/" +} + +def get_musify_url(row): + title = row['title'] + artists = row['artist'] + + url = f"https://musify.club/search/suggestions?term={title}" + + r = session.get(url=url) + if r.status_code == 200: + autocomplete = r.json() + for row in autocomplete: + if any(a in row['label'] for a in artists) and "/track" in row['url']: + return get_download_link(row['url']) + + return None + +def get_download_link(default_url): + # https://musify.club/track/dl/18567672/rauw-alejandro-te-felicito-feat-shakira.mp3 + # /track/sundenklang-wenn-mein-herz-schreit-3883217' + + file_ = default_url.split("/")[-1] + musify_id = file_.split("-")[-1] + musify_name = "-".join(file_.split("-")[:-1]) + + logging.info(f"https://musify.club/track/dl/{musify_id}/{musify_name}.mp3") + + return f"https://musify.club/track/dl/{musify_id}/{musify_name}.mp3" diff --git a/src/youtube_music.py b/src/youtube_music.py new file mode 100644 index 0000000..78d2c41 --- /dev/null +++ b/src/youtube_music.py @@ -0,0 +1,56 @@ +import youtube_dl +import pandas as pd +import jellyfish +import logging + + +YDL_OPTIONS = {'format': 'bestaudio', 'noplaylist':'True'} +YOUTUBE_URL_KEY = 'webpage_url' + +def get_youtube_from_isrc(isrc: str): + # https://stackoverflow.com/questions/63388364/searching-youtube-videos-using-youtube-dl + with youtube_dl.YoutubeDL(YDL_OPTIONS) as ydl: + video = ydl.extract_info(f"ytsearch:{isrc}", download=False)['entries'][0] + print(type(video)) + if YOUTUBE_URL_KEY not in video: + return None + return { + 'url': video[YOUTUBE_URL_KEY], + 'title': video['title'] + } + +def get_youtube_url(row): + if pd.isna(row['isrc']): + return None + real_title = row['title'].lower() + + result = get_youtube_from_isrc(row['isrc']) + video_title = result['title'].lower() + + phonetic_distance = jellyfish.levenshtein_distance(real_title, video_title) + + print(real_title, video_title, phonetic_distance) + if phonetic_distance > 1: + logging.warning(f"dont downloading {result['url']} cuz the phonetic distance ({phonetic_distance}) between {real_title} and {video_title} is to high.") + return None + return result['url'] + +def download(row): + url = row['url'] + file_ = row['file'] + options = { + 'format': 'bestaudio/best', + 'keepvideo': False, + 'outtmpl': file_ + } + + with youtube_dl.YoutubeDL(options) as ydl: + ydl.download([url]) + +if __name__ == "__main__": + # example isrc that exists on youtube music + ISRC = "DEUM71500715" + result = get_youtube_from_isrc(ISRC) + print(result) + result = get_youtube_from_isrc("aslhfklasdhfjklasdfjkhasdjlfhlasdjfkuuiueiw") + print(result) diff --git a/temp/.cache1.csv b/temp/.cache1.csv index 38c5464..4094f93 100644 --- a/temp/.cache1.csv +++ b/temp/.cache1.csv @@ -1,2 +1,14 @@ -,id,title,artist,album_artist,album,year,track,total_tracks -0,39e9dee2-6b09-4aa5-bb5b-d04fa43578db,Black Smoke Curling From the Lips of War,['Cradle of Filth'],Cradle of Filth,Existence Is Futile,2021,6,12 +,id,album,title,artist,album_artist,tracknumber,albumsort,titlesort,isrc,date,year,musicbrainz_artistid,musicbrainz_albumid,musicbrainz_albumartistid,musicbrainz_albumstatus,total_tracks,language,musicbrainz_albumtype,compilation,releasecountry,barcode +0,adae3514-9f16-4164-849b-a64f9d49770a,Hurra die Welt geht unter,Wir,['K.I.Z'],K.I.Z,1,0,1,DEUM71500709,2015-07-10,2015,13c9c494-09aa-4518-8572-9f41dbdff461,27d0fac9-c7d2-48ef-8739-6b839ed7c461,13c9c494-09aa-4518-8572-9f41dbdff461,Official,13,deu,Album,,DE,0602547326324 +1,9c566dc6-d7d6-42eb-9e4f-471824ea3d8f,Hurra die Welt geht unter,Geld,['K.I.Z'],K.I.Z,2,0,2,DEUM71500710,2015-07-10,2015,13c9c494-09aa-4518-8572-9f41dbdff461,27d0fac9-c7d2-48ef-8739-6b839ed7c461,13c9c494-09aa-4518-8572-9f41dbdff461,Official,13,deu,Album,,DE,0602547326324 +2,23d60d4c-f2b3-401e-94e0-0a3e6353d4bf,Hurra die Welt geht unter,Glücklich und satt,['K.I.Z'],K.I.Z,3,0,3,DEUM71500711,2015-07-10,2015,13c9c494-09aa-4518-8572-9f41dbdff461,27d0fac9-c7d2-48ef-8739-6b839ed7c461,13c9c494-09aa-4518-8572-9f41dbdff461,Official,13,deu,Album,,DE,0602547326324 +3,7177e7dc-813a-4e1e-8d36-1d4e38eeb796,Hurra die Welt geht unter,Boom Boom Boom,['K.I.Z'],K.I.Z,4,0,4,DEUM71500712,2015-07-10,2015,13c9c494-09aa-4518-8572-9f41dbdff461,27d0fac9-c7d2-48ef-8739-6b839ed7c461,13c9c494-09aa-4518-8572-9f41dbdff461,Official,13,deu,Album,,DE,0602547326324 +4,00192a27-f412-4eb0-a111-5cc1faa9b2d7,Hurra die Welt geht unter,AMG Mercedes,['K.I.Z'],K.I.Z,5,0,5,DEUM71500713,2015-07-10,2015,13c9c494-09aa-4518-8572-9f41dbdff461,27d0fac9-c7d2-48ef-8739-6b839ed7c461,13c9c494-09aa-4518-8572-9f41dbdff461,Official,13,deu,Album,,DE,0602547326324 +5,960e130a-53e7-4b0e-b720-c23347d2d728,Hurra die Welt geht unter,Freier Fall,['K.I.Z'],K.I.Z,6,0,6,DEUM71500714,2015-07-10,2015,13c9c494-09aa-4518-8572-9f41dbdff461,27d0fac9-c7d2-48ef-8739-6b839ed7c461,13c9c494-09aa-4518-8572-9f41dbdff461,Official,13,deu,Album,,DE,0602547326324 +6,24fbd3e5-28f5-42d3-9aff-b5356ad08470,Hurra die Welt geht unter,Ariane,['K.I.Z'],K.I.Z,7,0,7,DEUM71500715,2015-07-10,2015,13c9c494-09aa-4518-8572-9f41dbdff461,27d0fac9-c7d2-48ef-8739-6b839ed7c461,13c9c494-09aa-4518-8572-9f41dbdff461,Official,13,deu,Album,,DE,0602547326324 +7,bd087625-4cc8-4b34-8837-31d0690b7aca,Hurra die Welt geht unter,Käfigbett,['K.I.Z'],K.I.Z,8,0,8,DEUM71500716,2015-07-10,2015,13c9c494-09aa-4518-8572-9f41dbdff461,27d0fac9-c7d2-48ef-8739-6b839ed7c461,13c9c494-09aa-4518-8572-9f41dbdff461,Official,13,deu,Album,,DE,0602547326324 +8,032a80d1-f211-4dd4-ac68-f125a09a4be8,Hurra die Welt geht unter,Verrückt nach dir,['K.I.Z'],K.I.Z,9,0,9,DEUM71500717,2015-07-10,2015,13c9c494-09aa-4518-8572-9f41dbdff461,27d0fac9-c7d2-48ef-8739-6b839ed7c461,13c9c494-09aa-4518-8572-9f41dbdff461,Official,13,deu,Album,,DE,0602547326324 +9,a9d08fbc-d275-4427-a1d9-adc1c79e083a,Hurra die Welt geht unter,Ehrenlos,['K.I.Z'],K.I.Z,10,0,10,DEUM71500718,2015-07-10,2015,13c9c494-09aa-4518-8572-9f41dbdff461,27d0fac9-c7d2-48ef-8739-6b839ed7c461,13c9c494-09aa-4518-8572-9f41dbdff461,Official,13,deu,Album,,DE,0602547326324 +10,80f2b1b0-9a95-4fd0-a886-546e9dd8ceff,Hurra die Welt geht unter,Superstars,"['K.I.Z', 'Sefo']",K.I.Z,11,0,11,DEUM71500719,2015-07-10,2015,13c9c494-09aa-4518-8572-9f41dbdff461,27d0fac9-c7d2-48ef-8739-6b839ed7c461,13c9c494-09aa-4518-8572-9f41dbdff461,Official,13,deu,Album,,DE,0602547326324 +11,4db0ff20-321f-49f3-b20b-a17fc6f3709b,Hurra die Welt geht unter,Was würde Manny Marc tun?,"['K.I.Z', 'Audio88', 'Yassin', 'Manny Marc']",K.I.Z,12,0,12,DEUM71500720,2015-07-10,2015,13c9c494-09aa-4518-8572-9f41dbdff461,27d0fac9-c7d2-48ef-8739-6b839ed7c461,13c9c494-09aa-4518-8572-9f41dbdff461,Official,13,deu,Album,,DE,0602547326324 +12,05404ed1-4f8b-43ba-833f-54e6c2918ff6,Hurra die Welt geht unter,Hurra die Welt geht unter,"['K.I.Z', 'Henning May']",K.I.Z,13,0,13,DEUM71500721,2015-07-10,2015,13c9c494-09aa-4518-8572-9f41dbdff461,f538d982-71fd-4d19-8ef5-8664b4cbe0ac,13c9c494-09aa-4518-8572-9f41dbdff461,Official,13,deu,Album,,DE,0602547326362 diff --git a/temp/.cache2.csv b/temp/.cache2.csv index e16c76d..8450c3c 100644 --- a/temp/.cache2.csv +++ b/temp/.cache2.csv @@ -1 +1,13 @@ -"" +,id,album,title,artist,album_artist,tracknumber,albumsort,titlesort,isrc,date,year,musicbrainz_artistid,musicbrainz_albumid,musicbrainz_albumartistid,musicbrainz_albumstatus,total_tracks,language,musicbrainz_albumtype,compilation,releasecountry,barcode,url,src +0,adae3514-9f16-4164-849b-a64f9d49770a,Hurra die Welt geht unter,Wir,['K.I.Z'],K.I.Z,1,0,1,DEUM71500709,2015-07-10,2015,13c9c494-09aa-4518-8572-9f41dbdff461,27d0fac9-c7d2-48ef-8739-6b839ed7c461,13c9c494-09aa-4518-8572-9f41dbdff461,Official,13,deu,Album,,DE,602547326324,https://www.youtube.com/watch?v=WizfUqQZyns,youtube +1,9c566dc6-d7d6-42eb-9e4f-471824ea3d8f,Hurra die Welt geht unter,Geld,['K.I.Z'],K.I.Z,2,0,2,DEUM71500710,2015-07-10,2015,13c9c494-09aa-4518-8572-9f41dbdff461,27d0fac9-c7d2-48ef-8739-6b839ed7c461,13c9c494-09aa-4518-8572-9f41dbdff461,Official,13,deu,Album,,DE,602547326324,https://www.youtube.com/watch?v=PZd1zNX0tjs,youtube +2,23d60d4c-f2b3-401e-94e0-0a3e6353d4bf,Hurra die Welt geht unter,Glücklich und satt,['K.I.Z'],K.I.Z,3,0,3,DEUM71500711,2015-07-10,2015,13c9c494-09aa-4518-8572-9f41dbdff461,27d0fac9-c7d2-48ef-8739-6b839ed7c461,13c9c494-09aa-4518-8572-9f41dbdff461,Official,13,deu,Album,,DE,602547326324,https://www.youtube.com/watch?v=s-FU9TVq9Wk,youtube +3,7177e7dc-813a-4e1e-8d36-1d4e38eeb796,Hurra die Welt geht unter,Boom Boom Boom,['K.I.Z'],K.I.Z,4,0,4,DEUM71500712,2015-07-10,2015,13c9c494-09aa-4518-8572-9f41dbdff461,27d0fac9-c7d2-48ef-8739-6b839ed7c461,13c9c494-09aa-4518-8572-9f41dbdff461,Official,13,deu,Album,,DE,602547326324,https://www.youtube.com/watch?v=NDbKzEJtqRs,youtube +4,00192a27-f412-4eb0-a111-5cc1faa9b2d7,Hurra die Welt geht unter,AMG Mercedes,['K.I.Z'],K.I.Z,5,0,5,DEUM71500713,2015-07-10,2015,13c9c494-09aa-4518-8572-9f41dbdff461,27d0fac9-c7d2-48ef-8739-6b839ed7c461,13c9c494-09aa-4518-8572-9f41dbdff461,Official,13,deu,Album,,DE,602547326324,https://www.youtube.com/watch?v=GsBtsh6fdKQ,youtube +5,960e130a-53e7-4b0e-b720-c23347d2d728,Hurra die Welt geht unter,Freier Fall,['K.I.Z'],K.I.Z,6,0,6,DEUM71500714,2015-07-10,2015,13c9c494-09aa-4518-8572-9f41dbdff461,27d0fac9-c7d2-48ef-8739-6b839ed7c461,13c9c494-09aa-4518-8572-9f41dbdff461,Official,13,deu,Album,,DE,602547326324,https://www.youtube.com/watch?v=rWX-O3uu_GU,youtube +6,24fbd3e5-28f5-42d3-9aff-b5356ad08470,Hurra die Welt geht unter,Ariane,['K.I.Z'],K.I.Z,7,0,7,DEUM71500715,2015-07-10,2015,13c9c494-09aa-4518-8572-9f41dbdff461,27d0fac9-c7d2-48ef-8739-6b839ed7c461,13c9c494-09aa-4518-8572-9f41dbdff461,Official,13,deu,Album,,DE,602547326324,https://www.youtube.com/watch?v=x3rQam9YyQo,youtube +7,bd087625-4cc8-4b34-8837-31d0690b7aca,Hurra die Welt geht unter,Käfigbett,['K.I.Z'],K.I.Z,8,0,8,DEUM71500716,2015-07-10,2015,13c9c494-09aa-4518-8572-9f41dbdff461,27d0fac9-c7d2-48ef-8739-6b839ed7c461,13c9c494-09aa-4518-8572-9f41dbdff461,Official,13,deu,Album,,DE,602547326324,https://www.youtube.com/watch?v=ERCLP3d5GMU,youtube +8,032a80d1-f211-4dd4-ac68-f125a09a4be8,Hurra die Welt geht unter,Verrückt nach dir,['K.I.Z'],K.I.Z,9,0,9,DEUM71500717,2015-07-10,2015,13c9c494-09aa-4518-8572-9f41dbdff461,27d0fac9-c7d2-48ef-8739-6b839ed7c461,13c9c494-09aa-4518-8572-9f41dbdff461,Official,13,deu,Album,,DE,602547326324,https://www.youtube.com/watch?v=adtEjaZP1NI,youtube +9,a9d08fbc-d275-4427-a1d9-adc1c79e083a,Hurra die Welt geht unter,Ehrenlos,['K.I.Z'],K.I.Z,10,0,10,DEUM71500718,2015-07-10,2015,13c9c494-09aa-4518-8572-9f41dbdff461,27d0fac9-c7d2-48ef-8739-6b839ed7c461,13c9c494-09aa-4518-8572-9f41dbdff461,Official,13,deu,Album,,DE,602547326324,https://www.youtube.com/watch?v=2ZJ9dJJRcic,youtube +10,80f2b1b0-9a95-4fd0-a886-546e9dd8ceff,Hurra die Welt geht unter,Superstars,"['K.I.Z', 'Sefo']",K.I.Z,11,0,11,DEUM71500719,2015-07-10,2015,13c9c494-09aa-4518-8572-9f41dbdff461,27d0fac9-c7d2-48ef-8739-6b839ed7c461,13c9c494-09aa-4518-8572-9f41dbdff461,Official,13,deu,Album,,DE,602547326324,https://www.youtube.com/watch?v=_lyVnfIfeqk,youtube +11,4db0ff20-321f-49f3-b20b-a17fc6f3709b,Hurra die Welt geht unter,Was würde Manny Marc tun?,"['K.I.Z', 'Audio88', 'Yassin', 'Manny Marc']",K.I.Z,12,0,12,DEUM71500720,2015-07-10,2015,13c9c494-09aa-4518-8572-9f41dbdff461,27d0fac9-c7d2-48ef-8739-6b839ed7c461,13c9c494-09aa-4518-8572-9f41dbdff461,Official,13,deu,Album,,DE,602547326324,https://www.youtube.com/watch?v=3YyjUFBLMNE,youtube diff --git a/temp/.cache3.csv b/temp/.cache3.csv index e16c76d..09f69e6 100644 --- a/temp/.cache3.csv +++ b/temp/.cache3.csv @@ -1 +1,13 @@ -"" +,id,album,title,artist,album_artist,tracknumber,albumsort,titlesort,isrc,date,year,musicbrainz_artistid,musicbrainz_albumid,musicbrainz_albumartistid,musicbrainz_albumstatus,total_tracks,language,musicbrainz_albumtype,compilation,releasecountry,barcode,url,src,path,file,genre +0,adae3514-9f16-4164-849b-a64f9d49770a,Hurra die Welt geht unter,Wir,['K.I.Z'],K.I.Z,1,0,1,DEUM71500709,2015-07-10,2015,13c9c494-09aa-4518-8572-9f41dbdff461,27d0fac9-c7d2-48ef-8739-6b839ed7c461,13c9c494-09aa-4518-8572-9f41dbdff461,Official,13,deu,Album,,DE,602547326324,https://www.youtube.com/watch?v=WizfUqQZyns,youtube,dsbm/K.I.Z/Hurra die Welt geht unter,dsbm/K.I.Z/Hurra die Welt geht unter/Wir.mp3,dsbm +1,9c566dc6-d7d6-42eb-9e4f-471824ea3d8f,Hurra die Welt geht unter,Geld,['K.I.Z'],K.I.Z,2,0,2,DEUM71500710,2015-07-10,2015,13c9c494-09aa-4518-8572-9f41dbdff461,27d0fac9-c7d2-48ef-8739-6b839ed7c461,13c9c494-09aa-4518-8572-9f41dbdff461,Official,13,deu,Album,,DE,602547326324,https://www.youtube.com/watch?v=PZd1zNX0tjs,youtube,dsbm/K.I.Z/Hurra die Welt geht unter,dsbm/K.I.Z/Hurra die Welt geht unter/Geld.mp3,dsbm +2,23d60d4c-f2b3-401e-94e0-0a3e6353d4bf,Hurra die Welt geht unter,Glücklich und satt,['K.I.Z'],K.I.Z,3,0,3,DEUM71500711,2015-07-10,2015,13c9c494-09aa-4518-8572-9f41dbdff461,27d0fac9-c7d2-48ef-8739-6b839ed7c461,13c9c494-09aa-4518-8572-9f41dbdff461,Official,13,deu,Album,,DE,602547326324,https://www.youtube.com/watch?v=s-FU9TVq9Wk,youtube,dsbm/K.I.Z/Hurra die Welt geht unter,dsbm/K.I.Z/Hurra die Welt geht unter/Glücklich und satt.mp3,dsbm +3,7177e7dc-813a-4e1e-8d36-1d4e38eeb796,Hurra die Welt geht unter,Boom Boom Boom,['K.I.Z'],K.I.Z,4,0,4,DEUM71500712,2015-07-10,2015,13c9c494-09aa-4518-8572-9f41dbdff461,27d0fac9-c7d2-48ef-8739-6b839ed7c461,13c9c494-09aa-4518-8572-9f41dbdff461,Official,13,deu,Album,,DE,602547326324,https://www.youtube.com/watch?v=NDbKzEJtqRs,youtube,dsbm/K.I.Z/Hurra die Welt geht unter,dsbm/K.I.Z/Hurra die Welt geht unter/Boom Boom Boom.mp3,dsbm +4,00192a27-f412-4eb0-a111-5cc1faa9b2d7,Hurra die Welt geht unter,AMG Mercedes,['K.I.Z'],K.I.Z,5,0,5,DEUM71500713,2015-07-10,2015,13c9c494-09aa-4518-8572-9f41dbdff461,27d0fac9-c7d2-48ef-8739-6b839ed7c461,13c9c494-09aa-4518-8572-9f41dbdff461,Official,13,deu,Album,,DE,602547326324,https://www.youtube.com/watch?v=GsBtsh6fdKQ,youtube,dsbm/K.I.Z/Hurra die Welt geht unter,dsbm/K.I.Z/Hurra die Welt geht unter/AMG Mercedes.mp3,dsbm +5,960e130a-53e7-4b0e-b720-c23347d2d728,Hurra die Welt geht unter,Freier Fall,['K.I.Z'],K.I.Z,6,0,6,DEUM71500714,2015-07-10,2015,13c9c494-09aa-4518-8572-9f41dbdff461,27d0fac9-c7d2-48ef-8739-6b839ed7c461,13c9c494-09aa-4518-8572-9f41dbdff461,Official,13,deu,Album,,DE,602547326324,https://www.youtube.com/watch?v=rWX-O3uu_GU,youtube,dsbm/K.I.Z/Hurra die Welt geht unter,dsbm/K.I.Z/Hurra die Welt geht unter/Freier Fall.mp3,dsbm +6,24fbd3e5-28f5-42d3-9aff-b5356ad08470,Hurra die Welt geht unter,Ariane,['K.I.Z'],K.I.Z,7,0,7,DEUM71500715,2015-07-10,2015,13c9c494-09aa-4518-8572-9f41dbdff461,27d0fac9-c7d2-48ef-8739-6b839ed7c461,13c9c494-09aa-4518-8572-9f41dbdff461,Official,13,deu,Album,,DE,602547326324,https://www.youtube.com/watch?v=x3rQam9YyQo,youtube,dsbm/K.I.Z/Hurra die Welt geht unter,dsbm/K.I.Z/Hurra die Welt geht unter/Ariane.mp3,dsbm +7,bd087625-4cc8-4b34-8837-31d0690b7aca,Hurra die Welt geht unter,Käfigbett,['K.I.Z'],K.I.Z,8,0,8,DEUM71500716,2015-07-10,2015,13c9c494-09aa-4518-8572-9f41dbdff461,27d0fac9-c7d2-48ef-8739-6b839ed7c461,13c9c494-09aa-4518-8572-9f41dbdff461,Official,13,deu,Album,,DE,602547326324,https://www.youtube.com/watch?v=ERCLP3d5GMU,youtube,dsbm/K.I.Z/Hurra die Welt geht unter,dsbm/K.I.Z/Hurra die Welt geht unter/Käfigbett.mp3,dsbm +8,032a80d1-f211-4dd4-ac68-f125a09a4be8,Hurra die Welt geht unter,Verrückt nach dir,['K.I.Z'],K.I.Z,9,0,9,DEUM71500717,2015-07-10,2015,13c9c494-09aa-4518-8572-9f41dbdff461,27d0fac9-c7d2-48ef-8739-6b839ed7c461,13c9c494-09aa-4518-8572-9f41dbdff461,Official,13,deu,Album,,DE,602547326324,https://www.youtube.com/watch?v=adtEjaZP1NI,youtube,dsbm/K.I.Z/Hurra die Welt geht unter,dsbm/K.I.Z/Hurra die Welt geht unter/Verrückt nach dir.mp3,dsbm +9,a9d08fbc-d275-4427-a1d9-adc1c79e083a,Hurra die Welt geht unter,Ehrenlos,['K.I.Z'],K.I.Z,10,0,10,DEUM71500718,2015-07-10,2015,13c9c494-09aa-4518-8572-9f41dbdff461,27d0fac9-c7d2-48ef-8739-6b839ed7c461,13c9c494-09aa-4518-8572-9f41dbdff461,Official,13,deu,Album,,DE,602547326324,https://www.youtube.com/watch?v=2ZJ9dJJRcic,youtube,dsbm/K.I.Z/Hurra die Welt geht unter,dsbm/K.I.Z/Hurra die Welt geht unter/Ehrenlos.mp3,dsbm +10,80f2b1b0-9a95-4fd0-a886-546e9dd8ceff,Hurra die Welt geht unter,Superstars,"['K.I.Z', 'Sefo']",K.I.Z,11,0,11,DEUM71500719,2015-07-10,2015,13c9c494-09aa-4518-8572-9f41dbdff461,27d0fac9-c7d2-48ef-8739-6b839ed7c461,13c9c494-09aa-4518-8572-9f41dbdff461,Official,13,deu,Album,,DE,602547326324,https://www.youtube.com/watch?v=_lyVnfIfeqk,youtube,dsbm/K.I.Z/Hurra die Welt geht unter,dsbm/K.I.Z/Hurra die Welt geht unter/Superstars.mp3,dsbm +11,4db0ff20-321f-49f3-b20b-a17fc6f3709b,Hurra die Welt geht unter,Was würde Manny Marc tun?,"['K.I.Z', 'Audio88', 'Yassin', 'Manny Marc']",K.I.Z,12,0,12,DEUM71500720,2015-07-10,2015,13c9c494-09aa-4518-8572-9f41dbdff461,27d0fac9-c7d2-48ef-8739-6b839ed7c461,13c9c494-09aa-4518-8572-9f41dbdff461,Official,13,deu,Album,,DE,602547326324,https://www.youtube.com/watch?v=3YyjUFBLMNE,youtube,dsbm/K.I.Z/Hurra die Welt geht unter,dsbm/K.I.Z/Hurra die Welt geht unter/Was würde Manny Marc tun?.mp3,dsbm diff --git a/temp/.~lock..cache2.csv# b/temp/.~lock..cache2.csv# new file mode 100644 index 0000000..0354903 --- /dev/null +++ b/temp/.~lock..cache2.csv# @@ -0,0 +1 @@ +,lars,lars-school,20.10.2022 14:47,file:///home/lars/.config/libreoffice/4; \ No newline at end of file