小编GAP*_*002的帖子

如何获取使用 Youtube-dl 下载的文件的文件名

我正在使用 youtube-dl 和 Flask 应用程序来下载文件并返回文件。当我下载时,文件名与视频标题略有不同。查看源代码,我想我encodeFilenameutils.py. 但是,这仍然不匹配,我无法返回文件。

如何获取文件名,或者更改下载的文件名?

这是我目前的代码:

def preferredencoding():
    try:
        pref = locale.getpreferredencoding()
        'TEST'.encode(pref)
    except Exception:
        pref = 'UTF-8'

    return pref


def get_subprocess_encoding():
    if sys.platform == 'win32' and sys.getwindowsversion()[0] >= 5:
        encoding = preferredencoding()
    else:
        encoding = sys.getfilesystemencoding()
    if encoding is None:
        encoding = 'utf-8'
    return encoding


@app.route('/api/v1/videos', methods=['GET'])
def api_id():
    if 'link' in request.args:
        link = request.args['link']
        print("Getting YouTube video")
        try:
            title = youtube_dl.YoutubeDL().extract_info(link, download=False)["title"]
            print(title.encode(get_subprocess_encoding(), 'ignore'))
            print(title)
            code=link.split('v=')[1]
            youtube_dl.YoutubeDL().download([link])
            return send_from_directory(r'C:\Users\User123', title+'-'+code+'.mp4')
        except: …
Run Code Online (Sandbox Code Playgroud)

python youtube-dl

7
推荐指数
1
解决办法
4176
查看次数

如何在python字典中有条件值?

我有一个像这样的python字典:

{
"addressLineOne": self.ADDRESS_1,
"addressType": "RESIDENTIAL",
"city": self.CITY,
"countryCode": "USA",
"email": self.EMAIL,
"firstName": self.FIRST_NAME,
"state": self.STATE
}
Run Code Online (Sandbox Code Playgroud)

我希望一些值以我目前正在做的方式为条件,如下所示:

if self.login:
    data = {"addressLineOne": self.ADDRESS_1,
            "addressType": "RESIDENTIAL",
            "city": self.CITY,
            "countryCode": "USA",
            "state": self.STATE}
else:
    data = {"addressLineOne": self.ADDRESS_1,
            "addressType": "RESIDENTIAL",
            "city": self.CITY,
            "countryCode": "USA",
            "email": self.EMAIL,
            "firstName": self.FIRST_NAME,
            "state": self.STATE}
Run Code Online (Sandbox Code Playgroud)

有没有更整洁的方法来做到这一点,所以我不需要两次编写字典,例如在字典中包含一个 if/else 语句?

python

1
推荐指数
2
解决办法
93
查看次数

如何从字典数组创建一组字典键

我有一个像这样的字典:

{
    "x": {
        "a": 1,
        "b": 2,
        "c": 3
    },
    "y": {
        "a": 1,
        "b": 2,
        "d": 4
    }
}
Run Code Online (Sandbox Code Playgroud)

每个键的值都是一个字典。我想创建set这些字典的所有键,就像上面的例子一样:

{"a", "b", "c", "d"}
Run Code Online (Sandbox Code Playgroud)

我在这方面花了很长时间,但总是出现错误:TypeError: unhashable type: 'dict_keys'

我现在的代码是:

set(item.keys() for item in [dictonary for dictonary in self.data.values()])
Run Code Online (Sandbox Code Playgroud)

理想情况下,我不想使用任何模块,但如果需要的话我会。

python python-3.x

1
推荐指数
1
解决办法
2501
查看次数

标签 统计

python ×3

python-3.x ×1

youtube-dl ×1