Added source for uppsalavatten_se and updated readme.md+info.md

This commit is contained in:
Lance0095
2023-03-20 18:58:57 +01:00
parent 08002a986b
commit 2a4eca23c7
2 changed files with 127 additions and 0 deletions

View File

@@ -0,0 +1,85 @@
from datetime import datetime
import urllib.parse
import json
import requests
from waste_collection_schedule import Collection
TITLE = "Uppsala Vatten och Avfall AB"
DESCRIPTION = "Source script for uppsalavatten.se"
URL = "https://www.uppsalavatten.se"
TEST_CASES = {
"Test1": {"city": "BJÖRKLINGE", "street": "SADELVÄGEN 1",},
"Test2": {"city": "BJÖRKLINGE", "street": "BJÖRKLINGE-GRÄNBY 33",},
"Test3": {"city": "BJÖRKLINGE", "street": "BJÖRKLINGE-GRÄNBY 20",},
}
API_URLS = {
"address_search": "https://futureweb.uppsalavatten.se/Uppsala/FutureWebBasic/SimpleWastePickup/SearchAdress",
"collection": "https://futureweb.uppsalavatten.se/Uppsala/FutureWebBasic/SimpleWastePickup/GetWastePickupSchedule",
}
ICON_MAP = {
"Restavfall": "mdi:trash-can",
"Matavfall": "mdi:food-apple",
"Slam": "",
}
MONTH_MAP = {
"Jan": 1,
"Feb": 2,
"Mar": 3,
"Apr": 4,
"Maj": 5,
"Jun": 6,
"Jul": 7,
"Aug": 8,
"Sep": 9,
"Okt": 10,
"Nov": 11,
"Dec": 12,
}
class Source:
def __init__(self, street, city):
self.street = street
self.city = city
#self.facid = facid
def fetch(self):
#request to get facility id
addresslist = requests.post(
API_URLS["address_search"], {"searchText": f"{self.street.upper()}, {self.city.upper()}"}
)
addresslist.raise_for_status()
adresslist_json = json.loads(addresslist.text)
payload = {"address": adresslist_json['Buildings'][0]}
payload_str = urllib.parse.urlencode(payload, encoding="utf8")
# request for the wasteschedule
wasteschedule = requests.get(API_URLS["collection"], params=payload_str)
wasteschedule.raise_for_status()
data = json.loads(wasteschedule.text)
entries = []
for i in data['RhServices']:
icon=ICON_MAP.get(i["WasteType"])
if "v" in i["NextWastePickup"]:
date_parts = i["NextWastePickup"].split()
month = MONTH_MAP[date_parts[1]]
date_joined = "-".join([date_parts[0], str(month), date_parts[2]])
date = datetime.strptime(date_joined, "v%W-%m-%Y").date()
elif not i["NextWastePickup"]:
continue
else:
date=datetime.strptime(i["NextWastePickup"], "%Y-%m-%d").date()
entries.append(
Collection(
t=i["WasteType"],
icon=icon,
date=date,
)
)
return entries

View File

@@ -0,0 +1,42 @@
# Uppsala Vatten och Avfall AB
Support for schedules provided by [Uppsala Vatten och Avfall AB](https://www.uppsalavatten.se), serving the municipality of Uppsala.
## Configuration via configuration.yaml
```yaml
waste_collection_schedule:
sources:
- name: uppsalavatten_se
args:
street: STREET_NAME
city: CITY_NAME
```
### Configuration Variables
**street**
*(string) (required)*
**city**
*(string) (required)*
## Example
```yaml
waste_collection_schedule:
sources:
- name: uppsalavatten_se
args:
street: SADELVÄGEN 1
city: BJÖRKLINGE
```
## How to get the source argument
The source argument is the street including number and the city to the house with waste collection.
The address can be tested [here](https://www.uppsalavatten.se/sjalvservice/hamtningar-och-berakningar/dag-for-sophamtning-och-slamtomning).