Source code for flexget.components.history.cli
from sqlalchemy import desc
from flexget import options
from flexget.event import event
from flexget.manager import Session
from flexget.terminal import TerminalTable, console, table_parser
from . import db
[docs]
def do_cli(manager, options):
with Session() as session:
query = session.query(db.History)
if options.search:
search_term = options.search.replace(' ', '%').replace('.', '%')
query = query.filter(db.History.title.like('%' + search_term + '%'))
if options.task:
query = query.filter(db.History.task.like('%' + options.task + '%'))
query = query.order_by(desc(db.History.time)).limit(options.limit)
headers = ['Time', 'Title'] if options.short else ['Field', 'Value']
title = f'Showing {query.count()} entries from History'
table = TerminalTable(*headers, table_type=options.table_type, title=title)
for item in reversed(query.all()):
if not options.short:
table.add_row('Task', item.task)
table.add_row('Title', item.title)
table.add_row('URL', item.url)
table.add_row('Time', item.time.strftime('%c'))
table.add_row('Details', item.details)
if item.filename:
table.add_row('Stored', item.filename)
table.rows[-1].end_section = True
else:
table.add_row(item.time.strftime('%c'), item.title)
if not table.row_count:
console('No history to display')
return
console(table)
[docs]
@event('options.register')
def register_parser_arguments():
parser = options.register_command(
'history',
do_cli,
help='View the history of entries that FlexGet has accepted',
parents=[table_parser],
)
parser.add_argument(
'--limit',
action='store',
type=int,
metavar='NUM',
default=50,
help='limit to %(metavar)s results',
)
parser.add_argument(
'--search',
action='store',
metavar='TERM',
help='Limit to results that contain %(metavar)s',
)
parser.add_argument(
'--task', action='store', metavar='TASK', help='Limit to results in specified %(metavar)s'
)
parser.add_argument(
'--short', '-s', action='store_true', dest='short', default=False, help='Shorter output'
)