diff --git a/gallery_dl/extractor/pixeldrain.py b/gallery_dl/extractor/pixeldrain.py index df3cb456..c8bd1f93 100644 --- a/gallery_dl/extractor/pixeldrain.py +++ b/gallery_dl/extractor/pixeldrain.py @@ -24,6 +24,16 @@ class PixeldrainExtractor(Extractor): if api_key := self.config("api-key"): self.session.auth = util.HTTPBasicAuth("", api_key) + def _available(self, file): + if not file.get("availability"): + return True + + self.status |= 1 + self.log.debug(file["availability"]) + self.log.warning( + "%s: '%s'", file["name"], file["availability_message"]) + return False + class PixeldrainFileExtractor(PixeldrainExtractor): """Extractor for pixeldrain files""" @@ -45,7 +55,12 @@ class PixeldrainFileExtractor(PixeldrainExtractor): text.nameext_from_name(file["name"], file) yield Message.Directory, "", file - yield Message.Url, file["url"], file + if file.get("availability"): + self.status |= 1 + self.log.debug(file["availability"]) + self.log.error("'%s'", file["availability_message"]) + else: + yield Message.Url, file["url"], file class PixeldrainAlbumExtractor(PixeldrainExtractor): @@ -103,6 +118,8 @@ class PixeldrainAlbumExtractor(PixeldrainExtractor): yield Message.Directory, "", {"album": album} for num, file in enumerate(files, idx+1): + if not self._available(file): + continue file["album"] = album file["num"] = num file["url"] = url = f"{self.root}/api/file/{file['id']}?download" @@ -156,6 +173,8 @@ class PixeldrainFolderExtractor(PixeldrainExtractor): for child in children: if child["type"] == "file": num += 1 + if not self._available(child): + continue url = f"{self.root}/api/filesystem{child['path']}?attach" share_url = f"{self.root}/d{child['path']}" data = self.metadata(child)