uk_bin_collection 0.152.5__py3-none-any.whl → 0.152.6__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- uk_bin_collection/tests/input.json +2807 -2805
- uk_bin_collection/uk_bin_collection/councils/CroydonCouncil.py +3 -6
- uk_bin_collection/uk_bin_collection/councils/CumberlandCouncil.py +2 -0
- uk_bin_collection/uk_bin_collection/councils/KingstonUponThamesCouncil.py +1 -1
- uk_bin_collection/uk_bin_collection/councils/NorthHertfordshireDistrictCouncil.py +1 -1
- uk_bin_collection/uk_bin_collection/councils/OxfordCityCouncil.py +12 -7
- uk_bin_collection/uk_bin_collection/councils/RugbyBoroughCouncil.py +2 -2
- uk_bin_collection/uk_bin_collection/councils/WiganBoroughCouncil.py +1 -1
- {uk_bin_collection-0.152.5.dist-info → uk_bin_collection-0.152.6.dist-info}/METADATA +1 -1
- {uk_bin_collection-0.152.5.dist-info → uk_bin_collection-0.152.6.dist-info}/RECORD +13 -13
- {uk_bin_collection-0.152.5.dist-info → uk_bin_collection-0.152.6.dist-info}/LICENSE +0 -0
- {uk_bin_collection-0.152.5.dist-info → uk_bin_collection-0.152.6.dist-info}/WHEEL +0 -0
- {uk_bin_collection-0.152.5.dist-info → uk_bin_collection-0.152.6.dist-info}/entry_points.txt +0 -0
@@ -79,12 +79,9 @@ class CouncilClass(AbstractGetBinDataClass):
|
|
79
79
|
next_button.click()
|
80
80
|
|
81
81
|
# Wait for the bin collection content to load
|
82
|
-
|
83
|
-
EC.
|
84
|
-
(
|
85
|
-
By.XPATH,
|
86
|
-
'//*[@id="mats_content_wrapper"]/div[2]/div[2]/div[2]/div/div[1]/div/div[3]/div/div/div/div',
|
87
|
-
)
|
82
|
+
listing_records = WebDriverWait(driver, 10).until(
|
83
|
+
EC.presence_of_all_elements_located(
|
84
|
+
(By.CSS_SELECTOR, "#mats_content_wrapper .listing_template_record")
|
88
85
|
)
|
89
86
|
)
|
90
87
|
|
@@ -16,6 +16,7 @@ class CouncilClass(AbstractGetBinDataClass):
|
|
16
16
|
def parse_data(self, page: str, **kwargs) -> dict:
|
17
17
|
|
18
18
|
user_uprn = kwargs.get("uprn")
|
19
|
+
postcode = kwargs.get("postcode")
|
19
20
|
check_uprn(user_uprn)
|
20
21
|
bindata = {"bins": []}
|
21
22
|
|
@@ -57,6 +58,7 @@ class CouncilClass(AbstractGetBinDataClass):
|
|
57
58
|
"TriggerCtl": "",
|
58
59
|
"FF265": f"U{user_uprn}",
|
59
60
|
"FF265lbltxt": "Please select your address",
|
61
|
+
"FF265-text": postcode
|
60
62
|
}
|
61
63
|
|
62
64
|
# print(payload)
|
@@ -51,7 +51,7 @@ class CouncilClass(AbstractGetBinDataClass):
|
|
51
51
|
if row.find("dt").get_text().strip().lower() == "next collection":
|
52
52
|
collection_date = remove_ordinal_indicator_from_date_string(
|
53
53
|
row.find("dd").get_text()
|
54
|
-
).strip()
|
54
|
+
).strip().replace(" (In progress)", "")
|
55
55
|
# strip out any text inside of the date string
|
56
56
|
collection_date = re.sub(
|
57
57
|
r"\n\s*\(this.*?\)", "", collection_date
|
@@ -151,7 +151,7 @@ class CouncilClass(AbstractGetBinDataClass):
|
|
151
151
|
|
152
152
|
# Looking for bin types in the exact HTML structure
|
153
153
|
bin_type_elements = soup.select(
|
154
|
-
"div.formatting_bold.formatting_size_bigger.formatting span.value-as-text"
|
154
|
+
"div.page_cell.contains_widget:first-of-type div.formatting_bold.formatting_size_bigger.formatting span.value-as-text"
|
155
155
|
)
|
156
156
|
# print(f"Found {len(bin_type_elements)} bin type elements")
|
157
157
|
|
@@ -21,8 +21,8 @@ class CouncilClass(AbstractGetBinDataClass):
|
|
21
21
|
check_postcode(user_postcode)
|
22
22
|
bindata = {"bins": []}
|
23
23
|
|
24
|
-
session_uri = "https://www.oxford.gov.uk/
|
25
|
-
URI = "https://www.oxford.gov.uk/xfp/form/142"
|
24
|
+
session_uri = "https://www.oxford.gov.uk/xfp/form/142"
|
25
|
+
URI = "https://www.oxford.gov.uk/xfp/form/142#q6ad4e3bf432c83230a0347a6eea6c805c672efeb_0"
|
26
26
|
|
27
27
|
session = requests.Session()
|
28
28
|
token_response = session.get(session_uri)
|
@@ -40,15 +40,18 @@ class CouncilClass(AbstractGetBinDataClass):
|
|
40
40
|
|
41
41
|
collection_response = session.post(URI, data=form_data)
|
42
42
|
|
43
|
-
|
44
|
-
|
45
|
-
|
43
|
+
soup = BeautifulSoup(collection_response.text, "html.parser")
|
44
|
+
#print(soup)
|
45
|
+
|
46
|
+
for paragraph in soup.find("div", class_="editor").find_all("p"):
|
47
|
+
matches = re.match(r"^Your next (\w+) collections: (.*)", paragraph.text)
|
46
48
|
if matches:
|
47
49
|
collection_type, date_string = matches.groups()
|
50
|
+
parts = date_string.split(', ', 1)
|
48
51
|
try:
|
49
|
-
date = datetime.strptime(
|
52
|
+
date = datetime.strptime(parts[0], "%A %d %B %Y").date()
|
50
53
|
except ValueError:
|
51
|
-
date = datetime.strptime(
|
54
|
+
date = datetime.strptime(parts[0], "%A %d %b %Y").date()
|
52
55
|
|
53
56
|
dict_data = {
|
54
57
|
"type": collection_type,
|
@@ -61,3 +64,5 @@ class CouncilClass(AbstractGetBinDataClass):
|
|
61
64
|
)
|
62
65
|
|
63
66
|
return bindata
|
67
|
+
|
68
|
+
|
@@ -113,7 +113,7 @@ class CouncilClass(AbstractGetBinDataClass):
|
|
113
113
|
try:
|
114
114
|
# Convert date from "Friday 09 May 2025" format
|
115
115
|
parsed_date = datetime.strptime(
|
116
|
-
collection_date, "%A %d %
|
116
|
+
collection_date, "%A %d %b %Y"
|
117
117
|
)
|
118
118
|
formatted_date = parsed_date.strftime("%d/%m/%Y")
|
119
119
|
|
@@ -132,7 +132,7 @@ class CouncilClass(AbstractGetBinDataClass):
|
|
132
132
|
key=lambda x: datetime.strptime(x["collectionDate"], "%d/%m/%Y")
|
133
133
|
)
|
134
134
|
|
135
|
-
print(bin_data)
|
135
|
+
#print(bin_data)
|
136
136
|
|
137
137
|
except Exception as e:
|
138
138
|
# Here you can log the exception if needed
|
@@ -82,7 +82,7 @@ class CouncilClass(AbstractGetBinDataClass):
|
|
82
82
|
# Get the dates.
|
83
83
|
for bins in soup.find_all("div", {"class": "BinsRecycling"}):
|
84
84
|
bin_type = bins.find("h2").text
|
85
|
-
binCollection = bins.find("div", {"class": "
|
85
|
+
binCollection = bins.find("div", {"class": "dateWrap-next"}).get_text(
|
86
86
|
strip=True
|
87
87
|
)
|
88
88
|
binData = datetime.strptime(
|
@@ -7,7 +7,7 @@ uk_bin_collection/tests/council_feature_input_parity.py,sha256=DO6Mk4ImYgM5ZCZ-c
|
|
7
7
|
uk_bin_collection/tests/features/environment.py,sha256=VQZjJdJI_kZn08M0j5cUgvKT4k3iTw8icJge1DGOkoA,127
|
8
8
|
uk_bin_collection/tests/features/validate_council_outputs.feature,sha256=SJK-Vc737hrf03tssxxbeg_JIvAH-ddB8f6gU1LTbuQ,251
|
9
9
|
uk_bin_collection/tests/generate_map_test_results.py,sha256=CKnGK2ZgiSXomRGkomX90DitgMP-X7wkHhyKORDcL2E,1144
|
10
|
-
uk_bin_collection/tests/input.json,sha256=
|
10
|
+
uk_bin_collection/tests/input.json,sha256=Xoq9-6sQ5Yc91jPFXx6hJucoyOOc1exTVQ9jS_m-JkY,135599
|
11
11
|
uk_bin_collection/tests/output.schema,sha256=ZwKQBwYyTDEM4G2hJwfLUVM-5v1vKRvRK9W9SS1sd18,1086
|
12
12
|
uk_bin_collection/tests/step_defs/step_helpers/file_handler.py,sha256=Ygzi4V0S1MIHqbdstUlIqtRIwnynvhu4UtpweJ6-5N8,1474
|
13
13
|
uk_bin_collection/tests/step_defs/test_validate_council.py,sha256=VZ0a81sioJULD7syAYHjvK_-nT_Rd36tUyzPetSA0gk,3475
|
@@ -88,9 +88,9 @@ uk_bin_collection/uk_bin_collection/councils/CornwallCouncil.py,sha256=6zHe_Qu-R
|
|
88
88
|
uk_bin_collection/uk_bin_collection/councils/CotswoldDistrictCouncil.py,sha256=85MPd1idsil3F-0Y6RQGMHKEcP9VS-z9B8l8ITK4BUU,4854
|
89
89
|
uk_bin_collection/uk_bin_collection/councils/CoventryCityCouncil.py,sha256=YjVSEGxuu92-hcfLtNjzh98To_HSiTfjrfZHF3DHChg,2085
|
90
90
|
uk_bin_collection/uk_bin_collection/councils/CrawleyBoroughCouncil.py,sha256=Oaj5INA3zNjtzBRsfLvRTIxZzcd4E4bJfVF1ULWlrL4,4322
|
91
|
-
uk_bin_collection/uk_bin_collection/councils/CroydonCouncil.py,sha256=
|
91
|
+
uk_bin_collection/uk_bin_collection/councils/CroydonCouncil.py,sha256=6UCT2Q75NANXPP7kR1ktM65lTKEDI2pDwfc5qnOL1io,5369
|
92
92
|
uk_bin_collection/uk_bin_collection/councils/CumberlandAllerdaleCouncil.py,sha256=bPOmkyzNnHrOtUprbouHdOsgpu7WilUADcaccWTCPFI,2839
|
93
|
-
uk_bin_collection/uk_bin_collection/councils/CumberlandCouncil.py,sha256=
|
93
|
+
uk_bin_collection/uk_bin_collection/councils/CumberlandCouncil.py,sha256=PwTbTVNDdGZnSkPcIHYf-LHItDyIbR68Avr96T1FrX8,3308
|
94
94
|
uk_bin_collection/uk_bin_collection/councils/DacorumBoroughCouncil.py,sha256=Tm_6pvBPj-6qStbe6-02LXaoCOlnnDvVXAAocGVvf_E,3970
|
95
95
|
uk_bin_collection/uk_bin_collection/councils/DartfordBoroughCouncil.py,sha256=3vuXYhoK3ZkFGtxIDJXCTeY8_kbaXDcKn0C2yk5g1kI,2056
|
96
96
|
uk_bin_collection/uk_bin_collection/councils/DenbighshireCouncil.py,sha256=FtG0LMTY21RBQiBpeX4FihdMCEZ1knpARYyMfyCn9ng,2103
|
@@ -162,7 +162,7 @@ uk_bin_collection/uk_bin_collection/councils/HyndburnBoroughCouncil.py,sha256=_l
|
|
162
162
|
uk_bin_collection/uk_bin_collection/councils/IpswichBoroughCouncil.py,sha256=57lmDl_FprG68gUhKQYpOa1M2pudyb1utfoMhUXNwzs,2802
|
163
163
|
uk_bin_collection/uk_bin_collection/councils/IslingtonCouncil.py,sha256=xavzL6ZIU9DG8Xro3vN0CEnYmNU31OGnOvnq78wgpQc,1258
|
164
164
|
uk_bin_collection/uk_bin_collection/councils/KingsLynnandWestNorfolkBC.py,sha256=Shj18R-7NW4ivqJJFVJOLmf-EeN6hXP2Of30oI-SeAQ,1932
|
165
|
-
uk_bin_collection/uk_bin_collection/councils/KingstonUponThamesCouncil.py,sha256=
|
165
|
+
uk_bin_collection/uk_bin_collection/councils/KingstonUponThamesCouncil.py,sha256=8kKRhvdqs1hCymqmTtbi0FPJp2kd47JVmKTgRaWOGeY,3573
|
166
166
|
uk_bin_collection/uk_bin_collection/councils/KirkleesCouncil.py,sha256=WPM7koIqK5Wz-iT9Mds6AptihGZtl4KZhkVTcT9cx_c,2762
|
167
167
|
uk_bin_collection/uk_bin_collection/councils/KnowsleyMBCouncil.py,sha256=PDC907dxifFSAuto-vLJLEPBJrxTqNsfoD07__iKiwM,5269
|
168
168
|
uk_bin_collection/uk_bin_collection/councils/LancasterCityCouncil.py,sha256=FmHT6oyD4BwWuhxA80PHnGA7HPrLuyjP_54Cg8hT6k4,2537
|
@@ -213,7 +213,7 @@ uk_bin_collection/uk_bin_collection/councils/NorthAyrshireCouncil.py,sha256=o8zv
|
|
213
213
|
uk_bin_collection/uk_bin_collection/councils/NorthDevonCountyCouncil.py,sha256=tgJKIvu7nnCAHu_HImfG5SQABD6ygKFqrZU-ZoC6ObY,6260
|
214
214
|
uk_bin_collection/uk_bin_collection/councils/NorthEastDerbyshireDistrictCouncil.py,sha256=BfNpYcjG3z0Yz8OYN6NkfzvZ5k1FI-80D-rv211kPPU,5449
|
215
215
|
uk_bin_collection/uk_bin_collection/councils/NorthEastLincs.py,sha256=fYf438VZIaOaqPSwdTTWVjFTdrI0jGfFsxVzOc-QdkA,1817
|
216
|
-
uk_bin_collection/uk_bin_collection/councils/NorthHertfordshireDistrictCouncil.py,sha256=
|
216
|
+
uk_bin_collection/uk_bin_collection/councils/NorthHertfordshireDistrictCouncil.py,sha256=vwskZOfnUrSmKiezzt6TgP6_EIym0hDe-qaoLC9hWuU,12307
|
217
217
|
uk_bin_collection/uk_bin_collection/councils/NorthKestevenDistrictCouncil.py,sha256=vYOCerJXr9LTP6F2wm4vpYNYbQaWNZ6yfHEQ33N_hTw,1681
|
218
218
|
uk_bin_collection/uk_bin_collection/councils/NorthLanarkshireCouncil.py,sha256=npK1V8D3SLNTSSKkfEpEPvVgXDFyhH_tAsuGogsVKQY,1763
|
219
219
|
uk_bin_collection/uk_bin_collection/councils/NorthLincolnshireCouncil.py,sha256=MPzrfdo9YQFVlqBUOM-jDQkacz2DXnygLILQ_ojZeJo,2543
|
@@ -229,7 +229,7 @@ uk_bin_collection/uk_bin_collection/councils/NottinghamCityCouncil.py,sha256=pan
|
|
229
229
|
uk_bin_collection/uk_bin_collection/councils/NuneatonBedworthBoroughCouncil.py,sha256=PViXaBJ5SeP3inOnqf4PuPahzRCLN06n5Gicqyt3gbM,37781
|
230
230
|
uk_bin_collection/uk_bin_collection/councils/OadbyAndWigstonBoroughCouncil.py,sha256=Kgy5HA0xZ9hR4_cAydPfOfskhGUB4j93AQF2-9Fj-Cg,2179
|
231
231
|
uk_bin_collection/uk_bin_collection/councils/OldhamCouncil.py,sha256=9dlesCxNoVXlmQaqZj7QFh00smnJbm1Gnjkr_Uvzurs,1771
|
232
|
-
uk_bin_collection/uk_bin_collection/councils/OxfordCityCouncil.py,sha256=
|
232
|
+
uk_bin_collection/uk_bin_collection/councils/OxfordCityCouncil.py,sha256=a6bPDZDh0RKcbyDoidI-PiIM5lw7Tr0AlApP4_hTbxQ,2419
|
233
233
|
uk_bin_collection/uk_bin_collection/councils/PembrokeshireCountyCouncil.py,sha256=GRAxjf_DuO5uZ660kEbZt_yCjP3n2maMxsYTPCTz3GQ,3324
|
234
234
|
uk_bin_collection/uk_bin_collection/councils/PerthAndKinrossCouncil.py,sha256=Kos5GzN2co3Ij3tSHOXB9S71Yt78RROCfVRtnh7M1VU,3657
|
235
235
|
uk_bin_collection/uk_bin_collection/councils/PeterboroughCityCouncil.py,sha256=lOrDD4jfJ-_C5UwCGqRcQ1G-U1F5X6rf255ypzYEBcg,6300
|
@@ -248,7 +248,7 @@ uk_bin_collection/uk_bin_collection/councils/RochfordCouncil.py,sha256=rfhD66A9H
|
|
248
248
|
uk_bin_collection/uk_bin_collection/councils/RotherDistrictCouncil.py,sha256=-fdLvtik9ytfwXrrhwWdBxqQOMq2N1pvrIuvShhf8PU,3090
|
249
249
|
uk_bin_collection/uk_bin_collection/councils/RotherhamCouncil.py,sha256=LtMPM8lj5bfReDR4buHEo-aRC_HTBIeo1nf8GE5-R80,1790
|
250
250
|
uk_bin_collection/uk_bin_collection/councils/RoyalBoroughofGreenwich.py,sha256=BZzLmWK_VONOmMpSrLrnKtJaOrrepm6aStfKGVcgf9Y,3487
|
251
|
-
uk_bin_collection/uk_bin_collection/councils/RugbyBoroughCouncil.py,sha256=
|
251
|
+
uk_bin_collection/uk_bin_collection/councils/RugbyBoroughCouncil.py,sha256=WlmOD-xHJFdowI9fGuGDHOpnAVHGUWxGZqmJ6z4fGXs,5687
|
252
252
|
uk_bin_collection/uk_bin_collection/councils/RunnymedeBoroughCouncil.py,sha256=vmTZfijt9b6sKzRdRwROE94lrMVnqs6kn6tg-xi1jR4,1618
|
253
253
|
uk_bin_collection/uk_bin_collection/councils/RushcliffeBoroughCouncil.py,sha256=nWo8xeER71FEbnMTX8W9bcwZNpLEExWzPvgRT7DmcMc,4221
|
254
254
|
uk_bin_collection/uk_bin_collection/councils/RushmoorCouncil.py,sha256=ZsGnXjoEaOS6U7fI0w7-uqxayAHdNVKsJi2fqIWEls8,3375
|
@@ -329,7 +329,7 @@ uk_bin_collection/uk_bin_collection/councils/WestMorlandAndFurness.py,sha256=jbq
|
|
329
329
|
uk_bin_collection/uk_bin_collection/councils/WestNorthamptonshireCouncil.py,sha256=Se3Cfn_6ADjhsUzEJI_JnGkVcIbXxSTferM4ZC6pZ0g,1166
|
330
330
|
uk_bin_collection/uk_bin_collection/councils/WestOxfordshireDistrictCouncil.py,sha256=Cicz5ywn7YD-g4yiRxp5TGLuJFPBatw6y4mS_pBkblo,4858
|
331
331
|
uk_bin_collection/uk_bin_collection/councils/WestSuffolkCouncil.py,sha256=9i8AQHh-qIRPZ_5Ad97_h04-qgyLQDPV064obBzab1Y,2587
|
332
|
-
uk_bin_collection/uk_bin_collection/councils/WiganBoroughCouncil.py,sha256=
|
332
|
+
uk_bin_collection/uk_bin_collection/councils/WiganBoroughCouncil.py,sha256=W9FGN47bTHvzARa6UInXEB3X6cToqfgzTkNlROzHgcM,3743
|
333
333
|
uk_bin_collection/uk_bin_collection/councils/WiltshireCouncil.py,sha256=Q0ooHTQb9ynMXpSNBPk7XXEjI7zcHst3id4wxGdmVx4,5698
|
334
334
|
uk_bin_collection/uk_bin_collection/councils/WinchesterCityCouncil.py,sha256=W2k00N5n9-1MzjMEqsNjldsQdOJPEPMjK7OGSinZm5Y,4335
|
335
335
|
uk_bin_collection/uk_bin_collection/councils/WindsorAndMaidenheadCouncil.py,sha256=VWtFgypXL1wKQ63NmV-_O9odOkbDmv3uCQwrv8g9lMI,2294
|
@@ -346,8 +346,8 @@ uk_bin_collection/uk_bin_collection/councils/YorkCouncil.py,sha256=I2kBYMlsD4bId
|
|
346
346
|
uk_bin_collection/uk_bin_collection/councils/council_class_template/councilclasstemplate.py,sha256=QD4v4xpsEE0QheR_fGaNOIRMc2FatcUfKkkhAhseyVU,1159
|
347
347
|
uk_bin_collection/uk_bin_collection/create_new_council.py,sha256=m-IhmWmeWQlFsTZC4OxuFvtw5ZtB8EAJHxJTH4O59lQ,1536
|
348
348
|
uk_bin_collection/uk_bin_collection/get_bin_data.py,sha256=YvmHfZqanwrJ8ToGch34x-L-7yPe31nB_x77_Mgl_vo,4545
|
349
|
-
uk_bin_collection-0.152.
|
350
|
-
uk_bin_collection-0.152.
|
351
|
-
uk_bin_collection-0.152.
|
352
|
-
uk_bin_collection-0.152.
|
353
|
-
uk_bin_collection-0.152.
|
349
|
+
uk_bin_collection-0.152.6.dist-info/LICENSE,sha256=vABBUOzcrgfaTKpzeo-si9YVEun6juDkndqA8RKdKGs,1071
|
350
|
+
uk_bin_collection-0.152.6.dist-info/METADATA,sha256=sNfl9s2XJPOukcSK5-3R-Vf37i8Zi2wOhJnPom0nwq4,26688
|
351
|
+
uk_bin_collection-0.152.6.dist-info/WHEEL,sha256=Nq82e9rUAnEjt98J6MlVmMCZb-t9cYE2Ir1kpBmnWfs,88
|
352
|
+
uk_bin_collection-0.152.6.dist-info/entry_points.txt,sha256=36WCSGMWSc916S3Hi1ZkazzDKHaJ6CD-4fCEFm5MIao,90
|
353
|
+
uk_bin_collection-0.152.6.dist-info/RECORD,,
|
File without changes
|
File without changes
|
{uk_bin_collection-0.152.5.dist-info → uk_bin_collection-0.152.6.dist-info}/entry_points.txt
RENAMED
File without changes
|