diff --git a/generatedatabase.py b/generatedatabase.py new file mode 100644 index 0000000..09ae9c8 --- /dev/null +++ b/generatedatabase.py @@ -0,0 +1,78 @@ +import os +import sqlite3 +import tinytag + +musiclist = [] +with open('musiclist.txt', 'r') as f: + for line in f: + if line.strip() == '': + continue + musicname, videoid, provider = line.strip().split('---') + musiclist.append({"musicname": musicname.strip(), "videoid": videoid.strip(), "provider": provider.strip()}) + +if os.path.exists('/mnt/sdcard/Music'): + download_location = '/mnt/sdcard/Music' +elif os.path.exists('/storage/emulated/0/Music'): + download_location = '/storage/emulated/0/Music' +elif os.path.exists('/sdcard/Music'): + download_location = '/sdcard/Music' +elif os.environ.get('HOME') is not None: + if os.path.exists(f'{os.environ["HOME"]}/Music'): + download_location = f'{os.environ["HOME"]}/Music' + else: + os.mkdir(f'{os.environ["HOME"]}/Music') + download_location = f'{os.environ["HOME"]}/Music' +else: + download_location = os.getcwd() + '/music' + +if not os.path.exists(download_location): + print("There is no downloaded songs") + exit() + +if not os.path.exists('music.db'): + conn = sqlite3.connect('music.db') + c = conn.cursor() + c.execute('''CREATE TABLE music (listmusicname text, listvideoid text, listprovider text, filelocation text, fileartistname text, filealbumname text, filemusictitle text, fileduration text)''') + conn.commit() + conn.close() + downloaded_music_list = [] + for music in os.listdir(download_location): + if music.endswith('.opus'): + downloaded_music_list.append(music.split('.opus')[0]) + tagextracted = [] + conn = sqlite3.connect('music.db') + c = conn.cursor() + for musicfile in downloaded_music_list: + filelocation = f'{download_location}/{musicfile}.opus' + file = tinytag.TinyTag.get(filelocation) + tagextracted.append({"filename": musicfile, "filemusicname": file.title, "fileartistname": file.artist, "filealbumname": file.album, "fileduration": file.duration, "filelocation": filelocation}) + for listmusic in musiclist: + music_name = listmusic['musicname'] + music_name = music_name.replace('/', '-') + music_name = music_name.replace('@', '') + music_name = music_name.replace('#', '') + music_name = music_name.replace('%', '') + music_name = music_name.replace('$', '') + music_name = music_name.replace('^', '') + music_name = music_name.replace('?', '') + music_name = music_name.replace('"', '') + music_name = music_name.replace("'", '') + music_name = music_name.replace(':', '') + music_name = music_name.replace('|', '') + music_name = music_name.replace('>', '') + music_name = music_name.replace('<', '') + music_name = music_name.replace('\\', '') + music_name = music_name.replace('&', '') + music_name = music_name.replace('+', '') + music_name = music_name.replace('=', '') + music_name = music_name.replace('~', '') + music_name = music_name.replace('`', '') + music_name = music_name.replace(';', '') + music_name = music_name.replace('*', '') + + for a in tagextracted: + if music_name == a['filename']: + c.execute("INSERT INTO music VALUES (?, ?, ?, ?, ?, ?, ?, ?)", (music_name, listmusic["videoid"], listmusic["provider"], a["filelocation"], a["fileartistname"], a["filealbumname"], a["filemusicname"], a["fileduration"])) + conn.commit() + conn.close() + diff --git a/music.db b/music.db new file mode 100644 index 0000000..29fab1e Binary files /dev/null and b/music.db differ