예제 #1
0
파일: database.py 프로젝트: Klaboe/Flexget
                    tables += " " * 25
                    line_len = len(name) + 2
                else:
                    line_len += len(name) + 2
                tables += name + ", "
            tables = tables.rstrip(", ")
            console("%-20s %s   %s" % (k, v["version"], tables))
    else:
        try:
            reset_schema(plugin)
            console("The database for `%s` has been reset." % plugin)
        except ValueError as e:
            console("Unable to reset %s: %s" % (plugin, e.message))


parser = add_subparser("database", do_cli, help="utilities to manage the FlexGet database")
subparsers = parser.add_subparsers(title="Actions", metavar="<action>", dest="db_action")
subparsers.add_parser("cleanup", help="make all plugins clean un-needed data from the database")
subparsers.add_parser("vacuum", help="running vacuum can increase performance and decrease database size")
reset_parser = subparsers.add_parser("reset", add_help=False, help="reset the entire database (DANGEROUS!)")
reset_parser.add_argument(
    "--sure", action="store_true", required=True, help="you must use this flag to indicate you REALLY want to do this"
)
reset_plugin_parser = subparsers.add_parser("reset-plugin", help="reset the database for a specific plugin")
reset_plugin_parser.add_argument(
    "reset_plugin",
    metavar="<plugin>",
    nargs="?",
    help="name of plugin to reset (if omitted, known plugins will be listed)",
)
예제 #2
0
파일: doc.py 프로젝트: Klaboe/Flexget
            indent = min(indent, len(line) - len(stripped))
    # Remove indentation (first line is special):
    trimmed = [lines[0].strip()]
    if indent < sys.maxint:
        for line in lines[1:]:
            trimmed.append(line[indent:].rstrip())
    # Strip off trailing and leading blank lines:
    while trimmed and not trimmed[-1]:
        trimmed.pop()
    while trimmed and not trimmed[0]:
        trimmed.pop(0)
    # Return a single string:
    return '\n'.join(trimmed)


def print_doc(manager, options):
    plugin_name = options.doc
    plugin = plugins.get(plugin_name, None)
    if plugin:
        if not plugin.instance.__doc__:
            print 'Plugin %s does not have documentation' % plugin_name
        else:
            print ''
            print trim(plugin.instance.__doc__)
            print ''
    else:
        print 'Could not find plugin %s' % plugin_name

parser = add_subparser('doc', print_doc, help='display plugin documentation')
parser.add_argument('doc', metavar='<plugin name>', help='name of plugin to show docs for')
예제 #3
0
def clear():
    """Deletes waiting movies from queue"""
    items = queue_get(downloaded=False)
    console('Removing the following movies from movie queue:')
    console('-' * 79)
    for item in items:
        console(item.title)
        queue_del(title=item.title)
    if not items:
        console('No results')
    console('-' * 79)

# Common option to bu used in multiple subparsers
what_parser = ArgumentParser(add_help=False)
what_parser.add_argument('movie_name', metavar='<movie>',
                         help='the movie (can be movie title, imdb id, or in the form `tmdb_id=XXXX`')
# Register subcommand
parser = add_subparser('movie-queue', do_cli, help='view and manage the movie queue')
# Set up our subparsers
subparsers = parser.add_subparsers(title='actions', metavar='<action>', dest='queue_action')
list_parser = subparsers.add_parser('list', help='list movies from the queue')
list_parser.add_argument('type', nargs='?', choices=['waiting', 'downloaded'], default='waiting',
                         help='choose to show waiting or already downloaded movies')
add_parser = subparsers.add_parser('add', parents=[what_parser], help='add a movie to the queue')
add_parser.add_argument('quality', metavar='<quality>', default='ANY', nargs='?',
                        help='the quality requirements for getting this movie (default: %(default)s)')
del_parser = subparsers.add_parser('del', parents=[what_parser], help='remove a movie from the queue')
forget_parser = subparsers.add_parser('forget', parents=[what_parser], help='remove the downloaded flag from a movie')
clear_parser = subparsers.add_parser('clear', help='remove all un-downloaded movies from the queue')
예제 #4
0
파일: backlog.py 프로젝트: Klaboe/Flexget
        entries = []
        task_backlog = task.session.query(BacklogEntry).filter(BacklogEntry.task == task.name)
        for backlog_entry in task_backlog.all():
            entry = Entry(backlog_entry.entry)

            # this is already in the task
            if task.find_entry(title=entry['title'], url=entry['url']):
                continue
            log.debug('Restoring %s' % entry['title'])
            entries.append(entry)
        if entries:
            log.verbose('Added %s entries from backlog' % len(entries))

        # purge expired
        for backlog_entry in task_backlog.filter(datetime.now() > BacklogEntry.expire).all():
            log.debug('Purging %s' % backlog_entry.title)
            task.session.delete(backlog_entry)

        return entries


def clear_backlog(manager, options):
    session = Session()
    num = session.query(BacklogEntry).delete()
    session.close()
    console('%s entries cleared from backlog.' % num)

parser = add_subparser('clear-backlog', clear_backlog, help='remove all items from the backlog')

register_plugin(InputBacklog, 'backlog', builtin=True, api_ver=2)
예제 #5
0
파일: history.py 프로젝트: Klaboe/Flexget
                reason = ' (reason: %s)' % entry['reason']
            item.details = 'Accepted by %s%s' % (entry.get('accepted_by', '<unknown>'), reason)
            task.session.add(item)


def do_cli(manager, options):
    session = Session()
    console('-- History: ' + '-' * 67)
    query = session.query(History)
    if options.search:
        search_term = options.search.replace(' ', '%').replace('.', '%')
        query = query.filter(History.title.like('%' + search_term + '%'))
    query = query.order_by(desc(History.time)).limit(options.limit)
    for item in reversed(query.all()):
        console(' Task    : %s' % item.task)
        console(' Title   : %s' % item.title)
        console(' Url     : %s' % item.url)
        if item.filename:
            console(' Stored  : %s' % item.filename)
        console(' Time    : %s' % item.time.strftime("%c"))
        console(' Details : %s' % item.details)
        console('-' * 79)
    session.close()


parser = add_subparser('history', do_cli, help='view the history of entries that FlexGet has accepted')
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')

register_plugin(PluginHistory, 'history', builtin=True, api_ver=2)
예제 #6
0
파일: series.py 프로젝트: Klaboe/Flexget
            set_series_begin(series, ep_id)
        except ValueError as e:
            console(e)
        else:
            console('Episodes for `%s` will be accepted starting with `%s`' % (series.name, ep_id))
            session.commit()
        finally:
            session.close()
        manager.config_changed()


register_plugin(CLISeries, 'cli_series')

# Register the subcommand
instance = get_plugin_by_name('cli_series').instance
parser = add_subparser('series', instance.do_cli, help='view and manipulate the series plugin database')

# Parent parser for subcommands that need a series name
series_parser = argparse.ArgumentParser(add_help=False)
series_parser.add_argument('series_name', help='the name of the series', metavar='<series name>')

# Set up our subparsers
subparsers = parser.add_subparsers(title='actions', metavar='<action>', dest='series_action')
list_parser = subparsers.add_parser('list', help='list a summary of the different series being tracked')
list_parser.add_argument('type', nargs='?', choices=['all', 'configured', 'premieres'], default='configured',
                         help='only list a subset of shows (default: %(default)s)')
list_parser.add_argument('--within', type=int, metavar='DAYS',
                         help='only show series seen within the last %(metavar)s days')
show_parser = subparsers.add_parser('show', parents=[series_parser],
                                    help='show the releases FlexGet has seen for a given series ')
begin_parser = subparsers.add_parser('begin', parents=[series_parser],
예제 #7
0
파일: plugins.py 프로젝트: Klaboe/Flexget
from flexget.plugin import plugins

log = logging.getLogger('plugins')


def plugins_summary(manager, options):
    print '-' * 79
    print '%-20s%-30s%s' % ('Name', 'Roles (priority)', 'Info')
    print '-' * 79

    # print the list
    for name in sorted(plugins):
        plugin = plugins[name]
        # do not include test classes, unless in debug mode
        if plugin.get('debug_plugin', False) and not options.debug:
            continue
        flags = []
        if plugin.instance.__doc__:
            flags.append('--doc')
        if plugin.builtin:
            flags.append('builtin')
        if plugin.debug:
            flags.append('debug')
        handlers = plugin.phase_handlers
        roles = ', '.join('%s(%s)' % (phase, handlers[phase].priority) for phase in handlers)
        print '%-20s%-30s%s' % (name, roles, ', '.join(flags))

    print '-' * 79

parser = add_subparser('plugins', plugins_summary, help='print registered plugin summaries')