youtube-dl を日本語に対応させる

youtube-dl が動画タイトル内の非ASCII文字を削ってしまう問題への対処。

検索するとyoutube-dl.py 日本語文字対応という記事が見つかりますが、これだと長音などを拾い漏らしてしまうので

def _real_extract(self, url):
    # ...
    # simplified title
    simple_title = re.sub(ur'(?u)([^%s一-龠ぁ-んァ-ヶ゛゜ー0-9A-Za-zヲ-゚]+)' % simple_title_chars, ur'_', video_title)
    simple_title = simple_title.strip(ur'_')
    # ...

とでもしておけば漏れが少なくなると思います。ただ、これでもローマ数字を用いたパート分け(PartⅠ, PartⅡ, ...)などには対応できないので、ホワイトリスト方式よりむしろブラックリスト方式を用いて

    simple_title = re.sub(ur'(?u)[\x00-\x1F\x7F\\/:*?"<>|]', ur'_', video_title) # セキュリティ上まずそうな文字だけ削る
    simple_title = simple_title.strip(ur'_')

などとする方が簡明かも。