下载图像作为临时文件并将其设置为像素图
download an image as a temp file and setting it as pixmap
我正在下载 YouTube 视频缩略图并将其保存为临时文件。然后我从那个临时文件中得到一个像素图,稍后我可以将它设置为一个标签,它将出现在 YouTube 视频缩略图中。
我的问题是,同样的方法不适用于 YouTube #shorts 缩略图,它不会抛出任何错误,但标签将为空。不知道为什么
这是 YouTube 视频缩略图的示例 url:
url = "https://i.ytimg.com/vi/MtN1YnoL46Q/hqdefault.jpg?sqp=-oaymwEjCOADEI4CSFryq4qpAxUIARUAAAAAGAElAADIQj0AgKJDeAE=&rs=AOn4CLDlF_ZTyfJ1i9Vw9HqEm5d5D5zL9Q"
这是 YouTube 短片缩略图的示例 url:
url = "https://i.ytimg.com/vi/VT_7UBAf3Vc/2.jpg"
这是适用于 YouTube 视频缩略图但不适用于短片的代码
from PyQt5.QtGui import QIcon, QPixmap
from urllib.request import urlopen
import base64
import tempfile
url = .......
image = base64.b64encode(urlopen(url).read()).decode("ascii")
imgdata = base64.b64decode(image)
with tempfile.NamedTemporaryFile(mode="wb") as img:
img.write(imgdata)
pixmap = QPixmap(img.name)
如何让它也适用于 YouTube 短片图片网址?
使用 urllib.parse 模块删除 url 末尾的 parameters/args。
from PyQt5.QtGui import QIcon, QPixmap
from urllib.request import urlopen
from urllib.parse import urlparse, urlunparse # add parsing funcs
import base64
import tempfile
url = .......
url = urlunparse(list(urlparse(url)[:3]) + ['','','']) # try removing the arguments
image = base64.b64encode(urlopen(url).read()).decode("ascii")
imgdata = base64.b64decode(image)
with tempfile.NamedTemporaryFile(mode="wb") as img:
img.write(imgdata)
pixmap = QPixmap(img.name)
我正在下载 YouTube 视频缩略图并将其保存为临时文件。然后我从那个临时文件中得到一个像素图,稍后我可以将它设置为一个标签,它将出现在 YouTube 视频缩略图中。 我的问题是,同样的方法不适用于 YouTube #shorts 缩略图,它不会抛出任何错误,但标签将为空。不知道为什么
这是 YouTube 视频缩略图的示例 url:
url = "https://i.ytimg.com/vi/MtN1YnoL46Q/hqdefault.jpg?sqp=-oaymwEjCOADEI4CSFryq4qpAxUIARUAAAAAGAElAADIQj0AgKJDeAE=&rs=AOn4CLDlF_ZTyfJ1i9Vw9HqEm5d5D5zL9Q"
这是 YouTube 短片缩略图的示例 url:
url = "https://i.ytimg.com/vi/VT_7UBAf3Vc/2.jpg"
这是适用于 YouTube 视频缩略图但不适用于短片的代码
from PyQt5.QtGui import QIcon, QPixmap
from urllib.request import urlopen
import base64
import tempfile
url = .......
image = base64.b64encode(urlopen(url).read()).decode("ascii")
imgdata = base64.b64decode(image)
with tempfile.NamedTemporaryFile(mode="wb") as img:
img.write(imgdata)
pixmap = QPixmap(img.name)
如何让它也适用于 YouTube 短片图片网址?
使用 urllib.parse 模块删除 url 末尾的 parameters/args。
from PyQt5.QtGui import QIcon, QPixmap
from urllib.request import urlopen
from urllib.parse import urlparse, urlunparse # add parsing funcs
import base64
import tempfile
url = .......
url = urlunparse(list(urlparse(url)[:3]) + ['','','']) # try removing the arguments
image = base64.b64encode(urlopen(url).read()).decode("ascii")
imgdata = base64.b64decode(image)
with tempfile.NamedTemporaryFile(mode="wb") as img:
img.write(imgdata)
pixmap = QPixmap(img.name)