Initial commit, first working version
This commit is contained in:
63
scripts/dl.py
Executable file
63
scripts/dl.py
Executable file
@@ -0,0 +1,63 @@
|
||||
#!/usr/bin/env python3
|
||||
from beacon_snatch import BeaconAuthentication
|
||||
from pyvirtualdisplay import Display
|
||||
|
||||
import sys
|
||||
|
||||
from autosnatch.logger import getLogger, getLogLevel
|
||||
from autosnatch import tools
|
||||
from autosnatch.config import Config
|
||||
|
||||
logger = getLogger(__name__)
|
||||
logger.setLevel(Config.LOG_LEVEL)
|
||||
|
||||
def main(log_level, args):
|
||||
logger.debug(f"Passed args: {', '.join(args)}")
|
||||
|
||||
if len(args)>2:
|
||||
logger.info(f"Ignoring extra args: {', '.join(args[1:])}")
|
||||
|
||||
if len(args)<=0:
|
||||
logger.error("Missing series.")
|
||||
return
|
||||
series_id = args[0]
|
||||
series_title = tools.seriesTitle(series_id)
|
||||
|
||||
if series_id not in Config.SUPPORTED_SERIES:
|
||||
logger.error(f"Series type '{series_id}' not supported. Must be one of: {', '.join(Config.SUPPORTED_SERIES)}")
|
||||
return
|
||||
|
||||
if len(args)<2:
|
||||
logger.error("Missing episode number (either a number or 'latest').")
|
||||
return
|
||||
|
||||
if args[1] != "latest" and not args[1].isdigit():
|
||||
logger.error("Invalid episode number. Must either be a number or 'latest'.")
|
||||
return
|
||||
desired_episode = args[1]
|
||||
|
||||
if desired_episode == "latest": logger.info(f"Target: Latest episode of {series_title}")
|
||||
if desired_episode.isdigit(): logger.info(f"Target: Episode #{desired_episode} of {series_title}")
|
||||
|
||||
logger.info("Authenticating to Beacon via beacon-snatch...")
|
||||
auth = BeaconAuthentication(email=Config.BEACON_EMAIL, password=Config.BEACON_PASSWORD)
|
||||
auth.authenticate()
|
||||
|
||||
episode = tools.grabEpisodeInfo(auth, series_id, desired_episode)
|
||||
if not episode:
|
||||
logger.error(f"Cannot find episode #{desired_episode} of {series_title}.")
|
||||
return
|
||||
|
||||
tools.downloadEpisode(auth, episode)
|
||||
logger.info(f"Successfully downloaded video, subs, and thumb for episode #{episode['number']} of {series_title}: \"{episode['title']}\"")
|
||||
logger.info("All done. Stopping virtual display...")
|
||||
|
||||
if __name__=="__main__":
|
||||
display = Display(visible=0, size=(1024, 768))
|
||||
display.start()
|
||||
try:
|
||||
main(getLogLevel(), sys.argv[1:])
|
||||
finally:
|
||||
display.stop()
|
||||
logger.info("Virtual display stopped. Mission success o7")
|
||||
|
||||
Reference in New Issue
Block a user