hely.py
1 import json 2 from typing import List 3 from decimal import Decimal 4 5 import jq 6 from scrapy.http import HtmlResponse 7 8 from cache.store import strip_all_get_decimal 9 from models.interface import ProviderInterface, VehicleOption, Calculator 10 11 12 class Hely(ProviderInterface): 13 async def get_vehicles_options(self) -> List[VehicleOption]: 14 pricing_page = self.get_pricing_html()[0] 15 response = HtmlResponse( 16 url=pricing_page.url, body=pricing_page.html, encoding="utf-8" 17 ) 18 19 city_car = e_city_car = transporter_car = e_comfort_car = None 20 21 for element in ( 22 jq.compile(".. | select(.priceTableTariffRows?) | .priceTableTariffRows") 23 .input_text(response.css("script::text").extract()[0]) 24 .all()[0] 25 ): 26 if element["cell1Heading"]["en"] == "CITY CAR": 27 city_car = strip_all_get_decimal(element["cell2Heading"]["en"]) 28 if element["cell1Heading"]["en"] == "E-CITY CAR": 29 e_city_car = strip_all_get_decimal(element["cell2Heading"]["en"]) 30 if element["cell1Heading"]["en"] == "TRANSPORTER CAR": 31 transporter_car = strip_all_get_decimal(element["cell2Heading"]["en"]) 32 if element["cell1Heading"]["en"] == "E-COMFORT CAR": 33 e_comfort_car = strip_all_get_decimal(element["cell2Heading"]["en"]) 34 35 return [ 36 VehicleOption( 37 calculator=Calculator( 38 price_per_minute=city_car / 60, 39 price_per_km=Decimal(0), 40 vehicle_request=self.vehicle_request, 41 ), 42 vehicle_image="hely-city-car.png", 43 provider="Hely", 44 type="City Car", 45 ), 46 VehicleOption( 47 calculator=Calculator( 48 price_per_minute=e_city_car / 60, 49 price_per_km=Decimal(0), 50 vehicle_request=self.vehicle_request, 51 ), 52 electric=True, 53 vehicle_image="hely-e-city-car.png", 54 provider="Hely", 55 type="E-City Car", 56 ), 57 VehicleOption( 58 calculator=Calculator( 59 price_per_minute=transporter_car / 60, 60 price_per_km=Decimal(0), 61 vehicle_request=self.vehicle_request, 62 ), 63 vehicle_image="hely-comfort.png", 64 provider="Hely", 65 type="Transporter Car", 66 ), 67 VehicleOption( 68 calculator=Calculator( 69 price_per_minute=e_comfort_car / 60, 70 price_per_km=Decimal(0), 71 vehicle_request=self.vehicle_request, 72 ), 73 electric=True, 74 vehicle_image="hely-comfort.png", 75 provider="Hely", 76 type="E-Comfort Car", 77 ), 78 ]