Source code for kingfisher_scrapy.spiders.nepal_dhangadhi

import scrapy

from kingfisher_scrapy.base_spiders import SimpleSpider
from kingfisher_scrapy.util import components


[docs] class NepalDhangadhi(SimpleSpider): """ Domain Infrastructure Management System (IMS) Caveats Some downloads require a login. Bulk download documentation https://ims.susasan.org/dhangadhi/about """ name = "nepal_dhangadhi" # SimpleSpider data_type = "release_package" async def start(self): yield scrapy.Request("https://admin.ims.susasan.org/api/static-data/dhangadhi", callback=self.parse_list) def parse_list(self, response): for number, item in enumerate(reversed(response.json()["data"]["fiscal_years"])): # Fiscal years 2080 and later redirect to https://admin.ims.susasan.org/login. quiet = int(item["name"][:4]) >= 2080 yield self.build_request( f"https://admin.ims.susasan.org/ocds/json/dhangadhi-{item['name']}.json", formatter=components(-1), meta={"dont_redirect": True, "quiet": quiet}, priority=number * -1, ) # SimpleSpider def parse(self, response): # `dont_redirect` is set, so redirects reach the callback. if self.is_http_success(response): yield from super().parse(response) else: self.log_error_from_response(response, level="warning" if response.request.meta["quiet"] else "error")