[Instagram] Add tagged_users to keywords for stories (#2582) (#2584)

This commit is contained in:
Infinitay
2022-05-25 11:02:42 -04:00
committed by GitHub
parent da0696e1f5
commit f54525573b

View File

@@ -308,7 +308,7 @@ class InstagramExtractor(Extractor):
video = None video = None
media = image media = image
files.append({ media = {
"num" : num, "num" : num,
"date" : text.parse_timestamp(item.get("taken_at") or "date" : text.parse_timestamp(item.get("taken_at") or
media.get("taken_at")), media.get("taken_at")),
@@ -319,7 +319,9 @@ class InstagramExtractor(Extractor):
"video_url" : video["url"] if video else None, "video_url" : video["url"] if video else None,
"width" : media["width"], "width" : media["width"],
"height" : media["height"], "height" : media["height"],
}) }
self._extract_tagged_users(item, media)
files.append(media)
return data return data
@@ -331,19 +333,43 @@ class InstagramExtractor(Extractor):
"abcdefghijklmnopqrstuvwxyz" "abcdefghijklmnopqrstuvwxyz"
"0123456789-_") "0123456789-_")
def _extract_tagged_users(self, src, dest): @staticmethod
if "edge_media_to_tagged_user" not in src: def _extract_tagged_users(src, dest):
return dest["tagged_users"] = tagged_users = []
edges = src["edge_media_to_tagged_user"]["edges"]
edges = src.get("edge_media_to_tagged_user")
if edges: if edges:
dest["tagged_users"] = tagged_users = [] for edge in edges["edges"]:
for edge in edges:
user = edge["node"]["user"] user = edge["node"]["user"]
tagged_users.append({ tagged_users.append({"id" : user["id"],
"id" : user["id"], "username" : user["username"],
"username" : user["username"], "full_name": user["full_name"]})
"full_name": user["full_name"],
}) usertags = src.get("usertags")
if usertags:
for tag in usertags["in"]:
user = tag["user"]
tagged_users.append({"id" : user["pk"],
"username" : user["username"],
"full_name": user["full_name"]})
mentions = src.get("reel_mentions")
if mentions:
for mention in mentions:
user = mention["user"]
tagged_users.append({"id" : user.get("pk"),
"username" : user["username"],
"full_name": user["full_name"]})
stickers = src.get("story_bloks_stickers")
if stickers:
for sticker in stickers:
sticker = sticker["bloks_sticker"]
if sticker["bloks_sticker_type"] == "mention":
user = sticker["sticker_data"]["ig_mention"]
tagged_users.append({"id" : user["account_id"],
"username" : user["username"],
"full_name": user["full_name"]})
def _extract_shared_data(self, page): def _extract_shared_data(self, page):
shared_data, pos = text.extract( shared_data, pos = text.extract(