def seen_search(options, session=None): search_term = options.search_term if is_imdb_url(search_term): console('IMDB url detected, parsing ID') imdb_id = extract_id(search_term) if imdb_id: search_term = imdb_id else: console("Could not parse IMDB ID") else: search_term = '%' + options.search_term + '%' seen_entries = db.search(value=search_term, status=None, session=session) table_data = [] for se in seen_entries.all(): table_data.append(['Title', se.title]) for sf in se.fields: if sf.field.lower() == 'title': continue table_data.append(['{}'.format(sf.field.upper()), str(sf.value)]) table_data.append(['Task', se.task]) table_data.append(['Added', se.added.strftime('%Y-%m-%d %H:%M')]) if options.table_type != 'porcelain': table_data.append(['', '']) if not table_data: console('No results found for search') return if options.table_type != 'porcelain': del table_data[-1] try: table = TerminalTable(options.table_type, table_data, wrap_columns=[1]) table.table.inner_heading_row_border = False console(table.output) except TerminalTableError as e: console('ERROR: %s' % str(e))
def seen_search(options, session=None): search_term = options.search_term if is_imdb_url(search_term): console('IMDB url detected, parsing ID') imdb_id = extract_id(search_term) if imdb_id: search_term = imdb_id else: console("Could not parse IMDB ID") else: search_term = '%' + options.search_term + '%' seen_entries = db.search(value=search_term, status=None, session=session) table = TerminalTable('Field', 'Value', table_type=options.table_type) for se in seen_entries.all(): table.add_row('Title', se.title) for sf in se.fields: if sf.field.lower() == 'title': continue table.add_row('{}'.format(sf.field.upper()), str(sf.value)) table.add_row('Task', se.task) table.add_row('Added', se.added.strftime('%Y-%m-%d %H:%M'), end_section=True) if not table.rows: console('No results found for search') return console(table)
def seen_search(options, session=None): search_term = options.search_term if is_imdb_url(search_term): console('IMDB url detected, parsing ID') imdb_id = extract_id(search_term) if imdb_id: search_term = imdb_id else: console("Could not parse IMDB ID") else: search_term = '%' + options.search_term + '%' seen_entries = db.search(value=search_term, status=None, session=session) table_data = [] for se in seen_entries.all(): table_data.append(['Title', se.title]) for sf in se.fields: if sf.field.lower() == 'title': continue table_data.append(['{}'.format(sf.field.upper()), str(sf.value)]) table_data.append(['Task', se.task]) table_data.append(['Added', se.added.strftime('%Y-%m-%d %H:%M')]) if options.table_type != 'porcelain': table_data.append(['', '']) if not table_data: console('No results found for search') return if options.table_type != 'porcelain': del table_data[-1] try: table = TerminalTable(options.table_type, table_data, wrap_columns=[1]) table.table.inner_heading_row_border = False console(table.output) except TerminalTableError as e: console('ERROR: %s' % str(e))
def seen_add(manager: Manager, options): DEFAULT_TASK = 'cli_add' seen_name = options.add_value if is_imdb_url(seen_name): console('IMDB url detected, try to parse ID') imdb_id = extract_id(seen_name) if imdb_id: seen_name = imdb_id else: console("Could not parse IMDB ID") task = DEFAULT_TASK local = None if options.task and not options.task in manager.tasks: console(f"Task `{options.task}` not in config") return else: task = options.task local = True db.add(seen_name, task, {'cli_add': seen_name}, local=local) if task == DEFAULT_TASK: console(f'Added `{seen_name}` as seen. This will affect all tasks.') else: console(f'Added `{seen_name}` as seen. This will affect `{task}` task.')
def seen_forget(manager: Manager, options): forget_name = options.forget_value if is_imdb_url(forget_name): imdb_id = extract_id(forget_name) if imdb_id: forget_name = imdb_id tasks = None if options.tasks: tasks = [] for task in options.tasks: try: tasks.extend(m for m in manager.matching_tasks(task) if m not in tasks) except ValueError as e: console(e) continue # If tasks are specified it should use pattern matching as search if tasks: forget_name = forget_name.replace("%", "\\%").replace("_", "\\_") forget_name = forget_name.replace("*", "%").replace("?", "_") count, fcount = db.forget(forget_name, tasks=tasks, test=options.test) console(f'Removed {count} titles ({fcount} fields)') manager.config_changed()
def seen_forget(manager, options): forget_name = options.forget_value if is_imdb_url(forget_name): imdb_id = extract_id(forget_name) if imdb_id: forget_name = imdb_id count, fcount = db.forget(forget_name) console('Removed %s titles (%s fields)' % (count, fcount)) manager.config_changed()
def seen_forget(manager, options): forget_name = options.forget_value if is_imdb_url(forget_name): imdb_id = extract_id(forget_name) if imdb_id: forget_name = imdb_id count, fcount = db.forget(forget_name) console('Removed %s titles (%s fields)' % (count, fcount)) manager.config_changed()
def seen_add(options): seen_name = options.add_value if is_imdb_url(seen_name): console('IMDB url detected, try to parse ID') imdb_id = extract_id(seen_name) if imdb_id: seen_name = imdb_id else: console("Could not parse IMDB ID") db.add(seen_name, 'cli_add', {'cli_add': seen_name}) console('Added %s as seen. This will affect all tasks.' % seen_name)
def seen_add(options): seen_name = options.add_value if is_imdb_url(seen_name): console('IMDB url detected, try to parse ID') imdb_id = extract_id(seen_name) if imdb_id: seen_name = imdb_id else: console("Could not parse IMDB ID") db.add(seen_name, 'cli_add', {'cli_add': seen_name}) console('Added %s as seen. This will affect all tasks.' % seen_name)
def seen_search(manager: Manager, options, session=None): search_term = options.search_term if is_imdb_url(search_term): console('IMDB url detected, parsing ID') imdb_id = extract_id(search_term) if imdb_id: search_term = imdb_id else: console("Could not parse IMDB ID") else: search_term = search_term.replace("%", "\\%").replace("_", "\\_") search_term = search_term.replace("*", "%").replace("?", "_") tasks = None if options.tasks: tasks = [] for task in options.tasks: try: tasks.extend(m for m in manager.matching_tasks(task) if m not in tasks) except ValueError as e: console(e) continue seen_entries = db.search(value=search_term, status=None, tasks=tasks, session=session) table = TerminalTable('Field', 'Value', table_type=options.table_type) for se in seen_entries.all(): table.add_row('Title', se.title) for sf in se.fields: if sf.field.lower() == 'title': continue table.add_row('{}'.format(sf.field.upper()), str(sf.value)) table.add_row('Task', se.task) if se.local: table.add_row('Local', 'Yes') table.add_row('Added', se.added.strftime('%Y-%m-%d %H:%M'), end_section=True) if not table.rows: console('No results found for search') return console(table)