mirror of
https://github.com/instaloader/instaloader.git
synced 2026-10-16 13:48:03 -07:00
@@ -319,13 +319,23 @@ class Post:
|
|||||||
|
|
||||||
def _obtain_metadata(self):
|
def _obtain_metadata(self):
|
||||||
if not self._full_metadata_dict:
|
if not self._full_metadata_dict:
|
||||||
pic_json = self._context.graphql_query(
|
pic_json = self._context.doc_id_graphql_query(
|
||||||
'2b0673e0dc4580674a88d426fe00ea90',
|
"8845758582119845", {"shortcode": self.shortcode}
|
||||||
{'shortcode': self.shortcode}
|
)["data"]["xdt_shortcode_media"]
|
||||||
)
|
if pic_json is None:
|
||||||
self._full_metadata_dict = pic_json['data']['shortcode_media']
|
|
||||||
if self._full_metadata_dict is None:
|
|
||||||
raise BadResponseException("Fetching Post metadata failed.")
|
raise BadResponseException("Fetching Post metadata failed.")
|
||||||
|
try:
|
||||||
|
xdt_types = {
|
||||||
|
"XDTGraphImage": "GraphImage",
|
||||||
|
"XDTGraphVideo": "GraphVideo",
|
||||||
|
"XDTGraphSidecar": "GraphSidecar",
|
||||||
|
}
|
||||||
|
pic_json["__typename"] = xdt_types[pic_json["__typename"]]
|
||||||
|
except KeyError as exc:
|
||||||
|
raise BadResponseException(
|
||||||
|
f"Unknown __typename in metadata: {pic_json['__typename']}."
|
||||||
|
) from exc
|
||||||
|
self._full_metadata_dict = pic_json
|
||||||
if self.shortcode != self._full_metadata_dict['shortcode']:
|
if self.shortcode != self._full_metadata_dict['shortcode']:
|
||||||
self._node.update(self._full_metadata_dict)
|
self._node.update(self._full_metadata_dict)
|
||||||
raise PostChangedException
|
raise PostChangedException
|
||||||
@@ -734,7 +744,11 @@ class Post:
|
|||||||
# Avoid doing additional requests if there are no comments
|
# Avoid doing additional requests if there are no comments
|
||||||
return []
|
return []
|
||||||
|
|
||||||
comment_edges = self._field('edge_media_to_comment', 'edges')
|
try:
|
||||||
|
comment_edges = self._field("edge_media_to_parent_comment", "edges")
|
||||||
|
except KeyError:
|
||||||
|
comment_edges = self._field("edge_media_to_comment", "edges")
|
||||||
|
|
||||||
answers_count = sum(edge['node'].get('edge_threaded_comments', {}).get('count', 0) for edge in comment_edges)
|
answers_count = sum(edge['node'].get('edge_threaded_comments', {}).get('count', 0) for edge in comment_edges)
|
||||||
|
|
||||||
if self.comments == len(comment_edges) + answers_count:
|
if self.comments == len(comment_edges) + answers_count:
|
||||||
|
|||||||
Reference in New Issue
Block a user