[aryion:favorite] ignore already seen folders (#8728)
This commit is contained in:
@@ -108,7 +108,7 @@ class AryionExtractor(Extractor):
|
|||||||
return
|
return
|
||||||
url = self.root + text.rextr(page, "href='", "'", pos)
|
url = self.root + text.rextr(page, "href='", "'", pos)
|
||||||
|
|
||||||
def _pagination_folders(self, url, folder=None):
|
def _pagination_folders(self, url, folder=None, seen=None):
|
||||||
if folder is None:
|
if folder is None:
|
||||||
self.kwdict["folder"] = ""
|
self.kwdict["folder"] = ""
|
||||||
else:
|
else:
|
||||||
@@ -126,10 +126,15 @@ class AryionExtractor(Extractor):
|
|||||||
cnt += 1
|
cnt += 1
|
||||||
if text.extr(item, 'data-item-type="', '"') == "Folders":
|
if text.extr(item, 'data-item-type="', '"') == "Folders":
|
||||||
folder = text.extr(item, "href='", "'").rpartition("/")[2]
|
folder = text.extr(item, "href='", "'").rpartition("/")[2]
|
||||||
if self.recursive:
|
if seen is None:
|
||||||
yield from self._pagination_folders(url, folder)
|
seen = set()
|
||||||
else:
|
if folder not in seen:
|
||||||
self.log.debug("Skipping folder '%s'", folder)
|
seen.add(folder)
|
||||||
|
if self.recursive:
|
||||||
|
yield from self._pagination_folders(
|
||||||
|
url, folder, seen)
|
||||||
|
else:
|
||||||
|
self.log.debug("Skipping folder '%s'", folder)
|
||||||
else:
|
else:
|
||||||
yield text.extr(item, "data-item-id='", "'")
|
yield text.extr(item, "data-item-id='", "'")
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user