From 79a18e3c154bfe781dcd92235c7bbffef1b6690a Mon Sep 17 00:00:00 2001 From: lars Date: Mon, 24 Oct 2022 12:12:01 +0200 Subject: [PATCH] prioritized the album release as release src over the single release, and optimized the conversion to mp3 with doing it only if neccesarry --- src/__pycache__/download.cpython-310.pyc | Bin 2318 -> 2423 bytes src/__pycache__/metadata.cpython-310.pyc | Bin 13942 -> 14120 bytes src/download.py | 15 ++++-- src/main.py | 2 +- src/metadata.py | 59 +++++++++++++++-------- src/temp/.cache1.csv | 6 +-- src/temp/.cache2.csv | 13 +++-- src/temp/.cache3.csv | 13 +++-- 8 files changed, 64 insertions(+), 44 deletions(-) diff --git a/src/__pycache__/download.cpython-310.pyc b/src/__pycache__/download.cpython-310.pyc index 03564b8d678fc233d483f3cb1ab158d095d3335e..e4a0c00e044bd50b27f32547436786edc5a24592 100644 GIT binary patch delta 647 zcmYjMO>fgc5ZzgSCb69~B+w#3B_wh|?Ij#aRSBt0Xv=|*@+B4!O}pC?$BALHEh@O` zAsi_Z@|8ovFDOFdFL2@ySo{kPoQfDbtyGU@-g`UGqnS_TzhyUc-8{kX-m}M>$DiFx z2VYTe!XY3GGNg=Vs4+c5gPDjlu(~$0A@yoOuA681j6+ahh0NzLCqtLH8G6jik!8Yl zZhRoz7*JLeC2n@8yek}k0<+Am!zus~ba-w=SVa^?Md*HYc>dduFB+_Uf1u9+^x}`k z+<}d2E@Ae6V|iyP643$dYfngTN+$|@>T7$`K+;h9(1_>=d^4gPI6b8JcH)0ZdhnJg zOA+55=0*f(=*o&<%p2rIecw>|2qI$&d&=t2{$gZA`tw~P*HvNYj9Vk4nElIG zD0QF&6>xz5^YnPb;&3zmXM6xTF(Y<%N?|q%LdqW2 zYXylX@i0pdp2dTn{6qSWc&hkz7Q}@2{owloFTe8-xjxo9WpwuQy_fSJ^|j$=GL~7W zn3*ydY&|!E7%O=cnFuBsui_(RRI8y%Ow#sJleXM3otC?%o3Jfrg_ZA_l_NB|$ZXWd z`e~7tGc>a{J_TR}Yc7p7GkKwlyuk8uGxzP+7Y@7M_r)4O6+X$ep``UTXa+wC9BaVi z7)tbL!Qv?bbKK(yPPh|}m$He*jGS=7!&EfifrhIJo1b7jId;<5ZJO zlQ9f-{%fVwdg$WWf6qGffo<0f!)Q@2I&JxgzTkP8g|E>)mL=k$8CVa0R1Y@8d~$#J2Gtc)prA{4!U`22W*cfXBi93Q@fVpsYGwcc diff --git a/src/__pycache__/metadata.cpython-310.pyc b/src/__pycache__/metadata.cpython-310.pyc index 1ea4948af6d2168374f3d2b07a49f48f959ca96a..764c6de23d52e4dec0eb766b8c1a315edbcc980a 100644 GIT binary patch delta 4238 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 diff --git a/src/download.py b/src/download.py index dc4e053..e84aed1 100644 --- a/src/download.py +++ b/src/download.py @@ -1,3 +1,4 @@ +import mutagen.id3 import requests import os.path import pandas as pd @@ -76,6 +77,7 @@ dict_keys( ]) """ + class Download: def __init__(self, session: requests.Session = requests.Session(), file: str = ".cache3.csv", temp: str = "temp", base_path: str = ""): @@ -113,10 +115,13 @@ class Download: os.makedirs(path, exist_ok=True) return False - def write_metadata(self, row, filePath): - AudioSegment.from_file(filePath).export(filePath, format="mp3") - - audiofile = EasyID3(filePath) + def write_metadata(self, row, file_path): + # only convert the file to the proper format if mutagen doesn't work with it due to time + try: + audiofile = EasyID3(file_path) + except mutagen.id3.ID3NoHeaderError: + AudioSegment.from_file(file_path).export(file_path, format="mp3") + audiofile = EasyID3(file_path) valid_keys = list(EasyID3.valid_keys.keys()) @@ -128,7 +133,7 @@ class Download: audiofile[key] = row[key] print("saving") - audiofile.save(filePath, v1=2) + audiofile.save(file_path, v1=2) if __name__ == "__main__": diff --git a/src/main.py b/src/main.py index 47a1665..87264dc 100644 --- a/src/main.py +++ b/src/main.py @@ -71,4 +71,4 @@ def cli(start_at: int = 0): if __name__ == "__main__": - cli(start_at=3) + cli(start_at=0) diff --git a/src/metadata.py b/src/metadata.py index 763aaa3..36e0111 100644 --- a/src/metadata.py +++ b/src/metadata.py @@ -10,16 +10,18 @@ musicbrainzngs.set_useragent("metadata receiver", "0.1", "https://github.com/HeI KNOWN_KIND_OF_OPTIONS = ["artist", "release", "track"] + def output(msg: str): print(msg) -def get_elem_from_obj(current_object, keys: list, after_process=lambda x: x): + +def get_elem_from_obj(current_object, keys: list, after_process=lambda x: x, return_if_none=None): current_object = current_object for key in keys: if key in current_object or (type(key) == int and key < len(current_object)): current_object = current_object[key] else: - return None + return return_if_none return after_process(current_object) @@ -80,6 +82,7 @@ class Search: label-rels, place-rels, event-rels, recording-rels, release-rels, release-group-rels, series-rels, url-rels, work-rels, instrument-rels """ + def get_additional_artist_info(mb_id_): r = musicbrainzngs.get_artist_by_id(mb_id_, includes=["releases"]) @@ -91,10 +94,13 @@ class Search: break return album_sort + result = musicbrainzngs.get_release_by_id(mb_id, includes=["artists", "recordings", 'release-groups']) + print(result['release']) if album_sort is None: - album_sort = get_additional_artist_info(get_elem_from_obj(result, ['release', 'artist-credit', 0, 'artist', 'id'])) + album_sort = get_additional_artist_info( + get_elem_from_obj(result, ['release', 'artist-credit', 0, 'artist', 'id'])) release_type = get_elem_from_obj(result, ['release', 'release-group', 'type']) tracklist_metadata = [] @@ -107,11 +113,15 @@ class Search: track_id = track["recording"]["id"] this_track = track["position"] - tracklist_metadata.extend(self.download_track(track_id, is_various_artist=is_various_artist, track=this_track, total_tracks=track_count, album_sort=album_sort, album_type=release_type)) - + tracklist_metadata.extend( + self.download_track(track_id, is_various_artist=is_various_artist, track=this_track, + total_tracks=track_count, album_sort=album_sort, album_type=release_type, + release_data=result['release'])) + return tracklist_metadata - def download_track(self, mb_id, is_various_artist: bool = None, track: int = None, total_tracks: int = None, album_sort: int = None, album_type: str = None): + def download_track(self, mb_id, is_various_artist: bool = None, track: int = None, total_tracks: int = None, + album_sort: int = None, album_type: str = None, release_data: dict = None): """ TODO bpm its kind of possible via the AcousticBrainz API. however, the data may not be of very good @@ -159,27 +169,29 @@ class Search: recording-rels, release-rels, release-group-rels, series-rels, url-rels, work-rels, instrument-rels """ - result = musicbrainzngs.get_recording_by_id(mb_id, includes=["artists", "releases", "recording-rels", "isrcs", "work-level-rels"]) + result = musicbrainzngs.get_recording_by_id(mb_id, includes=["artists", "releases", "recording-rels", "isrcs", + "work-level-rels"]) recording_data = result['recording'] isrc = get_elem_from_obj(recording_data, ['isrc-list', 0]) - release_data = recording_data['release-list'][0] + if release_data is None: + # choosing the last release, because it is the least likely one to be a single + release_data = recording_data['release-list'][-1] mb_release_id = release_data['id'] title = recording_data['title'] - - + artist = [] mb_artist_ids = [] for artist_ in recording_data['artist-credit']: - name_ = get_elem_from_obj(artist_, ['artist', 'name']) - if name_ is None: - continue - artist.append(name_) - mb_artist_ids.append(get_elem_from_obj(artist_, ['artist', 'id'])) - # artist = [get_elem_from_obj(artist_, ['artist', 'name']) for artist_ in recording_data['artist-credit']] - # mb_artist_ids = [get_elem_from_obj(artist_, ['artist', 'id']) for artist_ in recording_data['artist-credit']] - + name_ = get_elem_from_obj(artist_, ['artist', 'name']) + if name_ is None: + continue + artist.append(name_) + mb_artist_ids.append(get_elem_from_obj(artist_, ['artist', 'id'])) + # artist = [get_elem_from_obj(artist_, ['artist', 'name']) for artist_ in recording_data['artist-credit']] + # mb_artist_ids = [get_elem_from_obj(artist_, ['artist', 'id']) for artist_ in recording_data['artist-credit']] + def get_additional_artist_info(mb_id_): r = musicbrainzngs.get_artist_by_id(mb_id_, includes=["releases"]) @@ -193,7 +205,8 @@ class Search: return album_sort def get_additional_release_info(mb_id_): - r = musicbrainzngs.get_release_by_id(mb_id_, includes=["artists", "recordings", "recording-rels", 'release-groups']) + r = musicbrainzngs.get_release_by_id(mb_id_, + includes=["artists", "recordings", "recording-rels", 'release-groups']) is_various_artist_ = len(r['release']['artist-credit']) > 1 tracklist = r['release']['medium-list'][0]['track-list'] track_count_ = len(tracklist) @@ -412,7 +425,8 @@ def interactive_demo(): search = Search(query=input("initial query: ")) print(search.options) while True: - input_ = input("d to download, q to quit, .. for previous options, . for current options, int for this element: ").lower() + input_ = input( + "d to download, q to quit, .. for previous options, . for current options, int for this element: ").lower() input_.strip() if input_ == "q": break @@ -435,9 +449,12 @@ if __name__ == "__main__": # automated_demo() search = Search(query="psychonaut 4") # search.download_release("27f00fb8-983c-4d5c-950f-51418aac55dc") + search.download_release("1aeb676f-e556-4b17-b45e-64ab69ef0375") # for track_ in search.download_artist("c0c720b5-012f-4204-a472-981403f37b12"): # print(track_) - res = search.download_track("83a30323-aee1-401a-b767-b3c1bdd026c0") + # res = search.download_track("83a30323-aee1-401a-b767-b3c1bdd026c0") + # res = search.download_track("5e1ee2c5-502c-44d3-b1bc-22803441d8c6") + res = search.download_track("86b43bec-eea6-40ae-8624-c1e404204ba1") # res = search.download_track("5cc28584-10c6-40e2-b6d4-6891e7e7c575") for key in res[0]: diff --git a/src/temp/.cache1.csv b/src/temp/.cache1.csv index 05e38b7..45e8851 100644 --- a/src/temp/.cache1.csv +++ b/src/temp/.cache1.csv @@ -1,8 +1,8 @@ ,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,5e1ee2c5-502c-44d3-b1bc-22803441d8c6,Abgesägte Schrotflinte,Abgesägte Schrotflinte,['Crystal F'],Crystal F,1,0,1,DEVY82000223,2021-03-12,2021,5cfecbe4-f600-45e5-9038-ce820eedf3d1,ca933487-97ff-4a44-ab6f-9e4fcd26ceda,5cfecbe4-f600-45e5-9038-ce820eedf3d1,Official,13,deu,Album,,XW,4062851774871 +0,5e1ee2c5-502c-44d3-b1bc-22803441d8c6,Das Leben danach,Abgesägte Schrotflinte,['Crystal F'],Crystal F,1,0,1,DEVY82000223,2021-06-11,2021,5cfecbe4-f600-45e5-9038-ce820eedf3d1,1aeb676f-e556-4b17-b45e-64ab69ef0375,5cfecbe4-f600-45e5-9038-ce820eedf3d1,Official,13,deu,Album,,XW,4260526714133 1,71e4dd64-6479-45be-b9a0-37d4edc364fa,Das Leben danach,Schockschwerenot,['Crystal F'],Crystal F,2,0,2,DEVY82000317,2021-06-11,2021,5cfecbe4-f600-45e5-9038-ce820eedf3d1,1aeb676f-e556-4b17-b45e-64ab69ef0375,5cfecbe4-f600-45e5-9038-ce820eedf3d1,Official,13,deu,Album,,XW,4260526714133 -2,c6b0ce24-b75b-40ad-a12a-1fa8a412dc14,Genug,Genug,['Crystal F'],Crystal F,3,0,3,DEVY82000308,2021-04-30,2021,5cfecbe4-f600-45e5-9038-ce820eedf3d1,e9043dfa-189e-4caa-94c8-7e329d009389,5cfecbe4-f600-45e5-9038-ce820eedf3d1,Official,13,deu,Album,,XW,4062851604161 -3,d01df009-40cf-4bae-8ab4-19e70c552feb,Du willst mit mir gehen,Du willst mit mir gehen,['Crystal F'],Crystal F,4,0,4,DEVY82000296,2021-04-02,2021,5cfecbe4-f600-45e5-9038-ce820eedf3d1,2659e838-ac3b-425b-935d-7cb93043bb3f,5cfecbe4-f600-45e5-9038-ce820eedf3d1,Official,13,deu,Album,,XW,4062851783668 +2,c6b0ce24-b75b-40ad-a12a-1fa8a412dc14,Das Leben danach,Genug,['Crystal F'],Crystal F,3,0,3,DEVY82000308,2021-06-11,2021,5cfecbe4-f600-45e5-9038-ce820eedf3d1,1aeb676f-e556-4b17-b45e-64ab69ef0375,5cfecbe4-f600-45e5-9038-ce820eedf3d1,Official,13,deu,Album,,XW,4260526714133 +3,d01df009-40cf-4bae-8ab4-19e70c552feb,Das Leben danach,Du willst mit mir gehen,['Crystal F'],Crystal F,4,0,4,DEVY82000296,2021-06-11,2021,5cfecbe4-f600-45e5-9038-ce820eedf3d1,1aeb676f-e556-4b17-b45e-64ab69ef0375,5cfecbe4-f600-45e5-9038-ce820eedf3d1,Official,13,deu,Album,,XW,4260526714133 4,5a3d0f0f-d847-4678-b14d-f0875339ec13,Das Leben danach,Komm wir tun mir weh,['Crystal F'],Crystal F,5,0,5,DEVY82000318,2021-06-11,2021,5cfecbe4-f600-45e5-9038-ce820eedf3d1,1aeb676f-e556-4b17-b45e-64ab69ef0375,5cfecbe4-f600-45e5-9038-ce820eedf3d1,Official,13,deu,Album,,XW,4260526714133 5,8426e0e1-e14b-48ec-8e53-950fdf3b8754,Das Leben danach,S4distentreff 4,"['Crystal F', 'MXP', 'Dollar John', 'G-Ko']",Crystal F,6,0,6,DEVY82000319,2021-06-11,2021,5cfecbe4-f600-45e5-9038-ce820eedf3d1,1aeb676f-e556-4b17-b45e-64ab69ef0375,5cfecbe4-f600-45e5-9038-ce820eedf3d1,Official,13,deu,Album,,XW,4260526714133 6,1543f558-4d54-4047-a6aa-affd02e89ab4,Das Leben danach,Stehen geblieben,['Crystal F'],Crystal F,7,0,7,DEVY82000320,2021-06-11,2021,5cfecbe4-f600-45e5-9038-ce820eedf3d1,1aeb676f-e556-4b17-b45e-64ab69ef0375,5cfecbe4-f600-45e5-9038-ce820eedf3d1,Official,13,deu,Album,,XW,4260526714133 diff --git a/src/temp/.cache2.csv b/src/temp/.cache2.csv index 46c02c7..64a167c 100644 --- a/src/temp/.cache2.csv +++ b/src/temp/.cache2.csv @@ -1,14 +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,5e1ee2c5-502c-44d3-b1bc-22803441d8c6,Abgesägte Schrotflinte,Abgesägte Schrotflinte,['Crystal F'],Crystal F,1,0,1,DEVY82000223,2021-03-12,2021,5cfecbe4-f600-45e5-9038-ce820eedf3d1,ca933487-97ff-4a44-ab6f-9e4fcd26ceda,5cfecbe4-f600-45e5-9038-ce820eedf3d1,Official,13,deu,Album,,XW,4062851774871,https://www.youtube.com/watch?v=QLvZVY_iiUc,youtube +0,5e1ee2c5-502c-44d3-b1bc-22803441d8c6,Das Leben danach,Abgesägte Schrotflinte,['Crystal F'],Crystal F,1,0,1,DEVY82000223,2021-06-11,2021,5cfecbe4-f600-45e5-9038-ce820eedf3d1,1aeb676f-e556-4b17-b45e-64ab69ef0375,5cfecbe4-f600-45e5-9038-ce820eedf3d1,Official,13,deu,Album,,XW,4260526714133,https://www.youtube.com/watch?v=QLvZVY_iiUc,youtube 1,71e4dd64-6479-45be-b9a0-37d4edc364fa,Das Leben danach,Schockschwerenot,['Crystal F'],Crystal F,2,0,2,DEVY82000317,2021-06-11,2021,5cfecbe4-f600-45e5-9038-ce820eedf3d1,1aeb676f-e556-4b17-b45e-64ab69ef0375,5cfecbe4-f600-45e5-9038-ce820eedf3d1,Official,13,deu,Album,,XW,4260526714133,https://www.youtube.com/watch?v=VJESTJWnRhU,youtube -2,c6b0ce24-b75b-40ad-a12a-1fa8a412dc14,Genug,Genug,['Crystal F'],Crystal F,3,0,3,DEVY82000308,2021-04-30,2021,5cfecbe4-f600-45e5-9038-ce820eedf3d1,e9043dfa-189e-4caa-94c8-7e329d009389,5cfecbe4-f600-45e5-9038-ce820eedf3d1,Official,13,deu,Album,,XW,4062851604161,https://www.youtube.com/watch?v=C0-n46T22vo,youtube -3,d01df009-40cf-4bae-8ab4-19e70c552feb,Du willst mit mir gehen,Du willst mit mir gehen,['Crystal F'],Crystal F,4,0,4,DEVY82000296,2021-04-02,2021,5cfecbe4-f600-45e5-9038-ce820eedf3d1,2659e838-ac3b-425b-935d-7cb93043bb3f,5cfecbe4-f600-45e5-9038-ce820eedf3d1,Official,13,deu,Album,,XW,4062851783668,https://www.youtube.com/watch?v=D0rYWsUgDuQ,youtube +2,c6b0ce24-b75b-40ad-a12a-1fa8a412dc14,Das Leben danach,Genug,['Crystal F'],Crystal F,3,0,3,DEVY82000308,2021-06-11,2021,5cfecbe4-f600-45e5-9038-ce820eedf3d1,1aeb676f-e556-4b17-b45e-64ab69ef0375,5cfecbe4-f600-45e5-9038-ce820eedf3d1,Official,13,deu,Album,,XW,4260526714133,https://www.youtube.com/watch?v=C0-n46T22vo,youtube +3,d01df009-40cf-4bae-8ab4-19e70c552feb,Das Leben danach,Du willst mit mir gehen,['Crystal F'],Crystal F,4,0,4,DEVY82000296,2021-06-11,2021,5cfecbe4-f600-45e5-9038-ce820eedf3d1,1aeb676f-e556-4b17-b45e-64ab69ef0375,5cfecbe4-f600-45e5-9038-ce820eedf3d1,Official,13,deu,Album,,XW,4260526714133,https://www.youtube.com/watch?v=D0rYWsUgDuQ,youtube 4,5a3d0f0f-d847-4678-b14d-f0875339ec13,Das Leben danach,Komm wir tun mir weh,['Crystal F'],Crystal F,5,0,5,DEVY82000318,2021-06-11,2021,5cfecbe4-f600-45e5-9038-ce820eedf3d1,1aeb676f-e556-4b17-b45e-64ab69ef0375,5cfecbe4-f600-45e5-9038-ce820eedf3d1,Official,13,deu,Album,,XW,4260526714133,https://www.youtube.com/watch?v=3Hq0_qc3zqo,youtube 5,8426e0e1-e14b-48ec-8e53-950fdf3b8754,Das Leben danach,S4distentreff 4,"['Crystal F', 'MXP', 'Dollar John', 'G-Ko']",Crystal F,6,0,6,DEVY82000319,2021-06-11,2021,5cfecbe4-f600-45e5-9038-ce820eedf3d1,1aeb676f-e556-4b17-b45e-64ab69ef0375,5cfecbe4-f600-45e5-9038-ce820eedf3d1,Official,13,deu,Album,,XW,4260526714133,https://www.youtube.com/watch?v=sFmYIN0JNec,youtube 6,1543f558-4d54-4047-a6aa-affd02e89ab4,Das Leben danach,Stehen geblieben,['Crystal F'],Crystal F,7,0,7,DEVY82000320,2021-06-11,2021,5cfecbe4-f600-45e5-9038-ce820eedf3d1,1aeb676f-e556-4b17-b45e-64ab69ef0375,5cfecbe4-f600-45e5-9038-ce820eedf3d1,Official,13,deu,Album,,XW,4260526714133,https://www.youtube.com/watch?v=V65bn2jN4ZE,youtube 7,ccf6d043-7157-492b-bca0-78a24c0c8372,Das Leben danach,"Blau, grün, gelb","['Crystal F', 'Ruffiction']",Crystal F,8,0,8,DEVY82000321,2021-06-11,2021,5cfecbe4-f600-45e5-9038-ce820eedf3d1,1aeb676f-e556-4b17-b45e-64ab69ef0375,5cfecbe4-f600-45e5-9038-ce820eedf3d1,Official,13,deu,Album,,XW,4260526714133,https://www.youtube.com/watch?v=Mo7hZ984faU,youtube 8,41ad47ab-0337-4fcc-b369-5a4b1e12dc3c,Das Leben danach,Was fühlst du noch,"['Crystal F', 'Zero/Zero', 'Nils Davis', 'Taha']",Crystal F,9,0,9,DEVY82000322,2021-06-11,2021,5cfecbe4-f600-45e5-9038-ce820eedf3d1,1aeb676f-e556-4b17-b45e-64ab69ef0375,5cfecbe4-f600-45e5-9038-ce820eedf3d1,Official,13,deu,Album,,XW,4260526714133,https://www.youtube.com/watch?v=T15QiksB7do,youtube -9,ed6cc3e1-d493-4a51-973c-3adc1a6ea978,Das Leben danach,Katzen,"['Crystal F', 'Kito', 'Kirby']",Crystal F,10,0,10,DEVY82000323,2021-06-11,2021,5cfecbe4-f600-45e5-9038-ce820eedf3d1,1aeb676f-e556-4b17-b45e-64ab69ef0375,5cfecbe4-f600-45e5-9038-ce820eedf3d1,Official,13,deu,Album,,XW,4260526714133,https://www.youtube.com/watch?v=eKCpu74GYxs,youtube -10,b49a466f-e77b-465d-9c01-06298efb0c9d,Das Leben danach,Wach sein,['Crystal F'],Crystal F,11,0,11,DEVY82000324,2021-06-11,2021,5cfecbe4-f600-45e5-9038-ce820eedf3d1,1aeb676f-e556-4b17-b45e-64ab69ef0375,5cfecbe4-f600-45e5-9038-ce820eedf3d1,Official,13,deu,Album,,XW,4260526714133,https://www.youtube.com/watch?v=dboTFFBUPW0,youtube -11,86b43bec-eea6-40ae-8624-c1e404204ba1,Das Leben danach,Rote Augen,['Crystal F'],Crystal F,12,0,12,DEVY82000325,2021-06-11,2021,5cfecbe4-f600-45e5-9038-ce820eedf3d1,1aeb676f-e556-4b17-b45e-64ab69ef0375,5cfecbe4-f600-45e5-9038-ce820eedf3d1,Official,13,deu,Album,,XW,4260526714133,https://www.youtube.com/watch?v=zvYHKYz6AGI,youtube -12,2a3dc1ae-6752-420f-b1d3-ca9e26a15c48,Das Leben danach,Schlechtes Essen,['Crystal F'],Crystal F,13,0,13,DEVY82000326,2021-06-11,2021,5cfecbe4-f600-45e5-9038-ce820eedf3d1,1aeb676f-e556-4b17-b45e-64ab69ef0375,5cfecbe4-f600-45e5-9038-ce820eedf3d1,Official,13,deu,Album,,XW,4260526714133,https://www.youtube.com/watch?v=XAfpge1FxLY,youtube +9,b49a466f-e77b-465d-9c01-06298efb0c9d,Das Leben danach,Wach sein,['Crystal F'],Crystal F,11,0,11,DEVY82000324,2021-06-11,2021,5cfecbe4-f600-45e5-9038-ce820eedf3d1,1aeb676f-e556-4b17-b45e-64ab69ef0375,5cfecbe4-f600-45e5-9038-ce820eedf3d1,Official,13,deu,Album,,XW,4260526714133,https://www.youtube.com/watch?v=dboTFFBUPW0,youtube +10,86b43bec-eea6-40ae-8624-c1e404204ba1,Das Leben danach,Rote Augen,['Crystal F'],Crystal F,12,0,12,DEVY82000325,2021-06-11,2021,5cfecbe4-f600-45e5-9038-ce820eedf3d1,1aeb676f-e556-4b17-b45e-64ab69ef0375,5cfecbe4-f600-45e5-9038-ce820eedf3d1,Official,13,deu,Album,,XW,4260526714133,https://www.youtube.com/watch?v=zvYHKYz6AGI,youtube +11,2a3dc1ae-6752-420f-b1d3-ca9e26a15c48,Das Leben danach,Schlechtes Essen,['Crystal F'],Crystal F,13,0,13,DEVY82000326,2021-06-11,2021,5cfecbe4-f600-45e5-9038-ce820eedf3d1,1aeb676f-e556-4b17-b45e-64ab69ef0375,5cfecbe4-f600-45e5-9038-ce820eedf3d1,Official,13,deu,Album,,XW,4260526714133,https://www.youtube.com/watch?v=XAfpge1FxLY,youtube diff --git a/src/temp/.cache3.csv b/src/temp/.cache3.csv index bc05ea4..6573965 100644 --- a/src/temp/.cache3.csv +++ b/src/temp/.cache3.csv @@ -1,14 +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,5e1ee2c5-502c-44d3-b1bc-22803441d8c6,Abgesägte Schrotflinte,Abgesägte Schrotflinte,['Crystal F'],Crystal F,1,0,1,DEVY82000223,2021-03-12,2021,5cfecbe4-f600-45e5-9038-ce820eedf3d1,ca933487-97ff-4a44-ab6f-9e4fcd26ceda,5cfecbe4-f600-45e5-9038-ce820eedf3d1,Official,13,deu,Album,,XW,4062851774871,https://www.youtube.com/watch?v=QLvZVY_iiUc,youtube,horrorcore/Crystal F/Abgesägte Schrotflinte,horrorcore/Crystal F/Abgesägte Schrotflinte/Abgesägte Schrotflinte.mp3,horrorcore +0,5e1ee2c5-502c-44d3-b1bc-22803441d8c6,Das Leben danach,Abgesägte Schrotflinte,['Crystal F'],Crystal F,1,0,1,DEVY82000223,2021-06-11,2021,5cfecbe4-f600-45e5-9038-ce820eedf3d1,1aeb676f-e556-4b17-b45e-64ab69ef0375,5cfecbe4-f600-45e5-9038-ce820eedf3d1,Official,13,deu,Album,,XW,4260526714133,https://www.youtube.com/watch?v=QLvZVY_iiUc,youtube,horrorcore/Crystal F/Das Leben danach,horrorcore/Crystal F/Das Leben danach/Abgesägte Schrotflinte.mp3,horrorcore 1,71e4dd64-6479-45be-b9a0-37d4edc364fa,Das Leben danach,Schockschwerenot,['Crystal F'],Crystal F,2,0,2,DEVY82000317,2021-06-11,2021,5cfecbe4-f600-45e5-9038-ce820eedf3d1,1aeb676f-e556-4b17-b45e-64ab69ef0375,5cfecbe4-f600-45e5-9038-ce820eedf3d1,Official,13,deu,Album,,XW,4260526714133,https://www.youtube.com/watch?v=VJESTJWnRhU,youtube,horrorcore/Crystal F/Das Leben danach,horrorcore/Crystal F/Das Leben danach/Schockschwerenot.mp3,horrorcore -2,c6b0ce24-b75b-40ad-a12a-1fa8a412dc14,Das Leben danach,Genug,['Crystal F'],Crystal F,3,0,3,DEVY82000308,2021-04-30,2021,5cfecbe4-f600-45e5-9038-ce820eedf3d1,e9043dfa-189e-4caa-94c8-7e329d009389,5cfecbe4-f600-45e5-9038-ce820eedf3d1,Official,13,deu,Album,,XW,4062851604161,https://www.youtube.com/watch?v=C0-n46T22vo,youtube,horrorcore/Crystal F/Genug,horrorcore/Crystal F/Genug/Genug.mp3,horrorcore -3,d01df009-40cf-4bae-8ab4-19e70c552feb,Du willst mit mir gehen,Du willst mit mir gehen,['Crystal F'],Crystal F,4,0,4,DEVY82000296,2021-04-02,2021,5cfecbe4-f600-45e5-9038-ce820eedf3d1,2659e838-ac3b-425b-935d-7cb93043bb3f,5cfecbe4-f600-45e5-9038-ce820eedf3d1,Official,13,deu,Album,,XW,4062851783668,https://www.youtube.com/watch?v=D0rYWsUgDuQ,youtube,horrorcore/Crystal F/Du willst mit mir gehen,horrorcore/Crystal F/Du willst mit mir gehen/Du willst mit mir gehen.mp3,horrorcore +2,c6b0ce24-b75b-40ad-a12a-1fa8a412dc14,Das Leben danach,Genug,['Crystal F'],Crystal F,3,0,3,DEVY82000308,2021-06-11,2021,5cfecbe4-f600-45e5-9038-ce820eedf3d1,1aeb676f-e556-4b17-b45e-64ab69ef0375,5cfecbe4-f600-45e5-9038-ce820eedf3d1,Official,13,deu,Album,,XW,4260526714133,https://www.youtube.com/watch?v=C0-n46T22vo,youtube,horrorcore/Crystal F/Das Leben danach,horrorcore/Crystal F/Das Leben danach/Genug.mp3,horrorcore +3,d01df009-40cf-4bae-8ab4-19e70c552feb,Das Leben danach,Du willst mit mir gehen,['Crystal F'],Crystal F,4,0,4,DEVY82000296,2021-06-11,2021,5cfecbe4-f600-45e5-9038-ce820eedf3d1,1aeb676f-e556-4b17-b45e-64ab69ef0375,5cfecbe4-f600-45e5-9038-ce820eedf3d1,Official,13,deu,Album,,XW,4260526714133,https://www.youtube.com/watch?v=D0rYWsUgDuQ,youtube,horrorcore/Crystal F/Das Leben danach,horrorcore/Crystal F/Das Leben danach/Du willst mit mir gehen.mp3,horrorcore 4,5a3d0f0f-d847-4678-b14d-f0875339ec13,Das Leben danach,Komm wir tun mir weh,['Crystal F'],Crystal F,5,0,5,DEVY82000318,2021-06-11,2021,5cfecbe4-f600-45e5-9038-ce820eedf3d1,1aeb676f-e556-4b17-b45e-64ab69ef0375,5cfecbe4-f600-45e5-9038-ce820eedf3d1,Official,13,deu,Album,,XW,4260526714133,https://www.youtube.com/watch?v=3Hq0_qc3zqo,youtube,horrorcore/Crystal F/Das Leben danach,horrorcore/Crystal F/Das Leben danach/Komm wir tun mir weh.mp3,horrorcore 5,8426e0e1-e14b-48ec-8e53-950fdf3b8754,Das Leben danach,S4distentreff 4,"['Crystal F', 'MXP', 'Dollar John', 'G-Ko']",Crystal F,6,0,6,DEVY82000319,2021-06-11,2021,5cfecbe4-f600-45e5-9038-ce820eedf3d1,1aeb676f-e556-4b17-b45e-64ab69ef0375,5cfecbe4-f600-45e5-9038-ce820eedf3d1,Official,13,deu,Album,,XW,4260526714133,https://www.youtube.com/watch?v=sFmYIN0JNec,youtube,horrorcore/Crystal F/Das Leben danach,horrorcore/Crystal F/Das Leben danach/S4distentreff 4.mp3,horrorcore 6,1543f558-4d54-4047-a6aa-affd02e89ab4,Das Leben danach,Stehen geblieben,['Crystal F'],Crystal F,7,0,7,DEVY82000320,2021-06-11,2021,5cfecbe4-f600-45e5-9038-ce820eedf3d1,1aeb676f-e556-4b17-b45e-64ab69ef0375,5cfecbe4-f600-45e5-9038-ce820eedf3d1,Official,13,deu,Album,,XW,4260526714133,https://www.youtube.com/watch?v=V65bn2jN4ZE,youtube,horrorcore/Crystal F/Das Leben danach,horrorcore/Crystal F/Das Leben danach/Stehen geblieben.mp3,horrorcore 7,ccf6d043-7157-492b-bca0-78a24c0c8372,Das Leben danach,"Blau, grün, gelb","['Crystal F', 'Ruffiction']",Crystal F,8,0,8,DEVY82000321,2021-06-11,2021,5cfecbe4-f600-45e5-9038-ce820eedf3d1,1aeb676f-e556-4b17-b45e-64ab69ef0375,5cfecbe4-f600-45e5-9038-ce820eedf3d1,Official,13,deu,Album,,XW,4260526714133,https://www.youtube.com/watch?v=Mo7hZ984faU,youtube,horrorcore/Crystal F/Das Leben danach,"horrorcore/Crystal F/Das Leben danach/Blau, grün, gelb.mp3",horrorcore 8,41ad47ab-0337-4fcc-b369-5a4b1e12dc3c,Das Leben danach,Was fühlst du noch,"['Crystal F', 'Zero/Zero', 'Nils Davis', 'Taha']",Crystal F,9,0,9,DEVY82000322,2021-06-11,2021,5cfecbe4-f600-45e5-9038-ce820eedf3d1,1aeb676f-e556-4b17-b45e-64ab69ef0375,5cfecbe4-f600-45e5-9038-ce820eedf3d1,Official,13,deu,Album,,XW,4260526714133,https://www.youtube.com/watch?v=T15QiksB7do,youtube,horrorcore/Crystal F/Das Leben danach,horrorcore/Crystal F/Das Leben danach/Was fühlst du noch.mp3,horrorcore -9,ed6cc3e1-d493-4a51-973c-3adc1a6ea978,Das Leben danach,Katzen,"['Crystal F', 'Kito', 'Kirby']",Crystal F,10,0,10,DEVY82000323,2021-06-11,2021,5cfecbe4-f600-45e5-9038-ce820eedf3d1,1aeb676f-e556-4b17-b45e-64ab69ef0375,5cfecbe4-f600-45e5-9038-ce820eedf3d1,Official,13,deu,Album,,XW,4260526714133,https://www.youtube.com/watch?v=eKCpu74GYxs,youtube,horrorcore/Crystal F/Das Leben danach,horrorcore/Crystal F/Das Leben danach/Katzen.mp3,horrorcore -10,b49a466f-e77b-465d-9c01-06298efb0c9d,Das Leben danach,Wach sein,['Crystal F'],Crystal F,11,0,11,DEVY82000324,2021-06-11,2021,5cfecbe4-f600-45e5-9038-ce820eedf3d1,1aeb676f-e556-4b17-b45e-64ab69ef0375,5cfecbe4-f600-45e5-9038-ce820eedf3d1,Official,13,deu,Album,,XW,4260526714133,https://www.youtube.com/watch?v=dboTFFBUPW0,youtube,horrorcore/Crystal F/Das Leben danach,horrorcore/Crystal F/Das Leben danach/Wach sein.mp3,horrorcore -11,86b43bec-eea6-40ae-8624-c1e404204ba1,Das Leben danach,Rote Augen,['Crystal F'],Crystal F,12,0,12,DEVY82000325,2021-06-11,2021,5cfecbe4-f600-45e5-9038-ce820eedf3d1,1aeb676f-e556-4b17-b45e-64ab69ef0375,5cfecbe4-f600-45e5-9038-ce820eedf3d1,Official,13,deu,Album,,XW,4260526714133,https://www.youtube.com/watch?v=zvYHKYz6AGI,youtube,horrorcore/Crystal F/Das Leben danach,horrorcore/Crystal F/Das Leben danach/Rote Augen.mp3,horrorcore -12,2a3dc1ae-6752-420f-b1d3-ca9e26a15c48,Das Leben danach,Schlechtes Essen,['Crystal F'],Crystal F,13,0,13,DEVY82000326,2021-06-11,2021,5cfecbe4-f600-45e5-9038-ce820eedf3d1,1aeb676f-e556-4b17-b45e-64ab69ef0375,5cfecbe4-f600-45e5-9038-ce820eedf3d1,Official,13,deu,Album,,XW,4260526714133,https://www.youtube.com/watch?v=XAfpge1FxLY,youtube,horrorcore/Crystal F/Das Leben danach,horrorcore/Crystal F/Das Leben danach/Schlechtes Essen.mp3,horrorcore +9,b49a466f-e77b-465d-9c01-06298efb0c9d,Das Leben danach,Wach sein,['Crystal F'],Crystal F,11,0,11,DEVY82000324,2021-06-11,2021,5cfecbe4-f600-45e5-9038-ce820eedf3d1,1aeb676f-e556-4b17-b45e-64ab69ef0375,5cfecbe4-f600-45e5-9038-ce820eedf3d1,Official,13,deu,Album,,XW,4260526714133,https://www.youtube.com/watch?v=dboTFFBUPW0,youtube,horrorcore/Crystal F/Das Leben danach,horrorcore/Crystal F/Das Leben danach/Wach sein.mp3,horrorcore +10,86b43bec-eea6-40ae-8624-c1e404204ba1,Das Leben danach,Rote Augen,['Crystal F'],Crystal F,12,0,12,DEVY82000325,2021-06-11,2021,5cfecbe4-f600-45e5-9038-ce820eedf3d1,1aeb676f-e556-4b17-b45e-64ab69ef0375,5cfecbe4-f600-45e5-9038-ce820eedf3d1,Official,13,deu,Album,,XW,4260526714133,https://www.youtube.com/watch?v=zvYHKYz6AGI,youtube,horrorcore/Crystal F/Das Leben danach,horrorcore/Crystal F/Das Leben danach/Rote Augen.mp3,horrorcore +11,2a3dc1ae-6752-420f-b1d3-ca9e26a15c48,Das Leben danach,Schlechtes Essen,['Crystal F'],Crystal F,13,0,13,DEVY82000326,2021-06-11,2021,5cfecbe4-f600-45e5-9038-ce820eedf3d1,1aeb676f-e556-4b17-b45e-64ab69ef0375,5cfecbe4-f600-45e5-9038-ce820eedf3d1,Official,13,deu,Album,,XW,4260526714133,https://www.youtube.com/watch?v=XAfpge1FxLY,youtube,horrorcore/Crystal F/Das Leben danach,horrorcore/Crystal F/Das Leben danach/Schlechtes Essen.mp3,horrorcore