Exemplo n.º 1
0
def get_args():
    global VERBOSE
    global verbose
    global FOLLOW_RDR
    global COPY
    global BROWSER

    argparser = argparse.ArgumentParser(
        formatter_class=argparse.RawDescriptionHelpFormatter,
        description='無修正系サイトのURLから素人系総合wiki用ウィキテキストを作成する',
        epilog='対応サイト: JAPORN.TV, 一本道, カリビアンコム(含プレミアム), HEYZO, '
        'HEY動画, Tokyo-Hot(my.tokyo-hot.com), パコパコママ, 天然むすめ,MGS動画,FC2コンテンツマーケット'
        '熟女倶楽部, 人妻パラダイス, 人妻切り')
    argparser.add_argument('url', help='作品ページのURL', nargs='+', metavar='URL')
    argparser.add_argument('-f',
                           '--disable-follow-redirect',
                           help='ページのリダイレクト先を取得しない',
                           dest='follow_rdr',
                           action='store_false',
                           default=True)

    argparser.add_argument('-c',
                           '--copy',
                           help='作成したウィキテキストをクリップボードへコピーする',
                           action='store_true')
    argparser.add_argument('-b',
                           '--browser',
                           help='生成後、wikiのページをウェブブラウザで開く',
                           action='store_true')

    argparser.add_argument('-v',
                           '--verbose',
                           help='デバッグ用情報を出力する',
                           action='count',
                           default=0)
    argparser.add_argument('-V',
                           '--version',
                           help='バージョン情報を表示して終了する',
                           action='version',
                           version='%(prog)s {}'.format(__version__))

    args = argparser.parse_args()

    VERBOSE = args.verbose
    verbose = libssw.def_verbose(VERBOSE, libssw.ownname(__file__))
    verbose('verbose mode on')

    FOLLOW_RDR = args.follow_rdr
    COPY = args.copy
    BROWSER = args.browser

    return args
Exemplo n.º 2
0
def get_args():
    global VERBOSE
    global verbose

    argparser = argparse.ArgumentParser(
        description='Hunter、Apache、ATOMの無駄に長いタイトル用プリプロセッサ')

    argparser.add_argument('start',
                           help='開始ID')
    argparser.add_argument('end',
                           help='終了ID',
                           nargs='?',
                           default='')
    argparser.add_argument('-m', '--maker',
                           help='メーカー',
                           choices=('hunter', 'atom', 'apache'))

    argparser.add_argument('-o', '--out',
                           help='ファイルに出力',
                           metavar='FILE')

    writemode = argparser.add_mutually_exclusive_group()
    writemode.add_argument('-r', '--replace',
                           help='出力ファイルと同名のファイルがあったら上書きする',
                           action='store_true')
    writemode.add_argument('-a', '--append',
                           help='出力ファイルと同名のファイルがあったらそれに追加する',
                           action='store_true')

    argparser.add_argument('--tee',
                           help='ファイルとともに標準出力にも出力する',
                           action='store_true')

    argparser.add_argument('-v', '--verbose',
                           help='デバッグ用情報を出力する',
                           action='count',
                           default=0)
    argparser.add_argument('-V', '--version',
                           help='バージョン情報を表示して終了する',
                           action='version',
                           version='%(prog)s {}'.format(__version__))

    args = argparser.parse_args()

    verbose.verbose = VERBOSE = args.verbose

    VERBOSE = args.verbose
    verbose = libssw.def_verbose(VERBOSE, libssw.ownname(__file__))
    verbose('Verbose mode on')

    return args
Exemplo n.º 3
0
def get_args():
    global VERBOSE
    global verbose

    argparser = argparse.ArgumentParser(
        description='素人系総合Wikiのページ移動用リンクの張替え')
    argparser.add_argument('moves_to',
                           help='移動先ページ名',
                           metavar='MOVES_TO')
    argparser.add_argument('-i', '--input',
                           help='ウィキテキストを格納したファイル(未指定で標準入力から入力)',
                           metavar='INPUT')
    argparser.add_argument('-o', '--out',
                           help='出力ファイル(未指定で標準出力へ出力)',
                           metavar='OUTPUT')
    argparser.add_argument('-r', '--replace',
                           help='出力ファイルと同名のファイルがあった場合上書きする',
                           action='store_true')

    argparser.add_argument('-d', '--diff',
                           help='データ修正前と後の差分をウェブブラウザで表示する',
                           action='store_true')

    argparser.add_argument('-v', '--verbose',
                           help='デバッグ用情報を出力する',
                           action='count',
                           default=0)
    argparser.add_argument('-V', '--version',
                           help='バージョン情報を表示して終了する',
                           action='version',
                           version='%(prog)s {}'.format(__version__))

    args = argparser.parse_args()

    VERBOSE = args.verbose
    verbose = libssw.def_verbose(VERBOSE, libssw.ownname(__file__))
    verbose('verbose mode on')

    return args
Exemplo n.º 4
0
def _get_args(argv, p_args):
    """
    コマンドライン引数の解釈
    """
    global _VERBOSE
    global _AUTOMODIFY
    global _verbose

    argparser = _argparse.ArgumentParser(
        description='DMMのURLから素人系総合wiki用ウィキテキストを作成する')
    argparser.add_argument('url',
                           help='DMMの作品ページのURL',
                           nargs='?',
                           metavar='URL')

    argparser.add_argument('-a',
                           '--actress',
                           help='出演者 (DMMページ内のものに追加する)',
                           nargs='+',
                           default=())
    argparser.add_argument('-n',
                           '--number',
                           help='未知の出演者がいる場合の総出演者数 (… ほか計NUMBER名)',
                           type=int,
                           default=0)

    list_page = argparser.add_mutually_exclusive_group()
    list_page.add_argument('-s',
                           '--series',
                           help='シリーズ一覧へのリンクを追加(DMM上のものを置き換え)',
                           default=getattr(p_args, 'series', None))
    list_page.add_argument('-l',
                           '--label',
                           help='レーベル一覧へのリンクを追加(DMM上のものを置き換え)',
                           default=getattr(p_args, 'label', None))
    list_page.add_argument('--hide-list',
                           help='一覧ページへのリンクを追加しない',
                           action='store_true',
                           default=getattr(p_args, 'hide_list', False))

    argparser.add_argument('-t',
                           '--table',
                           help='一覧ページ用の表形式ウィキテキストを作成する, 2個以上指定すると両方作成する',
                           action='count',
                           default=getattr(p_args, 'table', 0))

    argparser.add_argument('--pid', help='作品の品番を直接指定(-t/-tt 指定時用)')

    argparser.add_argument('--subtitle', help='タイトルの副題を直接指定(-t/-tt 指定時用)')
    argparser.add_argument('--as-series',
                           help='タイトルではなく副題で作成(-t/-tt 指定時用)',
                           action='store_true')

    argparser.add_argument('--note',
                           help='備考(表形式ではNOTEカラム)として出力する文字列',
                           nargs='+',
                           metavar='DATA',
                           default=getattr(p_args, 'note', []))
    argparser.add_argument('-d',
                           '--add-dir-col',
                           help='DIRECTORカラムを出力する (-t/-tt 指定時用)',
                           dest='dir_col',
                           action='store_true',
                           default=getattr(p_args, 'dir_col', False))
    argparser.add_argument('--add-column',
                           help='表形式ヘッダに任意のカラムを追加する (-t/-tt 指定時のみ)',
                           nargs='+',
                           metavar='COLUMN:DATA',
                           default=getattr(p_args, 'add_column', []))

    # 外部からデータ補完
    argparser.add_argument('--join-tsv',
                           help='テキストファイル(TSV)でデータを補完する',
                           nargs='+',
                           metavar='FILE')
    argparser.add_argument('--join-wiki',
                           help='素人系総合Wikiのウィキテキスト(表形式)でデータを補完する',
                           nargs='+',
                           metavar='FILE')
    argparser.add_argument('--join-html',
                           help='素人系総合Wikiの一覧ページを読み込んで補完する',
                           nargs='+',
                           metavar='URL/HTML')

    argparser.add_argument('-f',
                           '--disable-follow-redirect',
                           help='ページのリダイレクト先をチェックしない',
                           dest='follow_rdr',
                           action='store_false',
                           default=getattr(p_args, 'follow_rdr', True))
    argparser.add_argument('--disable-check-rental',
                           help='レンタル先行レーベルでもレンタル版のリリースをチェックしない',
                           dest='check_rental',
                           action='store_false',
                           default=getattr(p_args, 'check_rental', True))
    argparser.add_argument('--disable-check-related',
                           help='他メディアやサービスの情報収集を行わない',
                           dest='check_rltd',
                           action='store_false',
                           default=getattr(p_args, 'check_rltd', True))
    argparser.add_argument('--disable-check-listpage',
                           help='Wiki上の実際の一覧ページを探さない',
                           dest='check_listpage',
                           action='store_false',
                           default=getattr(p_args, 'check_listpage', True))
    argparser.add_argument('--disable-longtitle',
                           help='アパッチ、SCOOPの長いタイトルを補足しない',
                           dest='longtitle',
                           action='store_false',
                           default=getattr(p_args, 'longtitle', True))
    argparser.add_argument('--fastest',
                           help='ウェブにアクセスするあらゆる補助処理を行わない',
                           action='store_true',
                           default=getattr(p_args, 'fastest', False))

    argparser.add_argument('--recheck',
                           help='キャッシュしているリダイレクト先を強制再チェック',
                           action='store_true',
                           default=getattr(p_args, 'recheck', False))

    argparser.add_argument('--disable-modify-title',
                           help='タイトルの自動調整を無効にする',
                           action='store_false',
                           default=True)
    argparser.add_argument('--disable-strip-oldname',
                           help='出演者の旧芸名の自動除去を無効にする',
                           action='store_false',
                           dest='autostrip',
                           default=True)

    argparser.add_argument('-c',
                           '--copy',
                           help='作成したウィキテキストをクリップボードへコピーする(pyperclipが必要)',
                           action='store_true')

    argparser.add_argument('-b',
                           '--browser',
                           help='生成後、wikiのページをウェブブラウザで開く',
                           action='store_true')

    argparser.add_argument('-C',
                           '--clear-cache',
                           help='プログラム終了時にキャッシュをクリアする',
                           action='store_true',
                           default=False)
    argparser.add_argument('--cache-info',
                           help='キャッシュのパスとファイルサイズの合計を出力して終了する',
                           action='store_true')

    argparser.add_argument('-v',
                           '--verbose',
                           help='デバッグ用情報を出力する',
                           action='count',
                           default=getattr(p_args, 'verbose', 0))
    argparser.add_argument('-V',
                           '--version',
                           help='バージョン情報を表示して終了する',
                           action='version',
                           version='%(prog)s {}'.format(__version__))

    args = argparser.parse_args(argv)

    if args.verbose and __name__ != '__main__':
        args.verbose -= 1
    _VERBOSE = args.verbose

    _verbose = _libssw.def_verbose(_VERBOSE, _libssw.ownname(__file__))
    _verbose('verbose mode on')  # verbose モードでなければ無視される

    if args.cache_info:
        _libssw.cache_info()

    # キャッシュディレクトリの削除
    if args.clear_cache:
        _libssw.clear_cache()

    if args.fastest:
        for a in ('follow_rdr', 'check_rental', 'check_listpage', 'check_rltd',
                  'longtitle'):
            setattr(args, a, False)

    _AUTOMODIFY = args.disable_modify_title
    _libssw.RECHECK = args.recheck

    _verbose('args: ', args)
    return args
Exemplo n.º 5
0
"""
import sys as _sys
import re as _re
import argparse as _argparse
import urllib.parse as _up
from itertools import chain as _chain
from collections import namedtuple as _namedtuple

import libssw as _libssw

__version__ = 20151010

_VERBOSE = 0
_AUTOMODIFY = True

_emsg = _libssw.Emsg(_libssw.ownname(__file__))

_ReturnVal = _namedtuple(
    'ReturnVal',
    ('release', 'pid', 'title', 'title_dmm', 'url', 'time', 'maker', 'label',
     'series', 'actress', 'link_label', 'link_series', 'wktxt_a', 'wktxt_t'))

_sub_heart = (_re.compile(r'(ハート)|◆'), r'♥')

_IMG_URL = {
    'dvd': 'https://pics.dmm.co.jp/mono/movie/adult/',
    'rental': 'https://pics.dmm.co.jp/mono/movie/',
    'video': 'https://pics.dmm.co.jp/digital/video/',
    'ama': 'https://pics.dmm.co.jp/digital/amateur/'
}
Exemplo n.º 6
0
def get_args(argv):
    """コマンドライン引数の解釈"""
    global VERBOSE
    global verbose

    argparser = argparse.ArgumentParser(description='DMMから検索して作品一覧を作成する')

    # 処理タイプ
    retrieval = argparser.add_mutually_exclusive_group()
    retrieval.add_argument('-A',
                           '--actress',
                           help='女優IDで一覧取得',
                           action='store_const',
                           dest='retrieval',
                           const='actress')
    retrieval.add_argument('-S',
                           '--series',
                           help='シリーズIDで一覧取得',
                           action='store_const',
                           dest='retrieval',
                           const='series')
    retrieval.add_argument('-L',
                           '--label',
                           help='レーベルIDで一覧取得',
                           action='store_const',
                           dest='retrieval',
                           const='label')
    retrieval.add_argument('-K',
                           '--maker',
                           help='メーカーIDで一覧取得',
                           action='store_const',
                           dest='retrieval',
                           const='maker')
    retrieval.add_argument('-U',
                           '--url',
                           help='していたURLページからそのまま取得',
                           action='store_const',
                           dest='retrieval',
                           const='url')

    # ファイル入力
    from_file = argparser.add_mutually_exclusive_group()
    from_file.add_argument('-i',
                           '--from-tsv',
                           help='TSVファイルから入力',
                           action='store_true')
    from_file.add_argument('-w',
                           '--from-wiki',
                           help='素人総合wikiのウィキテキスト(表形式)から入力',
                           action='store_true')
    from_file.add_argument('--cid',
                           help='DMM上の品番(cid)指定で取得(ページが見つからなくてもリンクは作成する)',
                           action='store_true')
    from_file.add_argument('--cid-l',
                           help='DMM上の品番(cid)指定で取得(ページが見つからなければリンクは作成しない)',
                           action='store_true')

    argparser.add_argument('keyword',
                           help='検索キーワード、ID、品番、URL、またはファイル名',
                           metavar='KEYWORD',
                           nargs='*')

    # ファイル出力
    argparser.add_argument('-o',
                           '--out',
                           help='ファイルに出力 (未指定時は標準出力へ出力)',
                           metavar='FILE')
    argparser.add_argument('-r',
                           '--replace',
                           help='出力ファイルと同名のファイルがあった場合上書きする',
                           action='store_true')

    # 出力形式
    table = argparser.add_mutually_exclusive_group()
    table.add_argument('-t',
                       '--table',
                       help='一覧ページ用の表形式でウィキテキストを作成する, '
                       '2個以上指定すると両方作成する',
                       action='count',
                       default=0)
    table.add_argument('--tsv',
                       help='ウィキテキストを生成せず、タブ区切りの一覧を出力する',
                       action='store_false',
                       dest='wikitext',
                       default=True)

    # データ取得先
    argparser.add_argument('--service',
                           help='一覧を取得するサービスを指定する (デフォルト: '
                           'KEYWORD にURLが与えられればそれから自動判定、'
                           'それ以外なら dvd)',
                           choices=('dvd', 'rental', 'video', 'ama', 'all'))

    # 作品データの除外基準
    argparser.add_argument('-m',
                           '--disable-omit',
                           help='IVを除外しない、2個指定すると総集編も、'
                           '3個指定するとアウトレット版も、'
                           '4個指定すると限定盤も除外しない',
                           dest='no_omit',
                           action='count',
                           default=0)

    # データ作成範囲基準
    id_type = argparser.add_mutually_exclusive_group()
    id_type.add_argument('--start-pid',
                         help='データ作成開始品番(例:JMD-112)',
                         metavar='PID',
                         default='')
    id_type.add_argument('--start-pid-s',
                         help='データ作成開始品番(厳密にチェック)',
                         metavar='PID',
                         default='')
    id_type.add_argument('--start-cid',
                         help='データ作成開始品番(DMM上の品番, 例:15jmd112so)',
                         metavar='CID',
                         default='')
    id_type.add_argument('-e',
                         '--last-pid',
                         help='作成済み作品情報の最後の品番',
                         metavar='PID',
                         default='')
    id_type.add_argument('--last-cid',
                         help='作成済み作品情報の最後の品番(DMM上の品番)',
                         metavar='CID',
                         default='')

    argparser.add_argument('--start-date',
                           help='データ作成対象開始リリース日',
                           metavar='YYYYMMDD')
    argparser.add_argument('--existings-html',
                           help='Wikiの一覧ページに既にある作品の情報は作成しない',
                           nargs='+',
                           metavar='URL/HTML')

    filters = argparser.add_mutually_exclusive_group()
    filters.add_argument('--filter-pid',
                         help='品番(pid)がパターン(正規表現)とマッチしたものだけ作成',
                         metavar='PATTERN')
    filters.add_argument('--filter-pid-s',
                         help='品番(pid)がパターン(正規表現)とマッチしたものだけ作成(厳密にチェク)',
                         metavar='PATTERN')
    filters.add_argument('--filter-cid',
                         help='DMM上の品番(cid)がパターン(正規表現)とマッチしたものだけ作成',
                         metavar='PATTERN')
    filters.add_argument('--filter-title',
                         help='作品名がパターン(正規表現)とマッチしたものだけ作成',
                         metavar='PATTERN')

    argparser.add_argument('--not-in-series',
                           '--n-i-s',
                           help='シリーズに所属していないもののみ作成(-K/-L/-U 指定時)',
                           action='store_true',
                           dest='n_i_s')

    argparser.add_argument('--row',
                           help='先頭行のみなし行開始位置 (-t/-tt 指定時のみ)',
                           type=int,
                           default=0)  # --row のデフォルトは後で決定

    argparser.add_argument('--pages-last',
                           help='データ収集ページ数(最新からPAGEページ分を収集)',
                           type=int,
                           default=0,
                           metavar='PAGE')

    # 外部からデータ補完
    argparser.add_argument('--join-tsv',
                           help='テキストファイル(TSV)でデータを補完する',
                           nargs='+',
                           metavar='FILE')
    argparser.add_argument('--join-wiki',
                           help='素人系総合Wikiのウィキテキスト(表形式)でデータを補完する',
                           nargs='+',
                           metavar='FILE')
    argparser.add_argument('--join-html',
                           help='素人系総合Wikiの一覧ページを読み込んで補完する',
                           nargs='+',
                           metavar='URL/HTML')

    argparser.add_argument('--hunter',
                           help='--join-*オプションを指定したときに作品タイトルは補完ファイルの'
                           'ものを採用する(Hunter系用)',
                           action='store_true')

    # ソート基準
    argparser.add_argument('--sort-key',
                           help='並び替えキー項目',
                           choices=('release', 'pid', 'title'))

    argparser.add_argument('--note',
                           help='エントリの最後かNOTEカラムにデータを追加する',
                           nargs='+',
                           metavar='DATA',
                           default=[])
    # 表形式出力装飾
    argparser.add_argument('-d',
                           '--add-dir-col',
                           help='DIRECTORカラムを追加する (-t/-tt 指定時のみ)',
                           dest='dir_col',
                           action='store_true')
    argparser.add_argument('--add-column',
                           help='表に任意のカラムとデータを追加する (-t/-tt 指定時のみ)',
                           nargs='+',
                           metavar='COLUMN:DATA',
                           default=[])

    # 一覧ページへのリンク追加
    list_page = argparser.add_mutually_exclusive_group()
    list_page.add_argument('-s',
                           '--series-link',
                           help='女優ページ形式でシリーズ一覧へのリンクを置き換え',
                           dest='series')
    list_page.add_argument('-l',
                           '--label-link',
                           help='女優ページ形式でレーベル一覧へのリンクを置き換え',
                           dest='label')
    list_page.add_argument('--hide-list',
                           help='女優ページ形式で一覧ページへのリンクを追加しない',
                           action='store_true',
                           default=False)

    argparser.add_argument('--linklabel', help='一覧ページへのリンクの表示名を置き換える')

    # 品番・副題など自動調整設定
    argparser.add_argument('--pid-regex',
                           help='品番自動生成のカスタム正規表現 (-t/-tt/-w 指定時のみ)',
                           nargs=2,
                           metavar=('PATTERN', 'REPL'))
    argparser.add_argument('--subtitle-regex',
                           help='副題自動生成のカスタム正規表現 (-t/-tt 指定時のみ)',
                           nargs=2,
                           metavar=('PATTERN', 'REPL'))
    argparser.add_argument('--disable-series-guide',
                           help='レーベル一覧ページからシリーズ一覧ページへのガイドを'
                           '追加しない (-t/-tt 指定時のみ)',
                           dest='series_guide',
                           action='store_false',
                           default=True)

    # 出力装飾
    argparser.add_argument('--without-header',
                           help='ヘッダ情報を出力しない',
                           dest='header',
                           action='store_false',
                           default=True)
    argparser.add_argument(
        '--split',
        help='1ページあたりのタイトル数 (デフォルト {})'.format(SPLIT_DEFAULT),
        type=int,
        default=SPLIT_DEFAULT)

    # 補助チェック
    argparser.add_argument('-f',
                           '--disable-follow-redirect',
                           help='ページのリダイレクト先をチェックしない',
                           dest='follow_rdr',
                           action='store_false',
                           default=True)
    argparser.add_argument('--check-rental',
                           help='レンタル先行メーカーでレンタル版じゃなかったのとき'
                           'レンタル版のリリースをチェックする',
                           action='store_true',
                           default=False)
    argparser.add_argument('--disable-check-bd',
                           help='Blu-ray版のときDVD版があってもパスしない',
                           action='store_false',
                           dest='pass_bd',
                           default=True)
    argparser.add_argument('--disable-check-listpage',
                           help='Wiki上の実際の一覧ページを探さない',
                           dest='check_listpage',
                           action='store_false',
                           default=True)
    argparser.add_argument('--disable-check-related',
                           help='他メディアやサービスの情報収集を行わない',
                           dest='check_rltd',
                           action='store_false',
                           default=True)
    argparser.add_argument('--disable-longtitle',
                           help='アパッチ、SCOOPの長いタイトルを補完しない',
                           dest='longtitle',
                           action='store_false',
                           default=True)
    argparser.add_argument('--fastest',
                           help='ウェブにアクセスするあらゆる補助処理を行わない',
                           action='store_true')

    argparser.add_argument('--recheck',
                           help='キャッシュしているリダイレクト先を強制再チェック',
                           action='store_true')

    argparser.add_argument('-c',
                           '--copy',
                           help='作成したウィキテキストをクリップボードへコピーする(pyperclipが必要)',
                           action='store_true')

    # ブラウザ制御
    argparser.add_argument('-b',
                           '--browser',
                           help='生成後、wikiのページをウェブブラウザで開く',
                           action='store_true')

    # その他
    argparser.add_argument('-C',
                           '--clear-cache',
                           help='プログラム終了時にキャッシュをクリアする',
                           action='store_true')
    argparser.add_argument('-v',
                           '--verbose',
                           help='デバッグ用情報を出力する',
                           action='count',
                           default=0)
    argparser.add_argument('-V',
                           '--version',
                           help='バージョン情報を表示して終了する',
                           action='version',
                           version='%(prog)s {}'.format(__version__))

    args = argparser.parse_args(argv)

    VERBOSE = args.verbose
    verbose = libssw.def_verbose(VERBOSE, libssw.ownname(__file__))
    verbose('Verbose mode on')

    libssw.RECHECK = args.recheck

    if args.retrieval == 'url' and (args.cid or args.cid_l):
        emsg('E', '-U 指定時に --cid/--cid-l は指定できません。')

    # サービス未指定の決定
    # 引数にURLが与えられていればそれから判定
    # TSVやウィキテキスト入力でなければそれ以外ならセル版
    # TSVやウィキテキスト入力ならあとで作品情報から判定
    if args.keyword:
        if not args.service:
            if re.match('https?://.+', args.keyword[0]):
                args.service = libssw.resolve_service(args.keyword[0])
            elif not (args.from_tsv or args.from_wiki):
                args.service = 'dvd'

        if (args.cid or args.cid_l) and '{}' in args.keyword[0]:
            verbose('args.cid check')
            # --row 未指定で --cid(-l) で連番指定の場合の自動決定
            # --start-{p,c}id だけでは連番と確定できないので何もしない
            if not args.row:
                args.row = int(args.keyword[1])
                verbose('row is set by cid: ', args.row)

    # ここで row 未指定時のデフォルト設定
    if not args.row:
        args.row = 1

    # start-pidは大文字、start-cidは小文字固定
    args.start_pid = args.start_pid.upper()
    args.start_pid_s = args.start_pid_s.upper()
    args.start_cid = args.start_cid.lower()

    args.last_pid = args.last_pid.upper()
    args.last_cid = args.last_cid.lower()

    # ヘッダを抑止するときはページ分割もしない
    if not args.header:
        args.split = 0

    if args.fastest:
        for a in ('follow_rdr', 'check_rental', 'pass_bd', 'check_listpage',
                  'longtitle'):
            setattr(args, a, False)

    # キャッシュディレクトリの削除
    if args.clear_cache:
        libssw.clear_cache()

    verbose('args: ', args)
    return args
Exemplo n.º 7
0
    dmmsar.py "http://www.dmm.co.jp/mono/dvd/-/list/=/article=label/id=8893/" -tmm --filter-pid "^saba" --start-pid "saba-125" --row 125

"""
import sys
import re
import argparse
from operator import attrgetter
from itertools import zip_longest, compress
from collections import OrderedDict, namedtuple

import libssw
import dmm2ssw

__version__ = 20151010

OWNNAME = libssw.ownname(__file__)
VERBOSE = 0

emsg = libssw.Emsg(OWNNAME)

MSGLEVEL = {'E': 'ERROR', 'W': 'WARN', 'I': 'INFO'}

ACTINFOPAGE = 'https://actress.dmm.co.jp/-/detail/=/actress_id={}/'
ACTLISTPAGE = 'https://www.dmm.co.jp/mono/dvd/-/list/=/article=actress/id={}/sort=date/'

SPLIT_DEFAULT = 200

# sub_sort = (re.compile(r'(?<=/sort=)\w+'), 'date')

re_actdelim = re.compile(r'[(、]')
Exemplo n.º 8
0
def get_args():
    global VERBOSE
    global verbose

    argparser = argparse.ArgumentParser(
        description='メーカー配下の全レーベルの一覧、レーベル配下の全シリーズの一覧をウィキテキストで作成する')
    argparser.add_argument('root',
                           help='メーカー/レーベルのIDまたはDMMでのその一覧ページのURL',
                           metavar='ID')

    argparser.add_argument('-t',
                           '--target',
                           help='IDがメーカーかレーベルかを指定する',
                           choices=('maker', 'label'),
                           default='maker')

    argparser.add_argument('--service',
                           help='取得するサービスを指定する',
                           choices=('dvd', 'rental', 'video', 'ama', 'all'),
                           default='dvd')
    argparser.add_argument('-o',
                           '--outfile',
                           help='出力ファイル名を指定する(デフォルト名を変更する)',
                           metavar='FILE')
    argparser.add_argument('-r',
                           '--replace',
                           help='一覧の出力ファイルと同名のファイルがあった場合上書きする',
                           action='store_true')

    argparser.add_argument('-p', '--pickle-path', help='保存ファイルのパスを指定する')

    only = argparser.add_mutually_exclusive_group()
    only.add_argument('-l',
                      '--only-label',
                      help='レーベル一覧だけ出力する',
                      action='store_true')
    only.add_argument('-s',
                      '--only-series',
                      help='シリーズ一覧だけ出力する',
                      action='store_true')

    argparser.add_argument('--sort-key',
                           help='ソートキー',
                           choices=('release', 'name', 'number'),
                           default='release')

    argparser.add_argument('-u',
                           '--unsuppress',
                           help='シリーズ一覧を作成しないよう指定されているレーベルに'
                           'ついても作成する',
                           action='store_false',
                           dest='suppress',
                           default=True)

    argparser.add_argument('-d',
                           '--without-dmm',
                           help='DMMへのリンクを追加しない',
                           action='store_false',
                           dest='dmm',
                           default=True)
    argparser.add_argument('-a',
                           '--without-latest',
                           help='最新リリース日を追加しない',
                           action='store_false',
                           dest='latest',
                           default=True)
    argparser.add_argument('-e',
                           '--without-prefixes',
                           help='品番のプレフィクスの統計を出力しない',
                           dest='prefixes',
                           action='store_false',
                           default=True)

    argparser.add_argument('--regen-pid', help='品番を再作成する', action='store_true')

    argparser.add_argument('-C',
                           '--clear-cache',
                           help='プログラム終了時にHTTPキャッシュをクリアする',
                           action='store_true')
    argparser.add_argument('-v',
                           '--verbose',
                           help='デバッグ用情報を出力する',
                           action='count',
                           default=0)
    argparser.add_argument('-V',
                           '--version',
                           help='バージョン情報を表示して終了する',
                           action='version',
                           version='%(prog)s {}'.format(__version__))

    args = argparser.parse_args()

    VERBOSE = args.verbose
    verbose = libssw.def_verbose(VERBOSE, libssw.ownname(__file__))
    verbose('verbose mode on')

    verbose('args: {}'.format(args))
    return args
Exemplo n.º 9
0
def get_args():
    """コマンドライン引数の解釈"""
    global VERBOSE
    global verbose

    argparser = argparse.ArgumentParser(description='ウィキテキスト(表形式)を補完または置き換え')
    argparser.add_argument('target',
                           help='対象のウィキテキストファイル名(未指定で標準入力)',
                           nargs='?',
                           type=argparse.FileType('r'),
                           default=sys.stdin,
                           metavar='TARGET')

    argparser.add_argument('-i',
                           '--input',
                           help='補完・置き換えデータのファイル',
                           nargs='+',
                           dest='ifiles')
    argparser.add_argument('-o',
                           '--out',
                           help='ファイルに出力 (未指定時は標準出力へ出力)',
                           metavar='FILE')
    argparser.add_argument('-r',
                           '--replace',
                           help='出力ファイルと同名のファイルがあった場合上書きする',
                           action='store_true')

    argparser.add_argument('-f',
                           '--force',
                           help='補完・置き換えファイルの内容で対象を強制的に置き換える',
                           action='store_true')
    argparser.add_argument('-a',
                           '--actress',
                           help='出演者情報のみ置き換え・補完する',
                           action='store_true')
    argparser.add_argument('-p',
                           '--other-page',
                           help='[[別ページ>]]のみ置き換える',
                           action='store_true')
    argparser.add_argument('-d',
                           '--diff',
                           help='修正前と後の差分をウェブブラウザで表示する',
                           action='store_true')

    argparser.add_argument('-v',
                           '--verbose',
                           help='デバッグ用情報を出力する',
                           action='count',
                           default=0)
    argparser.add_argument('-V',
                           '--version',
                           help='バージョン情報を表示して終了する',
                           action='version',
                           version='%(prog)s {}'.format(__version__))

    args = argparser.parse_args()

    VERBOSE = args.verbose
    verbose = libssw.def_verbose(VERBOSE, libssw.ownname(__file__))
    verbose('verbose mode on')

    verbose('args: ', (args))
    return args
Exemplo n.º 10
0
def get_args():
    global VERBOSE
    global verbose

    argparser = argparse.ArgumentParser(
        description='素人系総合Wikiの一覧ページにあって女優ページにない作品の洗い出し')
    argparser.add_argument('target',
                           help='調査対象一覧ページのURL/ウィキテキスト(未指定で標準入力から読み込み)',
                           nargs='?',
                           default='-',
                           metavar='TARGET')

    argparser.add_argument('-w',
                           '--from-wikitext',
                           help='入力ファイルがウィキテキストの場合指定する',
                           action='store_true')

    argparser.add_argument('-l', '--list-name', help='一覧ページ名を直接指定')

    argparser.add_argument('-s', '--start-pid', help='チェック開始品番', default='')

    argparser.add_argument('--note',
                           help='作成したウィキテキストに備考として出力',
                           nargs='+',
                           default=[])

    list_page = argparser.add_mutually_exclusive_group()
    list_page.add_argument('--series', help='シリーズ一覧へのリンクを追加(DMM上のものを置き換え)')
    list_page.add_argument('--label', help='レーベル一覧へのリンクを追加(DMM上のものを置き換え)')
    list_page.add_argument('--hide-list',
                           help='一覧ページへのリンクを追加しない',
                           action='store_true')

    argparser.add_argument('--linklabel', help='一覧ページへのリンクの表示名を置き換える')

    argparser.add_argument('--disable-wikitext',
                           help='女優ページに作品がない女優がいる作品のウィキテキストを作成しない',
                           action='store_false',
                           dest='gen_wikitext',
                           default=True)

    argparser.add_argument('-b',
                           '--browser',
                           help='生成後、wikiのページをブラウザで開く',
                           action='store_true')

    argparser.add_argument('-v',
                           '--verbose',
                           help='デバッグ用情報を出力する',
                           action='count',
                           default=0)
    argparser.add_argument('-V',
                           '--version',
                           help='バージョン情報を表示して終了する',
                           action='version',
                           version='%(prog)s {}'.format(__version__))

    args = argparser.parse_args()

    VERBOSE = args.verbose
    verbose = libssw.def_verbose(VERBOSE, libssw.ownname(__file__))
    verbose('verbose mode on')

    args.start_pid = args.start_pid.upper()

    if args.browser:
        args.gen_wikitext = True

    return args
Exemplo n.º 11
0
def get_args():
    global VERBOSE
    global verbose

    argparser = argparse.ArgumentParser(
        description='素人系総合wiki女優ページにない作品情報をDMMから補完する')
    argparser.add_argument('wikifiles',
                           help='Wiki女優ページ(ウィキテキスト)を格納したファイル(未指定で標準入力から入力)',
                           nargs='*',
                           metavar='WIKIFILES')
    argparser.add_argument('-a',
                           '--actress-id',
                           help='DMM上での女優のID(または女優の作品一覧のURL)',
                           nargs='+',
                           default=[],
                           metavar='ID')

    # ファイル出力
    argparser.add_argument('-o',
                           '--out',
                           help='ファイルに出力 (未指定時は標準出力へ出力)',
                           metavar='FILE')
    argparser.add_argument('-r',
                           '--replace',
                           help='出力ファイルと同名のファイルがあった場合上書きする',
                           action='store_true')

    argparser.add_argument(
        '--split',
        help='指定作品数ごとに「// {0}」のようにコメント行を入れる (デフォルト {0})'.format(SPLIT_DEFAULT),
        type=int,
        default=SPLIT_DEFAULT)

    # 作品データの除外基準
    argparser.add_argument('-m',
                           '--disable-omit',
                           help='IVを除外しない, 2個指定すると総集編作品も、'
                           '3個指定するとアウトレット版も、'
                           '4個指定すると限定盤も除外しない',
                           dest='no_omit',
                           action='count',
                           default=0)

    argparser.add_argument('-f',
                           '--disable-follow-redirect',
                           help='ページのリダイレクト先をチェックしない',
                           dest='follow_rdr',
                           action='store_false',
                           default=True)
    argparser.add_argument('--disable-check-rental',
                           help='レンタル先行メーカーでセル版のときレンタル版の'
                           'リリースをチェックしない',
                           action='store_false',
                           dest='check_rental',
                           default=True)
    argparser.add_argument('--disable-check-bd',
                           help='Blu-ray版のときDVD版があってもパスしない',
                           action='store_false',
                           dest='pass_bd',
                           default=True)
    argparser.add_argument('--disable-check-listpage',
                           help='Wiki上の実際の一覧ページを探さない',
                           dest='check_listpage',
                           action='store_false',
                           default=True)
    argparser.add_argument('--fastest',
                           help='処理時間に影響するあらゆる補助処理を行わない',
                           action='store_true')

    argparser.add_argument('-d',
                           '--diff',
                           help='データ追加前と後の差分をウェブブラウザで表示する',
                           action='store_true')

    argparser.add_argument('-C',
                           '--clear-cache',
                           help='プログラム終了時にHTTPキャッシュをクリアする',
                           action='store_true')
    argparser.add_argument('-v',
                           '--verbose',
                           help='デバッグ用情報を出力する',
                           action='count',
                           default=0)
    argparser.add_argument('-V',
                           '--version',
                           help='バージョン情報を表示して終了する',
                           action='version',
                           version='%(prog)s {}'.format(__version__))

    args = argparser.parse_args()

    # dmmsar.py 側からVERBOSEが変更される場合があるため
    verbose.verbose = VERBOSE = VERBOSE or args.verbose

    VERBOSE = args.verbose
    verbose = libssw.def_verbose(VERBOSE, libssw.ownname(__file__))
    verbose('verbose mode on')

    # キャッシュディレクトリの削除
    if args.clear_cache:
        libssw.clear_cache()

    if args.fastest:
        for a in ('follow_rdr', 'check_rental', 'pass_bd', 'check_listpage'):
            setattr(args, a, False)

    verbose('args: ', args)
    return args