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)