mirror of
https://github.com/Xevion/v1.xevion.dev.git
synced 2026-01-31 10:26:36 -06:00
properly add in spotify_explicit portion
This commit is contained in:
@@ -0,0 +1,65 @@
|
||||
import os
|
||||
import sys
|
||||
import auth
|
||||
import json
|
||||
import shutil
|
||||
import pprint
|
||||
import spotipy
|
||||
import logging
|
||||
from hurry.filesize import size, alternative
|
||||
import spotipy.util as util
|
||||
|
||||
def main():
|
||||
# Get Authorization
|
||||
logging.basicConfig(level=logging.INFO)
|
||||
logging.info('Authorizing with Spotify via Spotipy')
|
||||
logging.warning('May require User Interaction to authenticate properly!')
|
||||
token = util.prompt_for_user_token(
|
||||
username=auth.USERNAME,
|
||||
scope=auth.SCOPE,
|
||||
client_id=auth.CLIENT_ID,
|
||||
client_secret=auth.CLIENT_SECRET,
|
||||
redirect_uri=auth.REDIRECT_URI
|
||||
)
|
||||
sp = spotipy.Spotify(auth=token)
|
||||
logging.info('Authorized with Spotify via Spotipy')
|
||||
|
||||
tracks_folder = os.path.join(sys.path[0], 'tracks')
|
||||
logging.warning('Clearing all files in tracks folder for new files')
|
||||
if os.path.exists(tracks_folder):
|
||||
shutil.rmtree(tracks_folder) # Delete folder and all contents (old track files)
|
||||
os.makedirs(tracks_folder) # Recreate the folder just deleted
|
||||
logging.info('Cleared folder, ready to download new track files')
|
||||
|
||||
curoffset, curlimit = 0, 50
|
||||
while curoffset >= 0:
|
||||
# Request and identify what was received
|
||||
logging.info('Requesting {} to {}'.format(curoffset, curoffset + curlimit))
|
||||
response = sp.current_user_saved_tracks(limit=curlimit, offset=curoffset)
|
||||
received = len(response['items'])
|
||||
logging.info('Received {} to {}'.format(curoffset, curoffset + received))
|
||||
# Create path/filename
|
||||
filename = f'saved-tracks-{curoffset}-{curoffset + received}.json'
|
||||
filepath = os.path.join(tracks_folder, filename)
|
||||
# Save track file
|
||||
with open(filepath, 'w+') as file:
|
||||
json.dump(response, file)
|
||||
logging.info('Saved at "{}" ({})'.format(
|
||||
f'\\tracks\\{filename}',
|
||||
size(os.path.getsize(filepath)))
|
||||
)
|
||||
# Decide whether we have received all possible tracks
|
||||
if received < curlimit:
|
||||
logging.info('Requested and saved {} tracks split over {} files ({})'.format(
|
||||
curoffset + received,
|
||||
len(os.listdir(tracks_folder)),
|
||||
size(
|
||||
sum(
|
||||
os.path.getsize(os.path.join(tracks_folder, file)) for file in os.listdir(tracks_folder)
|
||||
),
|
||||
system=alternative
|
||||
)
|
||||
))
|
||||
break
|
||||
# Continuing, so increment offset
|
||||
curoffset += curlimit
|
||||
Reference in New Issue
Block a user