from argparse import ArgumentParser from os.path import join from . import _ from .audio import ( prepare_audio_map, generate_audio_report, fix_audio_report_library, ) from .cache import IdRelativeCache from .config import Config from .db import PlaybackReportingDb, LibraryDb, JellyfinDb p = ArgumentParser(prog="jellyfinstats") p.add_argument("-c", "--config", help=_("The path to config file."), default="config.yaml") # noqa: E501 p.add_argument("--playback-reporting-db", help=_("The path to playback_reporting.db")) # noqa: E501 p.add_argument("--library-db", help=_("The path to library.db")) p.add_argument("--jellyfin-data-dir", help=_("The path to jellyfin data directory.")) # noqa: E501 p.add_argument("--output-dir", help=_("The directory for output files.")) p.add_argument("--ask-page-size", help=_("Specify maximum items to display in one page."), type=int) # noqa: E501 p.add_argument("--jellyfin-db", help=_("The path to jellyfin.db")) p.add_argument("--fix", help=_("Fix incorrect play duration."), action='store_true', default=False) # noqa: E501 arg = p.parse_intermixed_args() cfg = Config(arg.config, arg) with PlaybackReportingDb(cfg.playback_reporting_db) as pdb: if arg.fix: fix_audio_report_library(pdb) with LibraryDb(cfg.library_db) as ldb: with IdRelativeCache(cfg.output_dir) as icache: with JellyfinDb(cfg.jellyfin_db) as jdb: re = prepare_audio_map(pdb, ldb, icache, cfg) users = pdb.get_users('Audio') for u in users: userid = u['UserId'] user = jdb.get_user(userid) username = user['Username'] if user else userid output = join(cfg.output_dir, 'audio', username) maxDate = u['MaxDate'] minDate = u['MinDate'] generate_audio_report( pdb, re[0], re[1], re[2], output, userid)