- You'll have to login - Current state is not tested - Downloads the whole collection with a big iteration, creating folders with the [album_artist | artist]/album_name formatmaster
parent
092f4369d1
commit
4488096a63
@ -0,0 +1,85 @@
|
||||
import logging
|
||||
import os
|
||||
import sqlite3
|
||||
|
||||
from gmusicapi import Musicmanager
|
||||
from os import path
|
||||
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
|
||||
def save_log(text):
|
||||
log_file = open("log", "a")
|
||||
log_file.write(text)
|
||||
log_file.close()
|
||||
|
||||
|
||||
def create_db():
|
||||
try:
|
||||
sqliteConnection = sqlite3.connect('songs.db')
|
||||
sqlite_create_table_query = '''CREATE TABLE success_ids (
|
||||
id INTEGER PRIMARY KEY,
|
||||
google_id TEXT NOT NULL;'''
|
||||
|
||||
cursor = sqliteConnection.cursor()
|
||||
cursor.execute(sqlite_create_table_query)
|
||||
|
||||
sqlite_create_table_query = '''CREATE TABLE failure_ids (
|
||||
id INTEGER PRIMARY KEY,
|
||||
google_id TEXT NOT NULL;'''
|
||||
cursor.execute(sqlite_create_table_query)
|
||||
|
||||
sqliteConnection.commit()
|
||||
|
||||
cursor.close()
|
||||
|
||||
except sqlite3.Error as exc:
|
||||
logger.error(f'Error creating the database: {exc}')
|
||||
|
||||
|
||||
|
||||
mm = Musicmanager()
|
||||
mm.perform_oauth()
|
||||
mm.login()
|
||||
songs = mm.get_uploaded_songs(incremental=False)
|
||||
|
||||
|
||||
logger.info(f'There\'s {len(songs)} songs to download . . .')
|
||||
|
||||
|
||||
for song in songs:
|
||||
if song['album_artist']:
|
||||
level_one = song['album_artist']
|
||||
elif song['artist']:
|
||||
level_one = song['artist']
|
||||
else:
|
||||
level_one = 'Unknown Artist'
|
||||
if song['album']:
|
||||
level_two = song['album']
|
||||
else:
|
||||
level_two = 'Unknown Album'
|
||||
full_path = f'{level_one}/{level_two}'
|
||||
try:
|
||||
os.mkdir(level_one)
|
||||
except FileExistsError:
|
||||
pass
|
||||
except Exception as exc:
|
||||
save_log(f"\n\n{song} \n {exc} \n\n")
|
||||
continue
|
||||
try:
|
||||
os.mkdir(full_path)
|
||||
except FileExistsError:
|
||||
pass
|
||||
except Exception as exc:
|
||||
save_log(f"\n\n{song} \n {exc} \n\n")
|
||||
continue
|
||||
try:
|
||||
downloaded_song = mm.download_song(song['id'])
|
||||
except Exception as exc:
|
||||
save_log(f"\n\n{song} \n {exc} \n\n")
|
||||
full_path += f"/{downloaded_song[0]}"
|
||||
file_path = path.relpath(full_path)
|
||||
file_to_write = open(file_path, "wb")
|
||||
file_to_write.write(downloaded_song[1])
|
||||
file_to_write.close()
|
Loading…
Reference in new issue