Разработано MVP
This commit is contained in:
1
app/__init__.py
Normal file
1
app/__init__.py
Normal file
@ -0,0 +1 @@
|
||||
from .main import run
|
60
app/main.py
Normal file
60
app/main.py
Normal file
@ -0,0 +1,60 @@
|
||||
import os
|
||||
import logging
|
||||
import random
|
||||
import time
|
||||
|
||||
from yandex_music import Client
|
||||
|
||||
import config
|
||||
|
||||
|
||||
logging.basicConfig(
|
||||
level=logging.INFO,
|
||||
)
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
|
||||
def run():
|
||||
logger.info('Init')
|
||||
client = Client(
|
||||
token=config.Yandex.token,
|
||||
)
|
||||
client.init()
|
||||
logger.info('Getting tracklist')
|
||||
tracklist = client.usersLikesTracks()
|
||||
dirpath = str(os.path.join(
|
||||
config.Main.working_directory,
|
||||
config.Download.dirname,
|
||||
))
|
||||
os.makedirs(
|
||||
name=dirpath,
|
||||
exist_ok=True,
|
||||
)
|
||||
for track in tracklist:
|
||||
logger.info('Fetching track with ID %s' % track.id)
|
||||
track = track.fetch_track()
|
||||
logger.info('Downloading track %s — %s' % (
|
||||
', '.join(track.artistsName()),
|
||||
track.title,
|
||||
))
|
||||
title = track.title
|
||||
for symbol in config.Download.escape_symbols:
|
||||
title = title.replace(symbol, '')
|
||||
track.download(
|
||||
filename=str(os.path.join(
|
||||
dirpath,
|
||||
config.Download.filename % {
|
||||
'artists': ', '.join(track.artistsName()),
|
||||
'title': title,
|
||||
'codec': config.Download.codec,
|
||||
},
|
||||
)),
|
||||
codec=config.Download.codec,
|
||||
bitrate_in_kbps=config.Download.bitrate,
|
||||
)
|
||||
delay = random.randint(
|
||||
config.Download.min_delay,
|
||||
config.Download.max_delay,
|
||||
)
|
||||
time.sleep(delay)
|
Reference in New Issue
Block a user