Initial commit, first working version

This commit is contained in:
2026-03-08 03:16:08 +00:00
parent 13de539972
commit 9ac970edd9
8 changed files with 472 additions and 0 deletions

63
scripts/dl.py Executable file
View 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")