【问题标题】:python youtube-dl output file not in unicode?python youtube-dl 输出文件不在 unicode 中?
【发布时间】:2019-05-21 02:59:39
【问题描述】:

有没有办法让youtube-dl.extract_info()函数在创建输出文件时使用unicode?​​p>

我遇到的问题是,如果您下载标题中带有| 之类的unicode 字符的东西,那么输出文件名将不会具有相同的字符。它将被替换为_

song title 为例。 如果我用 youtube-dl 下载它,我会得到这个文件名 【Nightcore】→ Pretty Girl _ Lyrics-dMAOnScOyGE。不同类型的角色也会发生同样的事情。

有没有办法阻止这种情况? 因为如果你以后想对那个文件做任何事情,那就很烦人了。

要获取新文件名,我需要执行 os.listdir(dir) 之类的操作来获取文件。所以获取新的文件名不是不可能的,但是我只是对是否有更简单的方法感兴趣。

【问题讨论】:

  • 这个答案没有帮助吗? stackoverflow.com/questions/40713268/…
  • 如果我想更改下载路径,但我还需要重命名文件,所以我认为这不能完全解决问题。但我感谢您的快速帮助:)
  • 与“Unicode”无关,| 是一个 ASCII 字符(也是一个 Unicode 字符,和任何其他字符一样)。 YTDL 只是确保路径不会引起问题;在许多情况下,管道是一个特殊字符。您通常需要一个可预测的路径,或者确切地找出它创建的文件。
  • 所以没有办法关掉?

标签: python unicode youtube-dl


【解决方案1】:

|_ 的编码是硬编码在sanitize_filename in youtube_dl/utils.py 中的。您可以通过将 youtube_dl.utils.sanitize_filename 替换为您自己的实现以编程方式将其关闭。

但是,不建议这样做,并且不支持开箱即用。这是因为| 在 Windows 上是无效字符,如果在有缺陷的脚本中展开,可用于执行任意命令。

曾一度支持不安全的文件名,但我将它们从 youtube-dl 中删除了,因为太多人自取其辱,而且经常报告的问题显然会让任何攻击者在他们的机器上执行任意代码。

【讨论】:

    猜你喜欢
    • 2021-01-03
    • 2020-05-26
    • 1970-01-01
    • 2014-12-17
    • 2023-03-31
    • 1970-01-01
    • 2021-03-02
    • 2011-05-15
    • 1970-01-01
    相关资源
    最近更新 更多