diff --git a/config/scripts/rssVideos b/config/scripts/rssVideos index b88439c..c36b861 100755 --- a/config/scripts/rssVideos +++ b/config/scripts/rssVideos @@ -41,6 +41,9 @@ def configure_logging(args: configargparse.Namespace) -> None: logger=log, ) +class RVCommand(enum.Enum): + download = "download" + list = "list" class RVElement: title: str @@ -302,6 +305,15 @@ def get_args() -> configargparse.Namespace: action="store_true", ) + parser.set_defaults(subcommand=RVCommand.download) + subparsers = parser.add_subparsers(title="subcommand") + + sc_download = subparsers.add_parser("download") + sc_download.set_defaults(subcommand=RVCommand.download) + + sc_list = subparsers.add_parser("list") + sc_list.set_defaults(subcommand=RVCommand.list) + args = parser.parse_args() args.videos = os.path.realpath(os.path.expanduser(args.videos)) @@ -315,14 +327,22 @@ def main() -> None: os.makedirs(args.videos, exist_ok=True) os.chdir(args.videos) - database = RVDatabase(args) - database.read_feed() - cache = RVDatabase.load() - if cache: - database.read_cache(cache) - database.clean() - database.act_all() - database.save() + if args.subcommand == RVCommand.download: + database = RVDatabase(args) + database.read_feed() + cache = RVDatabase.load() + if cache: + database.read_cache(cache) + database.clean() + database.act_all() + database.save() + + elif args.subcommand == RVCommand.list: + cache = RVDatabase.load() + if not cache: + raise FileNotFoundError("This command doesn't work without a cache yet.") + for element in cache.elements: + print(element) if __name__ == "__main__":