Source code for kingfisher_scrapy.spiders.kosovo

import datetime

from kingfisher_scrapy.base_spiders import SimpleSpider
from kingfisher_scrapy.util import parameters


[docs] class Kosovo(SimpleSpider): """ Domain Public Procurement Regulatory Commission (PPRC) Spider arguments from_date Download only data with a tender period end date from this time onward (YYYY-MM-DD format). Defaults to '2000-01-01'. until_date Download only data with a tender period end date until this time (YYYY-MM-DD format). Defaults to now. Note: This date is non-inclusive. API documentation https://ocdskrpp.rks-gov.net/Help """ name = "kosovo" # BaseSpider date_format = "date" default_from_date = "2000-01-01" date_required = True # SimpleSpider data_type = "release_package" async def start(self): # The API is slow even with short periods, so we request one day at a time. delta = self.until_date - self.from_date for days in reversed(range(delta.days + 1)): start = self.from_date + datetime.timedelta(days=days - 1) end = self.from_date + datetime.timedelta(days=days) yield self.build_request( "https://ocdskrpp.rks-gov.net/krppapi/tenderrelease" f"?endDateFrom={start.strftime('%Y-%m-%d')}" f"&endDateEnd={end.strftime('%Y-%m-%d')}", formatter=parameters("endDateFrom", "endDateEnd"), ) # SimpleSpider def parse(self, response): # If no releases were found, the API returns a release package with an empty releases array. if response.json()["releases"]: yield from super().parse(response)