예제 #1
0
def main(args):
    """
    メイン。

    :param args: ArgumentParser.parse_args() によって解釈された引数
    :rtype: bool
    """
    is_debug = int(os.getenv("PYTHON_TEST", 0))
    mailadrs = args.mail[0] if args.mail else None
    password = args.password[0] if args.password else None

    #
    # エラーの除外
    #
    if hasattr(args, "dmc"):
        sys.exit(Err.unexpected_commands.format("--dmc"))
    if hasattr(args, "smile"):
        sys.exit(Err.unexpected_commands.format("--smile"))
    videoid = utils.validator(args.VIDEO_ID)
    if not videoid:
        sys.exit(Err.invalid_videoid)
    if not (args.getthumbinfo or args.thumbnail or args.comment or args.video):
        sys.exit(
            Err.not_specified.format("--thumbnail、 --comment、 --video のいずれか"))

    if args.getthumbinfo:
        file_name = args.out[0] if isinstance(args.out, list) else None
        return utils.print_info(videoid, file_name)

    #
    # 本筋
    #
    log_level = "DEBUG" if is_debug else args.loglevel
    logger = utils.NTLogger(log_level=log_level, file_name=utils.LOG_FILE_ND)
    destination = utils.make_dir(args.dest[0])
    database = get_infos(videoid, logger=logger)

    res_t = False
    if args.thumbnail:
        res_t = Thumbnail(logger=logger).start(database, destination)
        if not (args.comment or args.video):
            # サムネイルのダウンロードだけならここで終える。
            return res_t

    session = utils.LogIn(mail=mailadrs, password=password).session

    res_c = False
    if args.comment:
        res_c = Comment(logger=logger,
                        session=session).start(database, destination, args.xml)

    res_v = False
    if args.video:
        res_v = Video(logger=logger,
                      session=session).start(database, destination)

    return res_c | res_v | res_t
예제 #2
0
 def __init__(self, mail=None, password=None, logger=None, session=None):
     """
     :param str | None mail:
     :param str | None password:
     :param NTLogger logger:
     :param requests.Session session:
     """
     super().__init__(logger=logger)
     self.session = session or utils.LogIn(mail=mail,
                                           password=password).session
예제 #3
0
 def test_login_3(self):
     assert "-" in utils.LogIn(*AUTH_N).token
예제 #4
0
 def test_login_2(self):
     if AUTH_P[0] is not None:
         sess = utils.LogIn(*AUTH_P).session
         assert "-" in utils.LogIn(None, None, session=sess).token
예제 #5
0
 def test_login_1(self):
     if AUTH_P[0] is not None:
         _ = utils.LogIn(*AUTH_P).session
         sess = utils.LogIn().session
         assert utils.LogIn(*AUTH_N, session=sess).is_login is True
예제 #6
0
    def __init__(self, mail=None, password=None, logger=None):
        """
        使い方:

            MYLISTに動画を追加する:
                mylist MYLIST --add sm1 sm2 sm3
            IDを一行ごとに書いたファイルからMYLISTに動画を追加する:
                mylist MYLIST --add +C:/Users/Me/Desktop/ids.txt
            MYLISTをそのIDで指定する:
                mylist 12345678 --id --add sm1 sm2 sm3
            MYLISTから動画を削除する:
                mylist MYLIST --delete sm1 sm2 sm3
            MYLIST の中のもの全てを削除する:
                mylist MYLIST --delete *
            MYLIST の中のもの全てを削除する(確認なし):
                mylist MYLIST --delete * --yes
            MYLIST の中の動画を --to に移す:
                mylist MYLIST --to なんとかかんとか --move sm1 sm2 sm3
            MYLIST の中のもの全てを --to に移す:
                mylist MYLIST --to なんとかかんとか --move *
            MYLIST の中の動画を --to に写す:
                mylist MYLIST --to なんとかかんとか --copy sm1 sm2 sm3
            MYLIST の中のもの全てを --to に写す:
                mylist MYLIST --to なんとかかんとか --copy *

            特定のマイリストの中身を一覧にする:
                mylist MYLIST --export
            全てのマイリストの名前を一覧にする:
                mylist * --show
            全てのマイリストの中身を一覧にする(タブ区切り):
                mylist * --show --everything --out D:/Downloads/all.txt
            全てのマイリストの中身を一覧にする(表形式):
                mylist * --show --show --everything --out D:/Downloads/all.txt
            全てのマイリストの中身を一覧にする:
                mylist * --export --everything --out D:/Downloads/all.txt
            マイリスト全体のメタデータを一覧にする:
                mylist * --export --out D:/Downloads/all.txt
            指定したマイリストに登録されたIDをファイルに出力する:
                mylist MYLIST --export --out C:/Users/Me/Desktop/file.txt
            指定した名前で新しいマイリストを作る:
                mylist MYLIST --create
            指定した名前のマイリストを削除する:
                mylist MYLIST --purge
            指定した名前のマイリストを削除する(確認なし):
                mylist MYLIST --purge --yes

        他のコマンド:
            それぞれにはログインに必要な情報を与えられる:
                mylist MYLIST --add sm9 --mail <メールアドレス> --pass <パスワード>

            引数がどの様に解釈されるかを確認したいとき (確認するだけで、プログラムは実行しません):
                mylist --export --id 12345678 --out ../file.txt --what

            ログ出力の詳細さを変える:
                mylist --loglevel WARNING  # エラー以外表示しない

            引用符を含むマイリスト名の指定方法:
                * 「"マイ'リ'スト"」 を指定するには 「"\"マイ'リ'スト\""」
                * 「'マイ"リ"スト'」 を指定するには 「"'マイ\"リ\"スト'"」

        :param str | None mail: メールアドレス
        :param str | None password: パスワードの組
        :param NTLogger logger:
        :rtype: None
        """
        super().__init__(logger=logger)
        __login = utils.LogIn(mail=mail, password=password)
        self.session = __login.session
        self.token = __login.token
        self.mylists = self.get_mylists_info()