summaryrefslogtreecommitdiffstatshomepage
path: root/docs/_examples/example_scraper.py
diff options
context:
space:
mode:
Diffstat (limited to 'docs/_examples/example_scraper.py')
-rw-r--r--docs/_examples/example_scraper.py37
1 files changed, 37 insertions, 0 deletions
diff --git a/docs/_examples/example_scraper.py b/docs/_examples/example_scraper.py
new file mode 100644
index 0000000..d00c292
--- /dev/null
+++ b/docs/_examples/example_scraper.py
@@ -0,0 +1,37 @@
+import json
+
+from hircine.scraper import Scraper
+from hircine.scraper.types import Artist, Character, Tag, Title
+from hircine.scraper.utils import open_archive_file, parse_dict
+
+
+class MyScraper(Scraper):
+ name = "Example scraper"
+ source = "example"
+
+ def __init__(self, comic):
+ super().__init__(comic)
+
+ self.data = self.load()
+
+ if self.data:
+ self.is_available = True
+
+ def load(self):
+ try:
+ with open_archive_file(self.comic.archive, "metadata.json") as jif:
+ return json.load(jif)
+ except Exception:
+ return {}
+
+ def scrape(self):
+ parsers = {
+ "title": Title,
+ "tags": {
+ "artists": Artist,
+ "misc": Tag.from_string,
+ "characters": Character,
+ },
+ }
+
+ yield from parse_dict(parsers, self.data)