[blogger] fix video extraction (#7892)
This commit is contained in:
@@ -31,6 +31,11 @@ class BloggerExtractor(BaseExtractor):
|
|||||||
self.blog = self.root.rpartition("/")[2]
|
self.blog = self.root.rpartition("/")[2]
|
||||||
self.videos = self.config("videos", True)
|
self.videos = self.config("videos", True)
|
||||||
|
|
||||||
|
if self.videos:
|
||||||
|
self.findall_video = util.re(
|
||||||
|
r"""src=["'](https?://www\.blogger\.com"""
|
||||||
|
r"""/video\.g\?token=[^"']+)""").findall
|
||||||
|
|
||||||
def items(self):
|
def items(self):
|
||||||
blog = self.api.blog_by_url("http://" + self.blog)
|
blog = self.api.blog_by_url("http://" + self.blog)
|
||||||
blog["pages"] = blog["pages"]["totalItems"]
|
blog["pages"] = blog["pages"]["totalItems"]
|
||||||
@@ -43,8 +48,6 @@ class BloggerExtractor(BaseExtractor):
|
|||||||
r'blogger\.googleusercontent\.com/img|'
|
r'blogger\.googleusercontent\.com/img|'
|
||||||
r'lh\d+(?:-\w+)?\.googleusercontent\.com|'
|
r'lh\d+(?:-\w+)?\.googleusercontent\.com|'
|
||||||
r'\d+\.bp\.blogspot\.com)/[^"]+)').findall
|
r'\d+\.bp\.blogspot\.com)/[^"]+)').findall
|
||||||
findall_video = util.re(
|
|
||||||
r'src="(https?://www\.blogger\.com/video\.g\?token=[^"]+)').findall
|
|
||||||
metadata = self.metadata()
|
metadata = self.metadata()
|
||||||
|
|
||||||
for post in self.posts(blog):
|
for post in self.posts(blog):
|
||||||
@@ -54,16 +57,10 @@ class BloggerExtractor(BaseExtractor):
|
|||||||
for idx, url in enumerate(files):
|
for idx, url in enumerate(files):
|
||||||
files[idx] = original(url)
|
files[idx] = original(url)
|
||||||
|
|
||||||
if self.videos and 'id="BLOG_video-' in content:
|
if self.videos and (
|
||||||
page = self.request(post["url"]).text
|
'id="BLOG_video-' in content or
|
||||||
for url in findall_video(page):
|
'class="BLOG_video_' in content):
|
||||||
page = self.request(url).text
|
self._extract_videos(files, post)
|
||||||
video_config = util.json_loads(text.extr(
|
|
||||||
page, 'var VIDEO_CONFIG =', '\n'))
|
|
||||||
files.append(max(
|
|
||||||
video_config["streams"],
|
|
||||||
key=lambda x: x["format_id"],
|
|
||||||
)["play_url"])
|
|
||||||
|
|
||||||
post["author"] = post["author"]["displayName"]
|
post["author"] = post["author"]["displayName"]
|
||||||
post["replies"] = post["replies"]["totalItems"]
|
post["replies"] = post["replies"]["totalItems"]
|
||||||
@@ -87,6 +84,27 @@ class BloggerExtractor(BaseExtractor):
|
|||||||
def metadata(self):
|
def metadata(self):
|
||||||
"""Return additional metadata"""
|
"""Return additional metadata"""
|
||||||
|
|
||||||
|
def _extract_videos(self, files, post):
|
||||||
|
url = f"https://{self.blog}/feeds/posts/default/{post['id']}"
|
||||||
|
params = {
|
||||||
|
"alt" : "json",
|
||||||
|
"v" : "2",
|
||||||
|
"dynamicviews" : "1",
|
||||||
|
"rewriteforssl": "true",
|
||||||
|
}
|
||||||
|
|
||||||
|
data = self.request_json(url, params=params)
|
||||||
|
html = data["entry"]["content"]["$t"]
|
||||||
|
|
||||||
|
for url in self.findall_video(html):
|
||||||
|
page = self.request(url).text
|
||||||
|
video_config = util.json_loads(text.extr(
|
||||||
|
page, 'var VIDEO_CONFIG =', '\n'))
|
||||||
|
files.append(max(
|
||||||
|
video_config["streams"],
|
||||||
|
key=lambda x: x["format_id"],
|
||||||
|
)["play_url"])
|
||||||
|
|
||||||
|
|
||||||
BASE_PATTERN = BloggerExtractor.update({
|
BASE_PATTERN = BloggerExtractor.update({
|
||||||
"blogspot": {
|
"blogspot": {
|
||||||
|
|||||||
@@ -47,8 +47,8 @@ __tests__ = (
|
|||||||
},
|
},
|
||||||
|
|
||||||
{
|
{
|
||||||
"#url" : "http://cfnmscenesinmovies.blogspot.com/2011/11/cfnm-scene-jenna-fischer-in-office.html",
|
"#url" : "https://hotgrannysomas.blogspot.com/2012/08/para-amantes-del-buen-sexo-anal-los.html",
|
||||||
"#comment" : "video (#587)",
|
"#comment" : "video",
|
||||||
"#category": ("blogger", "blogspot", "post"),
|
"#category": ("blogger", "blogspot", "post"),
|
||||||
"#class" : blogger.BloggerPostExtractor,
|
"#class" : blogger.BloggerPostExtractor,
|
||||||
"#pattern" : r"https://.+\.googlevideo\.com/videoplayback",
|
"#pattern" : r"https://.+\.googlevideo\.com/videoplayback",
|
||||||
|
|||||||
Reference in New Issue
Block a user