[deviantart] improve handling of statuses
- recursively yield statuses - ignore items with missing or unexpected field(s)
This commit is contained in:
@@ -786,16 +786,21 @@ class DeviantartStatusExtractor(DeviantartExtractor):
|
|||||||
|
|
||||||
def deviations(self):
|
def deviations(self):
|
||||||
for status in self.api.user_statuses(self.user, self.offset):
|
for status in self.api.user_statuses(self.user, self.offset):
|
||||||
for item in status.get("items", ()): # do not trust is_share
|
yield from self.status(status)
|
||||||
# shared deviations/statuses
|
|
||||||
key = "deviation" if "deviation" in item else "status"
|
def status(self, status):
|
||||||
yield item[key].copy()
|
for item in status.get("items", ()): # do not trust is_share
|
||||||
# assume is_deleted == true means necessary fields are missing
|
# shared deviations/statuses
|
||||||
if status["is_deleted"]:
|
if "deviation" in item:
|
||||||
self.log.warning(
|
yield item["deviation"].copy()
|
||||||
"Skipping status %s (deleted)", status.get("statusid"))
|
if "status" in item:
|
||||||
continue
|
yield from self.status(item["status"].copy())
|
||||||
yield status
|
# assume is_deleted == true means necessary fields are missing
|
||||||
|
if status["is_deleted"]:
|
||||||
|
self.log.warning(
|
||||||
|
"Skipping status %s (deleted)", status.get("statusid"))
|
||||||
|
return
|
||||||
|
yield status
|
||||||
|
|
||||||
def prepare(self, deviation):
|
def prepare(self, deviation):
|
||||||
if "deviationid" in deviation:
|
if "deviationid" in deviation:
|
||||||
|
|||||||
Reference in New Issue
Block a user