[deviantart] misc improvements to status extractor

- relax regex pattern
- handle invalid 'items' field
- add a test for shared sta.sh item

Co-authored-by: Mike Fährmann <mike_faehrmann@web.de>
This commit is contained in:
ClosedPort22
2023-01-21 13:02:10 +08:00
parent 013733c9e9
commit 597b89245e

View File

@@ -771,7 +771,7 @@ class DeviantartStatusExtractor(DeviantartExtractor):
directory_fmt = ("{category}", "{username}", "Status")
filename_fmt = "{category}_{index}_{title}_{date}.{extension}"
archive_fmt = "S_{_username}_{index}.{extension}"
pattern = BASE_PATTERN + r"/posts/statuses/?(?:\?.*)?$"
pattern = BASE_PATTERN + r"/posts/statuses"
test = (
("https://www.deviantart.com/t1na/posts/statuses", {
"count": 0,
@@ -786,9 +786,16 @@ class DeviantartStatusExtractor(DeviantartExtractor):
"count": 1,
"pattern": r"https://images-wixmp-\w+\.wixmp\.com/f"
r"/[^/]+/[^.]+\.jpg\?token=",
}),
# shared sta.sh item
("https://www.deviantart.com/vanillaghosties/posts/statuses", {
"options": (("journals", "none"), ("original", False)),
"range": "5-",
"count": 1,
"keyword": {
"index": int,
"index" : int,
"index_base36": "re:^[0-9a-z]+$",
"url" : "re:^https://sta.sh",
},
}),
("https://www.deviantart.com/justgalym/posts/statuses", {
@@ -802,7 +809,7 @@ class DeviantartStatusExtractor(DeviantartExtractor):
yield from self.status(status)
def status(self, status):
for item in status.get("items", ()): # do not trust is_share
for item in status.get("items") or (): # do not trust is_share
# shared deviations/statuses
if "deviation" in item:
yield item["deviation"].copy()