1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
from urllib.parse import urljoin
from django.conf import settings
from django.db.models import Q
from gm_types.mimas.qa import VIDEO_SOURCE_TYPE
def get_video_cover_url(source_id=None, source_type=None, video_urls=[]):
"""
根据视频地址,处理出视频封面 http://wiki.wanmeizhensuo.com/pages/viewpage.action?pageId=11604981
:param video_url: 以列表形式传入视频地址,NTM4MTMwKzE0Nzk4OTY4NDA0ODk=.mp4 或者 http://video-static.igengmei.com/lk82Vwe46leuk-qhwTk7uXsp10tv
:return: [{"video_url":video_url,"video_pic":video_pic}]
"""
from talos.models.topic.video import VideoCover
from qa.tasks.get_video_blurcover import get_video_blurcover
if isinstance(video_urls, str):
video_urls = [video_urls]
urls = [video_url.replace(settings.VIDEO_HOST, '') for video_url in video_urls]
video_cover_info = VideoCover.objects.filter(
video_url__in=urls,
source_type=source_type,
source_id=source_id
).values("video_url", "video_pic", "webp_url", "width", "height")
_need_filter_video_urls, video_cover_list = [], []
for item in video_cover_info:
webp_url = item.get("webp_url") or ""
_video_url = urljoin(settings.VIDEO_HOST, item["video_url"])
_data = {
"video_url": _video_url,
"video_pic": item["video_pic"],
"short_video_url": webp_url,
"width": item.get("width", 0),
"height": item.get("height", 0),
}
video_cover_list.append(_data)
_need_filter_video_urls.append(_video_url)
_url_list = list(set(video_urls) - set(_need_filter_video_urls))
if _url_list:
for raw_video_url in _url_list:
_data = {
"video_url": raw_video_url,
"video_pic": urljoin(raw_video_url, settings.VIDEO_PIC_URL),
"short_video_url": "",
"width": 0,
"height": 0,
}
video_cover_list.append(_data)
get_video_blurcover.delay(source_id=source_id, source_type=source_type, video_list=_url_list)
video_cover_list = sorted(video_cover_list, key=lambda _item: video_urls.index(_item["video_url"]))
return video_cover_list