Esempio n. 1
0
File: main.py Progetto: luence/BGmi
def main():
    setup()
    c = argparse.ArgumentParser()

    c.add_argument('--version', help='Show the version of BGmi.', action='version', version=print_version())

    sub_parser = c.add_subparsers(help='BGmi actions', dest='action')

    for action in actions_and_arguments:
        tmp_sub_parser = sub_parser.add_parser(action['action'], help=action.get('help', ''))
        for sub_action in action.get('arguments', []):
            tmp_sub_parser.add_argument(sub_action['dest'], **sub_action['kwargs'])

    sub_parser_del = sub_parser.add_parser(ACTION_COMPLETE, help='Gen completion, `eval "$(bgmi complete)"` or `eval "$(bgmi complete|dos2unix)"`')
    # sub_parser_del.add_argument('command', nargs='+', )

    ret = c.parse_args()
    if ret.action == 'install':
        import bgmi.setup

        bgmi.setup.install()
        get_web_admin(method='install')

        raise SystemExit
    elif ret.action == 'upgrade':
        create_dir()
        update_database()
        check_update(mark=False)
    else:
        check_update()
        controllers(ret)
Esempio n. 2
0
def main():
    setup()
    c = argparse.ArgumentParser()

    c.add_argument(
        "--version",
        help="Show the version of BGmi.",
        action="version",
        version=print_version(),
    )

    sub_parser = c.add_subparsers(help="BGmi actions", dest="action")

    for action in actions_and_arguments:
        tmp_sub_parser = sub_parser.add_parser(action["action"],
                                               help=action.get("help", ""))
        for sub_action in action.get("arguments", []):
            if isinstance(sub_action["dest"], str):
                tmp_sub_parser.add_argument(sub_action["dest"],
                                            **sub_action["kwargs"])
            if isinstance(sub_action["dest"], list):
                tmp_sub_parser.add_argument(*sub_action["dest"],
                                            **sub_action["kwargs"])

    sub_parser.add_parser(
        ACTION_COMPLETE,
        help='Gen completion, `eval "$(bgmi complete)"` '
        'or `eval "$(bgmi complete|dos2unix)"`',
    )
    # sub_parser_del.add_argument('command', nargs='+', )

    ret = c.parse_args()
    if ret.action == "install":
        import bgmi.setup

        bgmi.setup.install()
        get_web_admin(method="install")

        raise SystemExit
    elif ret.action == "upgrade":
        create_dir()
        update_database()
        check_update(mark=False)
    else:
        check_update()
        controllers(ret)
Esempio n. 3
0
File: main.py Progetto: xxoxx/BGmi
            print_success('%s has been mark as episode: %s' %
                          (followed_obj, followed_obj.episode))
        else:
            print_info('%s, episode: %s' %
                       (followed_obj, followed_obj.episode))
    else:
        bangumi_calendar(force_update=False, followed=True, save=False)


def init_db(db_path):
    conn = sqlite3.connect(db_path)
    conn.execute(CREATE_TABLE_BANGUMI)
    conn.execute(CREATE_TABLE_FOLLOWED)
    conn.execute(CREATE_TABLE_DOWNLOAD)
    conn.commit()
    conn.close()


def setup():
    if not os.path.exists(BGMI_PATH):
        print_error('BGMI_PATH %s does not exist, try to reinstall' %
                    BGMI_PATH)

    if not os.path.exists(DB_PATH):
        init_db(DB_PATH)
    main()


if __name__ == '__main__':
    setup()
Esempio n. 4
0
def main():
    setup()
    c = argparse.ArgumentParser()

    c.add_argument('--version',
                   help='Show the version of BGmi.',
                   action='version',
                   version=print_version())

    sub_parser = c.add_subparsers(help='BGmi actions', dest='action')
    sub_parser_add = sub_parser.add_parser(ACTION_ADD,
                                           help='Subscribe bangumi.')
    sub_parser_add.add_argument('name',
                                metavar='name',
                                type=unicode_,
                                nargs='+',
                                help='Bangumi name')
    sub_parser_add.add_argument(
        '--episode',
        metavar='episode',
        help='Add bangumi and mark it as specified episode.',
        type=int)
    sub_parser_add.add_argument(
        '--not-ignore',
        action='store_true',
        help='Do not ignore the old bangumi detail rows (3 month ago).')

    sub_parser_list = sub_parser.add_parser(ACTION_LIST,
                                            help='List subscribed bangumi.')

    sub_parser_filter = sub_parser.add_parser(ACTION_FILTER,
                                              help='Set bangumi fetch filter.')
    sub_parser_filter.add_argument('name',
                                   metavar='name',
                                   type=unicode_,
                                   help='Bangumi name to set the filter.')
    sub_parser_filter.add_argument('--subtitle',
                                   metavar='subtitle',
                                   type=unicode_,
                                   help='Subtitle group name, split by ",".')
    sub_parser_filter.add_argument(
        '--include',
        metavar='include',
        type=unicode_,
        help='Filter by keywords which in the title, split by ",".')
    sub_parser_filter.add_argument(
        '--exclude',
        metavar='exclude',
        type=unicode_,
        help='Filter by keywords which not int the title, split by ",".')
    sub_parser_filter.add_argument('--regex',
                                   metavar='regex',
                                   type=unicode_,
                                   help='Filter by regular expression')

    sub_parser_del = sub_parser.add_parser(ACTION_DELETE,
                                           help='Unsubscribe bangumi.')
    sub_parser_del_mutex = sub_parser_del.add_mutually_exclusive_group(
        required=True)
    sub_parser_del_mutex.add_argument('--name',
                                      metavar='name',
                                      nargs='+',
                                      type=unicode_,
                                      help='Bangumi name to unsubscribe.')
    sub_parser_del_mutex.add_argument('--clear-all',
                                      action='store_true',
                                      help='Clear all the subscriptions.')
    sub_parser_del.add_argument('--batch',
                                action='store_true',
                                help='No confirmation.')

    sub_parser_update = sub_parser.add_parser(
        ACTION_UPDATE,
        help='Update bangumi calendar and '
        'subscribed bangumi episode.')
    sub_parser_update.add_argument('name',
                                   metavar='name',
                                   type=unicode_,
                                   nargs='*',
                                   help='Update specified bangumi.')
    sub_parser_update.add_argument(
        '--download',
        action='store',
        help='Download specified episode of the bangumi when updated.',
        nargs='*',
        type=int,
        metavar='episode')
    sub_parser_update.add_argument(
        '--not-ignore',
        action='store_true',
        help='Do not ignore the old bangumi detail rows (3 month ago).')

    sub_parser_cal = sub_parser.add_parser(ACTION_CAL,
                                           help='Print bangumi calendar.')
    sub_parser_cal.add_argument('--today',
                                action='store_true',
                                help='Show bangumi calendar for today.')
    sub_parser_cal.add_argument(
        '--force-update',
        action='store_true',
        help='Get the newest bangumi calendar from bangumi.moe.')
    sub_parser_cal.add_argument('--download-cover',
                                action='store_true',
                                help='Download the cover to local')
    sub_parser_cal.add_argument(
        '--no-save',
        action='store_true',
        help='Do not save the bangumi data when force update.')

    sub_parser_config = sub_parser.add_parser(ACTION_CONFIG,
                                              help='Config BGmi.')
    sub_parser_config.add_argument('name',
                                   nargs='?',
                                   type=unicode_,
                                   help='Config name')
    sub_parser_config.add_argument('value',
                                   nargs='?',
                                   type=unicode_,
                                   help='Config value')

    sub_parser_mark = sub_parser.add_parser(ACTION_MARK,
                                            help='Mark bangumi episode.')
    sub_parser_mark.add_argument('name', type=unicode_, help='Bangumi name')
    sub_parser_mark.add_argument('episode', help='Bangumi episode', type=int)

    sub_parser_download = sub_parser.add_parser(ACTION_DOWNLOAD,
                                                help='Download manager.')
    sub_parser_download.add_argument('--list',
                                     help='List download queue.',
                                     action='store_true')
    sub_parser_download.add_argument(
        '--mark',
        help='Mark download status with a specific id.',
        dest='id',
        type=int)
    sub_parser_download.add_argument(
        '--status',
        type=int,
        help='Download items status (0: not download, 1: '
        'downloading, 2: alrealy downloaded).',
        choices=[0, 1, 2])

    sub_parser_fetch = sub_parser.add_parser(ACTION_FETCH,
                                             help='Fetch bangumi.')
    sub_parser_fetch.add_argument('name', help='Bangumi name', type=unicode_)
    sub_parser_fetch.add_argument(
        '--not-ignore',
        action='store_true',
        help='Do not ignore the old bangumi detail rows (3 month ago).')

    sub_parser_search = sub_parser.add_parser(ACTION_SEARCH)
    sub_parser_search.add_argument('keyword',
                                   help='Search keyword',
                                   type=unicode_)
    sub_parser_search.add_argument('--count',
                                   type=int,
                                   help='The max page count of search result.')
    sub_parser_search.add_argument('--regex-filter',
                                   type=unicode_,
                                   help='Regular expression filter of title.')
    sub_parser_search.add_argument('--download',
                                   action='store_true',
                                   help='Download search result.')
    sub_parser_search.add_argument(
        '--dupe',
        action='store_true',
        help=
        "Show add result without filter and don't remove duplicated episode")

    sub_parser_search = sub_parser.add_parser(
        ACTION_SOURCE, help='select date source bangumi_moe or mikan_project')
    sub_parser_search.add_argument('source',
                                   help='bangumi_moe or mikan_project',
                                   type=unicode_)

    sub_parser.add_parser(
        'install', help='Install BGmi front / admin / download delegate')
    sub_parser.add_parser('upgrade', help='Check update.')

    ret = c.parse_args()
    if ret.action == 'install':
        import bgmi.setup

        bgmi.setup.install()
        get_web_admin(method='install')

        raise SystemExit
    elif ret.action == 'upgrade':
        create_dir()
        update_database()
        check_update(mark=False)
    else:
        check_update()
        controllers(ret)