uk_bin_collection 0.97.0__tar.gz → 0.98.0__tar.gz
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-0.97.0 → uk_bin_collection-0.98.0}/PKG-INFO +1 -1
- {uk_bin_collection-0.97.0 → uk_bin_collection-0.98.0}/pyproject.toml +1 -1
- {uk_bin_collection-0.97.0 → uk_bin_collection-0.98.0}/uk_bin_collection/tests/input.json +36 -1
- uk_bin_collection-0.98.0/uk_bin_collection/uk_bin_collection/councils/ArmaghBanbridgeCraigavonCouncil.py +72 -0
- uk_bin_collection-0.98.0/uk_bin_collection/uk_bin_collection/councils/LichfieldDistrictCouncil.py +60 -0
- {uk_bin_collection-0.97.0 → uk_bin_collection-0.98.0}/uk_bin_collection/uk_bin_collection/councils/NottinghamCityCouncil.py +2 -1
- uk_bin_collection-0.98.0/uk_bin_collection/uk_bin_collection/councils/WalsallCouncil.py +56 -0
- uk_bin_collection-0.98.0/uk_bin_collection/uk_bin_collection/councils/WestMorlandAndFurness.py +65 -0
- uk_bin_collection-0.98.0/uk_bin_collection/uk_bin_collection/councils/WirralCouncil.py +64 -0
- {uk_bin_collection-0.97.0 → uk_bin_collection-0.98.0}/LICENSE +0 -0
- {uk_bin_collection-0.97.0 → uk_bin_collection-0.98.0}/README.md +0 -0
- {uk_bin_collection-0.97.0 → uk_bin_collection-0.98.0}/uk_bin_collection/README.rst +0 -0
- {uk_bin_collection-0.97.0 → uk_bin_collection-0.98.0}/uk_bin_collection/tests/council_feature_input_parity.py +0 -0
- {uk_bin_collection-0.97.0 → uk_bin_collection-0.98.0}/uk_bin_collection/tests/features/environment.py +0 -0
- {uk_bin_collection-0.97.0 → uk_bin_collection-0.98.0}/uk_bin_collection/tests/features/validate_council_outputs.feature +0 -0
- {uk_bin_collection-0.97.0 → uk_bin_collection-0.98.0}/uk_bin_collection/tests/output.schema +0 -0
- {uk_bin_collection-0.97.0 → uk_bin_collection-0.98.0}/uk_bin_collection/tests/step_defs/step_helpers/file_handler.py +0 -0
- {uk_bin_collection-0.97.0 → uk_bin_collection-0.98.0}/uk_bin_collection/tests/step_defs/test_validate_council.py +0 -0
- {uk_bin_collection-0.97.0 → uk_bin_collection-0.98.0}/uk_bin_collection/tests/test_collect_data.py +0 -0
- {uk_bin_collection-0.97.0 → uk_bin_collection-0.98.0}/uk_bin_collection/tests/test_common_functions.py +0 -0
- {uk_bin_collection-0.97.0 → uk_bin_collection-0.98.0}/uk_bin_collection/tests/test_conftest.py +0 -0
- {uk_bin_collection-0.97.0 → uk_bin_collection-0.98.0}/uk_bin_collection/tests/test_get_data.py +0 -0
- {uk_bin_collection-0.97.0 → uk_bin_collection-0.98.0}/uk_bin_collection/uk_bin_collection/collect_data.py +0 -0
- {uk_bin_collection-0.97.0 → uk_bin_collection-0.98.0}/uk_bin_collection/uk_bin_collection/common.py +0 -0
- {uk_bin_collection-0.97.0 → uk_bin_collection-0.98.0}/uk_bin_collection/uk_bin_collection/councils/AdurAndWorthingCouncils.py +0 -0
- {uk_bin_collection-0.97.0 → uk_bin_collection-0.98.0}/uk_bin_collection/uk_bin_collection/councils/ArunCouncil.py +0 -0
- {uk_bin_collection-0.97.0 → uk_bin_collection-0.98.0}/uk_bin_collection/uk_bin_collection/councils/AylesburyValeCouncil.py +0 -0
- {uk_bin_collection-0.97.0 → uk_bin_collection-0.98.0}/uk_bin_collection/uk_bin_collection/councils/BCPCouncil.py +0 -0
- {uk_bin_collection-0.97.0 → uk_bin_collection-0.98.0}/uk_bin_collection/uk_bin_collection/councils/BarnetCouncil.py +0 -0
- {uk_bin_collection-0.97.0 → uk_bin_collection-0.98.0}/uk_bin_collection/uk_bin_collection/councils/BarnsleyMBCouncil.py +0 -0
- {uk_bin_collection-0.97.0 → uk_bin_collection-0.98.0}/uk_bin_collection/uk_bin_collection/councils/BasildonCouncil.py +0 -0
- {uk_bin_collection-0.97.0 → uk_bin_collection-0.98.0}/uk_bin_collection/uk_bin_collection/councils/BasingstokeCouncil.py +0 -0
- {uk_bin_collection-0.97.0 → uk_bin_collection-0.98.0}/uk_bin_collection/uk_bin_collection/councils/BathAndNorthEastSomersetCouncil.py +0 -0
- {uk_bin_collection-0.97.0 → uk_bin_collection-0.98.0}/uk_bin_collection/uk_bin_collection/councils/BedfordBoroughCouncil.py +0 -0
- {uk_bin_collection-0.97.0 → uk_bin_collection-0.98.0}/uk_bin_collection/uk_bin_collection/councils/BedfordshireCouncil.py +0 -0
- {uk_bin_collection-0.97.0 → uk_bin_collection-0.98.0}/uk_bin_collection/uk_bin_collection/councils/BelfastCityCouncil.py +0 -0
- {uk_bin_collection-0.97.0 → uk_bin_collection-0.98.0}/uk_bin_collection/uk_bin_collection/councils/BexleyCouncil.py +0 -0
- {uk_bin_collection-0.97.0 → uk_bin_collection-0.98.0}/uk_bin_collection/uk_bin_collection/councils/BirminghamCityCouncil.py +0 -0
- {uk_bin_collection-0.97.0 → uk_bin_collection-0.98.0}/uk_bin_collection/uk_bin_collection/councils/BlackburnCouncil.py +0 -0
- {uk_bin_collection-0.97.0 → uk_bin_collection-0.98.0}/uk_bin_collection/uk_bin_collection/councils/BoltonCouncil.py +0 -0
- {uk_bin_collection-0.97.0 → uk_bin_collection-0.98.0}/uk_bin_collection/uk_bin_collection/councils/BracknellForestCouncil.py +0 -0
- {uk_bin_collection-0.97.0 → uk_bin_collection-0.98.0}/uk_bin_collection/uk_bin_collection/councils/BradfordMDC.py +0 -0
- {uk_bin_collection-0.97.0 → uk_bin_collection-0.98.0}/uk_bin_collection/uk_bin_collection/councils/BrightonandHoveCityCouncil.py +0 -0
- {uk_bin_collection-0.97.0 → uk_bin_collection-0.98.0}/uk_bin_collection/uk_bin_collection/councils/BristolCityCouncil.py +0 -0
- {uk_bin_collection-0.97.0 → uk_bin_collection-0.98.0}/uk_bin_collection/uk_bin_collection/councils/BromleyBoroughCouncil.py +0 -0
- {uk_bin_collection-0.97.0 → uk_bin_collection-0.98.0}/uk_bin_collection/uk_bin_collection/councils/BroxtoweBoroughCouncil.py +0 -0
- {uk_bin_collection-0.97.0 → uk_bin_collection-0.98.0}/uk_bin_collection/uk_bin_collection/councils/BuckinghamshireCouncil.py +0 -0
- {uk_bin_collection-0.97.0 → uk_bin_collection-0.98.0}/uk_bin_collection/uk_bin_collection/councils/BuryCouncil.py +0 -0
- {uk_bin_collection-0.97.0 → uk_bin_collection-0.98.0}/uk_bin_collection/uk_bin_collection/councils/CalderdaleCouncil.py +0 -0
- {uk_bin_collection-0.97.0 → uk_bin_collection-0.98.0}/uk_bin_collection/uk_bin_collection/councils/CannockChaseDistrictCouncil.py +0 -0
- {uk_bin_collection-0.97.0 → uk_bin_collection-0.98.0}/uk_bin_collection/uk_bin_collection/councils/CardiffCouncil.py +0 -0
- {uk_bin_collection-0.97.0 → uk_bin_collection-0.98.0}/uk_bin_collection/uk_bin_collection/councils/CastlepointDistrictCouncil.py +0 -0
- {uk_bin_collection-0.97.0 → uk_bin_collection-0.98.0}/uk_bin_collection/uk_bin_collection/councils/CharnwoodBoroughCouncil.py +0 -0
- {uk_bin_collection-0.97.0 → uk_bin_collection-0.98.0}/uk_bin_collection/uk_bin_collection/councils/ChelmsfordCityCouncil.py +0 -0
- {uk_bin_collection-0.97.0 → uk_bin_collection-0.98.0}/uk_bin_collection/uk_bin_collection/councils/CheshireEastCouncil.py +0 -0
- {uk_bin_collection-0.97.0 → uk_bin_collection-0.98.0}/uk_bin_collection/uk_bin_collection/councils/CheshireWestAndChesterCouncil.py +0 -0
- {uk_bin_collection-0.97.0 → uk_bin_collection-0.98.0}/uk_bin_collection/uk_bin_collection/councils/ChichesterDistrictCouncil.py +0 -0
- {uk_bin_collection-0.97.0 → uk_bin_collection-0.98.0}/uk_bin_collection/uk_bin_collection/councils/ChorleyCouncil.py +0 -0
- {uk_bin_collection-0.97.0 → uk_bin_collection-0.98.0}/uk_bin_collection/uk_bin_collection/councils/ColchesterCityCouncil.py +0 -0
- {uk_bin_collection-0.97.0 → uk_bin_collection-0.98.0}/uk_bin_collection/uk_bin_collection/councils/ConwyCountyBorough.py +0 -0
- {uk_bin_collection-0.97.0 → uk_bin_collection-0.98.0}/uk_bin_collection/uk_bin_collection/councils/CornwallCouncil.py +0 -0
- {uk_bin_collection-0.97.0 → uk_bin_collection-0.98.0}/uk_bin_collection/uk_bin_collection/councils/CrawleyBoroughCouncil.py +0 -0
- {uk_bin_collection-0.97.0 → uk_bin_collection-0.98.0}/uk_bin_collection/uk_bin_collection/councils/CroydonCouncil.py +0 -0
- {uk_bin_collection-0.97.0 → uk_bin_collection-0.98.0}/uk_bin_collection/uk_bin_collection/councils/DacorumBoroughCouncil.py +0 -0
- {uk_bin_collection-0.97.0 → uk_bin_collection-0.98.0}/uk_bin_collection/uk_bin_collection/councils/DartfordBoroughCouncil.py +0 -0
- {uk_bin_collection-0.97.0 → uk_bin_collection-0.98.0}/uk_bin_collection/uk_bin_collection/councils/DerbyshireDalesDistrictCouncil.py +0 -0
- {uk_bin_collection-0.97.0 → uk_bin_collection-0.98.0}/uk_bin_collection/uk_bin_collection/councils/DoncasterCouncil.py +0 -0
- {uk_bin_collection-0.97.0 → uk_bin_collection-0.98.0}/uk_bin_collection/uk_bin_collection/councils/DorsetCouncil.py +0 -0
- {uk_bin_collection-0.97.0 → uk_bin_collection-0.98.0}/uk_bin_collection/uk_bin_collection/councils/DoverDistrictCouncil.py +0 -0
- {uk_bin_collection-0.97.0 → uk_bin_collection-0.98.0}/uk_bin_collection/uk_bin_collection/councils/DurhamCouncil.py +0 -0
- {uk_bin_collection-0.97.0 → uk_bin_collection-0.98.0}/uk_bin_collection/uk_bin_collection/councils/EalingCouncil.py +0 -0
- {uk_bin_collection-0.97.0 → uk_bin_collection-0.98.0}/uk_bin_collection/uk_bin_collection/councils/EastCambridgeshireCouncil.py +0 -0
- {uk_bin_collection-0.97.0 → uk_bin_collection-0.98.0}/uk_bin_collection/uk_bin_collection/councils/EastDevonDC.py +0 -0
- {uk_bin_collection-0.97.0 → uk_bin_collection-0.98.0}/uk_bin_collection/uk_bin_collection/councils/EastLindseyDistrictCouncil.py +0 -0
- {uk_bin_collection-0.97.0 → uk_bin_collection-0.98.0}/uk_bin_collection/uk_bin_collection/councils/EastRenfrewshireCouncil.py +0 -0
- {uk_bin_collection-0.97.0 → uk_bin_collection-0.98.0}/uk_bin_collection/uk_bin_collection/councils/EastRidingCouncil.py +0 -0
- {uk_bin_collection-0.97.0 → uk_bin_collection-0.98.0}/uk_bin_collection/uk_bin_collection/councils/EastSuffolkCouncil.py +0 -0
- {uk_bin_collection-0.97.0 → uk_bin_collection-0.98.0}/uk_bin_collection/uk_bin_collection/councils/EastleighBoroughCouncil.py +0 -0
- {uk_bin_collection-0.97.0 → uk_bin_collection-0.98.0}/uk_bin_collection/uk_bin_collection/councils/ElmbridgeBoroughCouncil.py +0 -0
- {uk_bin_collection-0.97.0 → uk_bin_collection-0.98.0}/uk_bin_collection/uk_bin_collection/councils/EnfieldCouncil.py +0 -0
- {uk_bin_collection-0.97.0 → uk_bin_collection-0.98.0}/uk_bin_collection/uk_bin_collection/councils/EnvironmentFirst.py +0 -0
- {uk_bin_collection-0.97.0 → uk_bin_collection-0.98.0}/uk_bin_collection/uk_bin_collection/councils/EppingForestDistrictCouncil.py +0 -0
- {uk_bin_collection-0.97.0 → uk_bin_collection-0.98.0}/uk_bin_collection/uk_bin_collection/councils/ErewashBoroughCouncil.py +0 -0
- {uk_bin_collection-0.97.0 → uk_bin_collection-0.98.0}/uk_bin_collection/uk_bin_collection/councils/FalkirkCouncil.py +0 -0
- {uk_bin_collection-0.97.0 → uk_bin_collection-0.98.0}/uk_bin_collection/uk_bin_collection/councils/FarehamBoroughCouncil.py +0 -0
- {uk_bin_collection-0.97.0 → uk_bin_collection-0.98.0}/uk_bin_collection/uk_bin_collection/councils/FenlandDistrictCouncil.py +0 -0
- {uk_bin_collection-0.97.0 → uk_bin_collection-0.98.0}/uk_bin_collection/uk_bin_collection/councils/ForestOfDeanDistrictCouncil.py +0 -0
- {uk_bin_collection-0.97.0 → uk_bin_collection-0.98.0}/uk_bin_collection/uk_bin_collection/councils/GatesheadCouncil.py +0 -0
- {uk_bin_collection-0.97.0 → uk_bin_collection-0.98.0}/uk_bin_collection/uk_bin_collection/councils/GedlingBoroughCouncil.py +0 -0
- {uk_bin_collection-0.97.0 → uk_bin_collection-0.98.0}/uk_bin_collection/uk_bin_collection/councils/GlasgowCityCouncil.py +0 -0
- {uk_bin_collection-0.97.0 → uk_bin_collection-0.98.0}/uk_bin_collection/uk_bin_collection/councils/GloucesterCityCouncil.py +0 -0
- {uk_bin_collection-0.97.0 → uk_bin_collection-0.98.0}/uk_bin_collection/uk_bin_collection/councils/GuildfordCouncil.py +0 -0
- {uk_bin_collection-0.97.0 → uk_bin_collection-0.98.0}/uk_bin_collection/uk_bin_collection/councils/HaltonBoroughCouncil.py +0 -0
- {uk_bin_collection-0.97.0 → uk_bin_collection-0.98.0}/uk_bin_collection/uk_bin_collection/councils/HaringeyCouncil.py +0 -0
- {uk_bin_collection-0.97.0 → uk_bin_collection-0.98.0}/uk_bin_collection/uk_bin_collection/councils/HarrogateBoroughCouncil.py +0 -0
- {uk_bin_collection-0.97.0 → uk_bin_collection-0.98.0}/uk_bin_collection/uk_bin_collection/councils/HighPeakCouncil.py +0 -0
- {uk_bin_collection-0.97.0 → uk_bin_collection-0.98.0}/uk_bin_collection/uk_bin_collection/councils/HighlandCouncil.py +0 -0
- {uk_bin_collection-0.97.0 → uk_bin_collection-0.98.0}/uk_bin_collection/uk_bin_collection/councils/HounslowCouncil.py +0 -0
- {uk_bin_collection-0.97.0 → uk_bin_collection-0.98.0}/uk_bin_collection/uk_bin_collection/councils/HullCityCouncil.py +0 -0
- {uk_bin_collection-0.97.0 → uk_bin_collection-0.98.0}/uk_bin_collection/uk_bin_collection/councils/HuntingdonDistrictCouncil.py +0 -0
- {uk_bin_collection-0.97.0 → uk_bin_collection-0.98.0}/uk_bin_collection/uk_bin_collection/councils/IslingtonCouncil.py +0 -0
- {uk_bin_collection-0.97.0 → uk_bin_collection-0.98.0}/uk_bin_collection/uk_bin_collection/councils/KingstonUponThamesCouncil.py +0 -0
- {uk_bin_collection-0.97.0 → uk_bin_collection-0.98.0}/uk_bin_collection/uk_bin_collection/councils/KirkleesCouncil.py +0 -0
- {uk_bin_collection-0.97.0 → uk_bin_collection-0.98.0}/uk_bin_collection/uk_bin_collection/councils/KnowsleyMBCouncil.py +0 -0
- {uk_bin_collection-0.97.0 → uk_bin_collection-0.98.0}/uk_bin_collection/uk_bin_collection/councils/LancasterCityCouncil.py +0 -0
- {uk_bin_collection-0.97.0 → uk_bin_collection-0.98.0}/uk_bin_collection/uk_bin_collection/councils/LeedsCityCouncil.py +0 -0
- {uk_bin_collection-0.97.0 → uk_bin_collection-0.98.0}/uk_bin_collection/uk_bin_collection/councils/LisburnCastlereaghCityCouncil.py +0 -0
- {uk_bin_collection-0.97.0 → uk_bin_collection-0.98.0}/uk_bin_collection/uk_bin_collection/councils/LiverpoolCityCouncil.py +0 -0
- {uk_bin_collection-0.97.0 → uk_bin_collection-0.98.0}/uk_bin_collection/uk_bin_collection/councils/LondonBoroughEaling.py +0 -0
- {uk_bin_collection-0.97.0 → uk_bin_collection-0.98.0}/uk_bin_collection/uk_bin_collection/councils/LondonBoroughHarrow.py +0 -0
- {uk_bin_collection-0.97.0 → uk_bin_collection-0.98.0}/uk_bin_collection/uk_bin_collection/councils/LondonBoroughHounslow.py +0 -0
- {uk_bin_collection-0.97.0 → uk_bin_collection-0.98.0}/uk_bin_collection/uk_bin_collection/councils/LondonBoroughLambeth.py +0 -0
- {uk_bin_collection-0.97.0 → uk_bin_collection-0.98.0}/uk_bin_collection/uk_bin_collection/councils/LondonBoroughRedbridge.py +0 -0
- {uk_bin_collection-0.97.0 → uk_bin_collection-0.98.0}/uk_bin_collection/uk_bin_collection/councils/MaldonDistrictCouncil.py +0 -0
- {uk_bin_collection-0.97.0 → uk_bin_collection-0.98.0}/uk_bin_collection/uk_bin_collection/councils/MalvernHillsDC.py +0 -0
- {uk_bin_collection-0.97.0 → uk_bin_collection-0.98.0}/uk_bin_collection/uk_bin_collection/councils/ManchesterCityCouncil.py +0 -0
- {uk_bin_collection-0.97.0 → uk_bin_collection-0.98.0}/uk_bin_collection/uk_bin_collection/councils/MansfieldDistrictCouncil.py +0 -0
- {uk_bin_collection-0.97.0 → uk_bin_collection-0.98.0}/uk_bin_collection/uk_bin_collection/councils/MertonCouncil.py +0 -0
- {uk_bin_collection-0.97.0 → uk_bin_collection-0.98.0}/uk_bin_collection/uk_bin_collection/councils/MidAndEastAntrimBoroughCouncil.py +0 -0
- {uk_bin_collection-0.97.0 → uk_bin_collection-0.98.0}/uk_bin_collection/uk_bin_collection/councils/MidSussexDistrictCouncil.py +0 -0
- {uk_bin_collection-0.97.0 → uk_bin_collection-0.98.0}/uk_bin_collection/uk_bin_collection/councils/MiltonKeynesCityCouncil.py +0 -0
- {uk_bin_collection-0.97.0 → uk_bin_collection-0.98.0}/uk_bin_collection/uk_bin_collection/councils/MoleValleyDistrictCouncil.py +0 -0
- {uk_bin_collection-0.97.0 → uk_bin_collection-0.98.0}/uk_bin_collection/uk_bin_collection/councils/NeathPortTalbotCouncil.py +0 -0
- {uk_bin_collection-0.97.0 → uk_bin_collection-0.98.0}/uk_bin_collection/uk_bin_collection/councils/NewForestCouncil.py +0 -0
- {uk_bin_collection-0.97.0 → uk_bin_collection-0.98.0}/uk_bin_collection/uk_bin_collection/councils/NewarkAndSherwoodDC.py +0 -0
- {uk_bin_collection-0.97.0 → uk_bin_collection-0.98.0}/uk_bin_collection/uk_bin_collection/councils/NewcastleCityCouncil.py +0 -0
- {uk_bin_collection-0.97.0 → uk_bin_collection-0.98.0}/uk_bin_collection/uk_bin_collection/councils/NewhamCouncil.py +0 -0
- {uk_bin_collection-0.97.0 → uk_bin_collection-0.98.0}/uk_bin_collection/uk_bin_collection/councils/NewportCityCouncil.py +0 -0
- {uk_bin_collection-0.97.0 → uk_bin_collection-0.98.0}/uk_bin_collection/uk_bin_collection/councils/NorthAyrshireCouncil.py +0 -0
- {uk_bin_collection-0.97.0 → uk_bin_collection-0.98.0}/uk_bin_collection/uk_bin_collection/councils/NorthEastDerbyshireDistrictCouncil.py +0 -0
- {uk_bin_collection-0.97.0 → uk_bin_collection-0.98.0}/uk_bin_collection/uk_bin_collection/councils/NorthEastLincs.py +0 -0
- {uk_bin_collection-0.97.0 → uk_bin_collection-0.98.0}/uk_bin_collection/uk_bin_collection/councils/NorthKestevenDistrictCouncil.py +0 -0
- {uk_bin_collection-0.97.0 → uk_bin_collection-0.98.0}/uk_bin_collection/uk_bin_collection/councils/NorthLanarkshireCouncil.py +0 -0
- {uk_bin_collection-0.97.0 → uk_bin_collection-0.98.0}/uk_bin_collection/uk_bin_collection/councils/NorthLincolnshireCouncil.py +0 -0
- {uk_bin_collection-0.97.0 → uk_bin_collection-0.98.0}/uk_bin_collection/uk_bin_collection/councils/NorthNorfolkDistrictCouncil.py +0 -0
- {uk_bin_collection-0.97.0 → uk_bin_collection-0.98.0}/uk_bin_collection/uk_bin_collection/councils/NorthNorthamptonshireCouncil.py +0 -0
- {uk_bin_collection-0.97.0 → uk_bin_collection-0.98.0}/uk_bin_collection/uk_bin_collection/councils/NorthSomersetCouncil.py +0 -0
- {uk_bin_collection-0.97.0 → uk_bin_collection-0.98.0}/uk_bin_collection/uk_bin_collection/councils/NorthTynesideCouncil.py +0 -0
- {uk_bin_collection-0.97.0 → uk_bin_collection-0.98.0}/uk_bin_collection/uk_bin_collection/councils/NorthWestLeicestershire.py +0 -0
- {uk_bin_collection-0.97.0 → uk_bin_collection-0.98.0}/uk_bin_collection/uk_bin_collection/councils/NorthYorkshire.py +0 -0
- {uk_bin_collection-0.97.0 → uk_bin_collection-0.98.0}/uk_bin_collection/uk_bin_collection/councils/NorthumberlandCouncil.py +0 -0
- {uk_bin_collection-0.97.0 → uk_bin_collection-0.98.0}/uk_bin_collection/uk_bin_collection/councils/OldhamCouncil.py +0 -0
- {uk_bin_collection-0.97.0 → uk_bin_collection-0.98.0}/uk_bin_collection/uk_bin_collection/councils/PortsmouthCityCouncil.py +0 -0
- {uk_bin_collection-0.97.0 → uk_bin_collection-0.98.0}/uk_bin_collection/uk_bin_collection/councils/PrestonCityCouncil.py +0 -0
- {uk_bin_collection-0.97.0 → uk_bin_collection-0.98.0}/uk_bin_collection/uk_bin_collection/councils/ReadingBoroughCouncil.py +0 -0
- {uk_bin_collection-0.97.0 → uk_bin_collection-0.98.0}/uk_bin_collection/uk_bin_collection/councils/ReigateAndBansteadBoroughCouncil.py +0 -0
- {uk_bin_collection-0.97.0 → uk_bin_collection-0.98.0}/uk_bin_collection/uk_bin_collection/councils/RenfrewshireCouncil.py +0 -0
- {uk_bin_collection-0.97.0 → uk_bin_collection-0.98.0}/uk_bin_collection/uk_bin_collection/councils/RhonddaCynonTaffCouncil.py +0 -0
- {uk_bin_collection-0.97.0 → uk_bin_collection-0.98.0}/uk_bin_collection/uk_bin_collection/councils/RochdaleCouncil.py +0 -0
- {uk_bin_collection-0.97.0 → uk_bin_collection-0.98.0}/uk_bin_collection/uk_bin_collection/councils/RochfordCouncil.py +0 -0
- {uk_bin_collection-0.97.0 → uk_bin_collection-0.98.0}/uk_bin_collection/uk_bin_collection/councils/RotherhamCouncil.py +0 -0
- {uk_bin_collection-0.97.0 → uk_bin_collection-0.98.0}/uk_bin_collection/uk_bin_collection/councils/RugbyBoroughCouncil.py +0 -0
- {uk_bin_collection-0.97.0 → uk_bin_collection-0.98.0}/uk_bin_collection/uk_bin_collection/councils/RushcliffeBoroughCouncil.py +0 -0
- {uk_bin_collection-0.97.0 → uk_bin_collection-0.98.0}/uk_bin_collection/uk_bin_collection/councils/RushmoorCouncil.py +0 -0
- {uk_bin_collection-0.97.0 → uk_bin_collection-0.98.0}/uk_bin_collection/uk_bin_collection/councils/SalfordCityCouncil.py +0 -0
- {uk_bin_collection-0.97.0 → uk_bin_collection-0.98.0}/uk_bin_collection/uk_bin_collection/councils/SevenoaksDistrictCouncil.py +0 -0
- {uk_bin_collection-0.97.0 → uk_bin_collection-0.98.0}/uk_bin_collection/uk_bin_collection/councils/SheffieldCityCouncil.py +0 -0
- {uk_bin_collection-0.97.0 → uk_bin_collection-0.98.0}/uk_bin_collection/uk_bin_collection/councils/ShropshireCouncil.py +0 -0
- {uk_bin_collection-0.97.0 → uk_bin_collection-0.98.0}/uk_bin_collection/uk_bin_collection/councils/SolihullCouncil.py +0 -0
- {uk_bin_collection-0.97.0 → uk_bin_collection-0.98.0}/uk_bin_collection/uk_bin_collection/councils/SomersetCouncil.py +0 -0
- {uk_bin_collection-0.97.0 → uk_bin_collection-0.98.0}/uk_bin_collection/uk_bin_collection/councils/SouthAyrshireCouncil.py +0 -0
- {uk_bin_collection-0.97.0 → uk_bin_collection-0.98.0}/uk_bin_collection/uk_bin_collection/councils/SouthCambridgeshireCouncil.py +0 -0
- {uk_bin_collection-0.97.0 → uk_bin_collection-0.98.0}/uk_bin_collection/uk_bin_collection/councils/SouthDerbyshireDistrictCouncil.py +0 -0
- {uk_bin_collection-0.97.0 → uk_bin_collection-0.98.0}/uk_bin_collection/uk_bin_collection/councils/SouthGloucestershireCouncil.py +0 -0
- {uk_bin_collection-0.97.0 → uk_bin_collection-0.98.0}/uk_bin_collection/uk_bin_collection/councils/SouthKestevenDistrictCouncil.py +0 -0
- {uk_bin_collection-0.97.0 → uk_bin_collection-0.98.0}/uk_bin_collection/uk_bin_collection/councils/SouthLanarkshireCouncil.py +0 -0
- {uk_bin_collection-0.97.0 → uk_bin_collection-0.98.0}/uk_bin_collection/uk_bin_collection/councils/SouthNorfolkCouncil.py +0 -0
- {uk_bin_collection-0.97.0 → uk_bin_collection-0.98.0}/uk_bin_collection/uk_bin_collection/councils/SouthOxfordshireCouncil.py +0 -0
- {uk_bin_collection-0.97.0 → uk_bin_collection-0.98.0}/uk_bin_collection/uk_bin_collection/councils/SouthTynesideCouncil.py +0 -0
- {uk_bin_collection-0.97.0 → uk_bin_collection-0.98.0}/uk_bin_collection/uk_bin_collection/councils/SouthwarkCouncil.py +0 -0
- {uk_bin_collection-0.97.0 → uk_bin_collection-0.98.0}/uk_bin_collection/uk_bin_collection/councils/StAlbansCityAndDistrictCouncil.py +0 -0
- {uk_bin_collection-0.97.0 → uk_bin_collection-0.98.0}/uk_bin_collection/uk_bin_collection/councils/StHelensBC.py +0 -0
- {uk_bin_collection-0.97.0 → uk_bin_collection-0.98.0}/uk_bin_collection/uk_bin_collection/councils/StaffordBoroughCouncil.py +0 -0
- {uk_bin_collection-0.97.0 → uk_bin_collection-0.98.0}/uk_bin_collection/uk_bin_collection/councils/StaffordshireMoorlandsDistrictCouncil.py +0 -0
- {uk_bin_collection-0.97.0 → uk_bin_collection-0.98.0}/uk_bin_collection/uk_bin_collection/councils/StockportBoroughCouncil.py +0 -0
- {uk_bin_collection-0.97.0 → uk_bin_collection-0.98.0}/uk_bin_collection/uk_bin_collection/councils/StokeOnTrentCityCouncil.py +0 -0
- {uk_bin_collection-0.97.0 → uk_bin_collection-0.98.0}/uk_bin_collection/uk_bin_collection/councils/StratfordUponAvonCouncil.py +0 -0
- {uk_bin_collection-0.97.0 → uk_bin_collection-0.98.0}/uk_bin_collection/uk_bin_collection/councils/StroudDistrictCouncil.py +0 -0
- {uk_bin_collection-0.97.0 → uk_bin_collection-0.98.0}/uk_bin_collection/uk_bin_collection/councils/SunderlandCityCouncil.py +0 -0
- {uk_bin_collection-0.97.0 → uk_bin_collection-0.98.0}/uk_bin_collection/uk_bin_collection/councils/SwaleBoroughCouncil.py +0 -0
- {uk_bin_collection-0.97.0 → uk_bin_collection-0.98.0}/uk_bin_collection/uk_bin_collection/councils/SwanseaCouncil.py +0 -0
- {uk_bin_collection-0.97.0 → uk_bin_collection-0.98.0}/uk_bin_collection/uk_bin_collection/councils/TamesideMBCouncil.py +0 -0
- {uk_bin_collection-0.97.0 → uk_bin_collection-0.98.0}/uk_bin_collection/uk_bin_collection/councils/TandridgeDistrictCouncil.py +0 -0
- {uk_bin_collection-0.97.0 → uk_bin_collection-0.98.0}/uk_bin_collection/uk_bin_collection/councils/TelfordAndWrekinCouncil.py +0 -0
- {uk_bin_collection-0.97.0 → uk_bin_collection-0.98.0}/uk_bin_collection/uk_bin_collection/councils/TendringDistrictCouncil.py +0 -0
- {uk_bin_collection-0.97.0 → uk_bin_collection-0.98.0}/uk_bin_collection/uk_bin_collection/councils/TestValleyBoroughCouncil.py +0 -0
- {uk_bin_collection-0.97.0 → uk_bin_collection-0.98.0}/uk_bin_collection/uk_bin_collection/councils/ThreeRiversDistrictCouncil.py +0 -0
- {uk_bin_collection-0.97.0 → uk_bin_collection-0.98.0}/uk_bin_collection/uk_bin_collection/councils/TonbridgeAndMallingBC.py +0 -0
- {uk_bin_collection-0.97.0 → uk_bin_collection-0.98.0}/uk_bin_collection/uk_bin_collection/councils/TorbayCouncil.py +0 -0
- {uk_bin_collection-0.97.0 → uk_bin_collection-0.98.0}/uk_bin_collection/uk_bin_collection/councils/TorridgeDistrictCouncil.py +0 -0
- {uk_bin_collection-0.97.0 → uk_bin_collection-0.98.0}/uk_bin_collection/uk_bin_collection/councils/UttlesfordDistrictCouncil.py +0 -0
- {uk_bin_collection-0.97.0 → uk_bin_collection-0.98.0}/uk_bin_collection/uk_bin_collection/councils/ValeofGlamorganCouncil.py +0 -0
- {uk_bin_collection-0.97.0 → uk_bin_collection-0.98.0}/uk_bin_collection/uk_bin_collection/councils/ValeofWhiteHorseCouncil.py +0 -0
- {uk_bin_collection-0.97.0 → uk_bin_collection-0.98.0}/uk_bin_collection/uk_bin_collection/councils/WakefieldCityCouncil.py +0 -0
- {uk_bin_collection-0.97.0 → uk_bin_collection-0.98.0}/uk_bin_collection/uk_bin_collection/councils/WalthamForest.py +0 -0
- {uk_bin_collection-0.97.0 → uk_bin_collection-0.98.0}/uk_bin_collection/uk_bin_collection/councils/WarwickDistrictCouncil.py +0 -0
- {uk_bin_collection-0.97.0 → uk_bin_collection-0.98.0}/uk_bin_collection/uk_bin_collection/councils/WaverleyBoroughCouncil.py +0 -0
- {uk_bin_collection-0.97.0 → uk_bin_collection-0.98.0}/uk_bin_collection/uk_bin_collection/councils/WealdenDistrictCouncil.py +0 -0
- {uk_bin_collection-0.97.0 → uk_bin_collection-0.98.0}/uk_bin_collection/uk_bin_collection/councils/WelhatCouncil.py +0 -0
- {uk_bin_collection-0.97.0 → uk_bin_collection-0.98.0}/uk_bin_collection/uk_bin_collection/councils/WestBerkshireCouncil.py +0 -0
- {uk_bin_collection-0.97.0 → uk_bin_collection-0.98.0}/uk_bin_collection/uk_bin_collection/councils/WestLindseyDistrictCouncil.py +0 -0
- {uk_bin_collection-0.97.0 → uk_bin_collection-0.98.0}/uk_bin_collection/uk_bin_collection/councils/WestLothianCouncil.py +0 -0
- {uk_bin_collection-0.97.0 → uk_bin_collection-0.98.0}/uk_bin_collection/uk_bin_collection/councils/WestNorthamptonshireCouncil.py +0 -0
- {uk_bin_collection-0.97.0 → uk_bin_collection-0.98.0}/uk_bin_collection/uk_bin_collection/councils/WestSuffolkCouncil.py +0 -0
- {uk_bin_collection-0.97.0 → uk_bin_collection-0.98.0}/uk_bin_collection/uk_bin_collection/councils/WiganBoroughCouncil.py +0 -0
- {uk_bin_collection-0.97.0 → uk_bin_collection-0.98.0}/uk_bin_collection/uk_bin_collection/councils/WiltshireCouncil.py +0 -0
- {uk_bin_collection-0.97.0 → uk_bin_collection-0.98.0}/uk_bin_collection/uk_bin_collection/councils/WinchesterCityCouncil.py +0 -0
- {uk_bin_collection-0.97.0 → uk_bin_collection-0.98.0}/uk_bin_collection/uk_bin_collection/councils/WindsorAndMaidenheadCouncil.py +0 -0
- {uk_bin_collection-0.97.0 → uk_bin_collection-0.98.0}/uk_bin_collection/uk_bin_collection/councils/WokingBoroughCouncil.py +0 -0
- {uk_bin_collection-0.97.0 → uk_bin_collection-0.98.0}/uk_bin_collection/uk_bin_collection/councils/WokinghamBoroughCouncil.py +0 -0
- {uk_bin_collection-0.97.0 → uk_bin_collection-0.98.0}/uk_bin_collection/uk_bin_collection/councils/WychavonDistrictCouncil.py +0 -0
- {uk_bin_collection-0.97.0 → uk_bin_collection-0.98.0}/uk_bin_collection/uk_bin_collection/councils/WyreCouncil.py +0 -0
- {uk_bin_collection-0.97.0 → uk_bin_collection-0.98.0}/uk_bin_collection/uk_bin_collection/councils/YorkCouncil.py +0 -0
- {uk_bin_collection-0.97.0 → uk_bin_collection-0.98.0}/uk_bin_collection/uk_bin_collection/councils/council_class_template/councilclasstemplate.py +0 -0
- {uk_bin_collection-0.97.0 → uk_bin_collection-0.98.0}/uk_bin_collection/uk_bin_collection/create_new_council.py +0 -0
- {uk_bin_collection-0.97.0 → uk_bin_collection-0.98.0}/uk_bin_collection/uk_bin_collection/get_bin_data.py +0 -0
@@ -5,6 +5,13 @@
|
|
5
5
|
"wiki_name": "Adur and Worthing Councils",
|
6
6
|
"wiki_note": "Replace XXXXXXXX with UPRN. You will need to use [FindMyAddress](https://www.findmyaddress.co.uk/search) to find the UPRN."
|
7
7
|
},
|
8
|
+
"ArmaghBanbridgeCraigavonCouncil": {
|
9
|
+
"url": "https://www.armaghbanbridgecraigavon.gov.uk/",
|
10
|
+
"wiki_command_url_override": "https://www.armaghbanbridgecraigavon.gov.uk/",
|
11
|
+
"uprn": "185625284",
|
12
|
+
"wiki_name": "Armagh Banbridge Craigavon Council",
|
13
|
+
"wiki_note": "You will need to use [FindMyAddress](https://www.findmyaddress.co.uk/search) to find the UPRN."
|
14
|
+
},
|
8
15
|
"ArunCouncil": {
|
9
16
|
"house_number": "1",
|
10
17
|
"postcode": "BN16 4DA",
|
@@ -606,6 +613,13 @@
|
|
606
613
|
"web_driver": "http://selenium:4444",
|
607
614
|
"wiki_name": "Leeds City Council"
|
608
615
|
},
|
616
|
+
"LichfieldDistrictCouncil": {
|
617
|
+
"url": "https://www.lichfielddc.gov.uk",
|
618
|
+
"wiki_command_url_override": "https://www.lichfielddc.gov.uk",
|
619
|
+
"uprn": "100031694085",
|
620
|
+
"wiki_name": "Lichfield District Council",
|
621
|
+
"wiki_note": "You will need to use [FindMyAddress](https://www.findmyaddress.co.uk/search) to find the UPRN."
|
622
|
+
},
|
609
623
|
"LisburnCastlereaghCityCouncil": {
|
610
624
|
"house_number": "97",
|
611
625
|
"postcode": "BT28 1JN",
|
@@ -849,7 +863,7 @@
|
|
849
863
|
"NottinghamCityCouncil": {
|
850
864
|
"skip_get_url": true,
|
851
865
|
"uprn": "100031540180",
|
852
|
-
"url": "https://geoserver.nottinghamcity.gov.uk/
|
866
|
+
"url": "https://geoserver.nottinghamcity.gov.uk/bincollections2/api/collection/100031540180",
|
853
867
|
"wiki_name": "Nottingham City Council"
|
854
868
|
},
|
855
869
|
"OldhamCouncil": {
|
@@ -1216,6 +1230,13 @@
|
|
1216
1230
|
"wiki_name": "Wakefield City Council",
|
1217
1231
|
"wiki_note": "Follow the instructions [here](https://www.wakefield.gov.uk/where-i-live/) until you get the page that includes a \"Bin Collections\" section then copy the URL and replace the URL in the command."
|
1218
1232
|
},
|
1233
|
+
"WalsallCouncil": {
|
1234
|
+
"url": "https://cag.walsall.gov.uk/",
|
1235
|
+
"wiki_command_url_override": "https://cag.walsall.gov.uk/",
|
1236
|
+
"uprn": "100071080513",
|
1237
|
+
"wiki_name": "Walsall Council",
|
1238
|
+
"wiki_note": "You will need to use [FindMyAddress](https://www.findmyaddress.co.uk/search) to find the UPRN."
|
1239
|
+
},
|
1219
1240
|
"WalthamForest": {
|
1220
1241
|
"house_number": "17 Chingford Road, Walthamstow",
|
1221
1242
|
"postcode": "E17 4PW",
|
@@ -1278,6 +1299,13 @@
|
|
1278
1299
|
"wiki_name": "West Lothian Council",
|
1279
1300
|
"wiki_note": "Pass the house name/number in the house number parameter, wrapped in double quotes"
|
1280
1301
|
},
|
1302
|
+
"WestMorlandAndFurness": {
|
1303
|
+
"url": "https://www.westmorlandandfurness.gov.uk/",
|
1304
|
+
"wiki_command_url_override": "https://www.westmorlandandfurness.gov.uk/",
|
1305
|
+
"uprn": "100110353478",
|
1306
|
+
"wiki_name": "West Morland And Furness Council",
|
1307
|
+
"wiki_note": "You will need to use [FindMyAddress](https://www.findmyaddress.co.uk/search) to find the UPRN."
|
1308
|
+
},
|
1281
1309
|
"WestNorthamptonshireCouncil": {
|
1282
1310
|
"postcode": "NN3 2JB",
|
1283
1311
|
"skip_get_url": true,
|
@@ -1322,6 +1350,13 @@
|
|
1322
1350
|
"url": "https://forms.rbwm.gov.uk/bincollections?uprn=",
|
1323
1351
|
"wiki_name": "Windsor and Maidenhead Council"
|
1324
1352
|
},
|
1353
|
+
"WirralCouncil": {
|
1354
|
+
"url": "https://www.wirral.gov.uk",
|
1355
|
+
"wiki_command_url_override": "https://www.wirral.gov.uk",
|
1356
|
+
"uprn": "Vernon Avenue,Seacombe",
|
1357
|
+
"wiki_name": "Wirral Council",
|
1358
|
+
"wiki_note": "Please use the UPRN field to enter your street name and suburb separated by a comma, for example 'Vernon Avenue,Seacombe'"
|
1359
|
+
},
|
1325
1360
|
"WokingBoroughCouncil": {
|
1326
1361
|
"house_number": "2",
|
1327
1362
|
"postcode": "GU214JY",
|
@@ -0,0 +1,72 @@
|
|
1
|
+
import requests
|
2
|
+
from bs4 import BeautifulSoup
|
3
|
+
|
4
|
+
from uk_bin_collection.uk_bin_collection.common import *
|
5
|
+
from uk_bin_collection.uk_bin_collection.get_bin_data import AbstractGetBinDataClass
|
6
|
+
|
7
|
+
|
8
|
+
# import the wonderful Beautiful Soup and the URL grabber
|
9
|
+
class CouncilClass(AbstractGetBinDataClass):
|
10
|
+
"""
|
11
|
+
Concrete classes have to implement all abstract operations of the
|
12
|
+
base class. They can also override some operations with a default
|
13
|
+
implementation.
|
14
|
+
"""
|
15
|
+
|
16
|
+
def parse_data(self, page: str, **kwargs) -> dict:
|
17
|
+
|
18
|
+
user_uprn = kwargs.get("uprn")
|
19
|
+
check_uprn(user_uprn)
|
20
|
+
bindata = {"bins": []}
|
21
|
+
|
22
|
+
# Function to extract bin collection information
|
23
|
+
def extract_bin_schedule(soup, heading_class):
|
24
|
+
collections = []
|
25
|
+
|
26
|
+
# Find the relevant section based on the heading class
|
27
|
+
section_heading = soup.find("div", class_=heading_class)
|
28
|
+
if section_heading:
|
29
|
+
# Find all the bin collection dates in that section
|
30
|
+
collection_dates = section_heading.find_next(
|
31
|
+
"div", class_="col-sm-12 col-md-9"
|
32
|
+
).find_all("h4")
|
33
|
+
for date in collection_dates:
|
34
|
+
# Clean and add the date to the list
|
35
|
+
collections.append(date.get_text(strip=True))
|
36
|
+
|
37
|
+
return collections
|
38
|
+
|
39
|
+
# URL for bin collection schedule
|
40
|
+
url = f"https://www.armaghbanbridgecraigavon.gov.uk/resident/binday-result/?address={user_uprn}"
|
41
|
+
|
42
|
+
# Send a GET request to fetch the page content
|
43
|
+
response = requests.get(url)
|
44
|
+
|
45
|
+
# Check if the request was successful
|
46
|
+
if response.status_code == 200:
|
47
|
+
# Parse the page content using BeautifulSoup
|
48
|
+
soup = BeautifulSoup(response.text, "html.parser")
|
49
|
+
|
50
|
+
# Extract bin collection schedules by their sections
|
51
|
+
domestic_collections = extract_bin_schedule(soup, "heading bg-black")
|
52
|
+
for collection in domestic_collections:
|
53
|
+
bindata["bins"].append(
|
54
|
+
{"collectionDate": collection, "type": "Domestic"}
|
55
|
+
)
|
56
|
+
recycling_collections = extract_bin_schedule(soup, "heading bg-green")
|
57
|
+
for collection in recycling_collections:
|
58
|
+
bindata["bins"].append(
|
59
|
+
{"collectionDate": collection, "type": "Recycling"}
|
60
|
+
)
|
61
|
+
garden_collections = extract_bin_schedule(soup, "heading bg-brown")
|
62
|
+
for collection in garden_collections:
|
63
|
+
bindata["bins"].append({"collectionDate": collection, "type": "Garden"})
|
64
|
+
|
65
|
+
else:
|
66
|
+
print(f"Failed to retrieve data. Status code: {response.status_code}")
|
67
|
+
|
68
|
+
bindata["bins"].sort(
|
69
|
+
key=lambda x: datetime.strptime(x.get("collectionDate"), "%d/%m/%Y")
|
70
|
+
)
|
71
|
+
|
72
|
+
return bindata
|
uk_bin_collection-0.98.0/uk_bin_collection/uk_bin_collection/councils/LichfieldDistrictCouncil.py
ADDED
@@ -0,0 +1,60 @@
|
|
1
|
+
import re
|
2
|
+
|
3
|
+
import requests
|
4
|
+
from bs4 import BeautifulSoup
|
5
|
+
|
6
|
+
from uk_bin_collection.uk_bin_collection.common import *
|
7
|
+
from uk_bin_collection.uk_bin_collection.get_bin_data import AbstractGetBinDataClass
|
8
|
+
|
9
|
+
|
10
|
+
# import the wonderful Beautiful Soup and the URL grabber
|
11
|
+
class CouncilClass(AbstractGetBinDataClass):
|
12
|
+
"""
|
13
|
+
Concrete classes have to implement all abstract operations of the
|
14
|
+
base class. They can also override some operations with a default
|
15
|
+
implementation.
|
16
|
+
"""
|
17
|
+
|
18
|
+
def parse_data(self, page: str, **kwargs) -> dict:
|
19
|
+
|
20
|
+
user_uprn = kwargs.get("uprn")
|
21
|
+
check_uprn(user_uprn)
|
22
|
+
bindata = {"bins": []}
|
23
|
+
|
24
|
+
def solve(s):
|
25
|
+
return re.sub(r"(\d)(st|nd|rd|th)", r"\1", s)
|
26
|
+
|
27
|
+
URI = f"https://www.lichfielddc.gov.uk/homepage/6/bin-collection-dates?uprn={user_uprn}"
|
28
|
+
|
29
|
+
# Make the GET request
|
30
|
+
response = requests.get(URI)
|
31
|
+
|
32
|
+
soup = BeautifulSoup(response.text, "html.parser")
|
33
|
+
|
34
|
+
bins = soup.find_all("h3", class_="bin-collection-tasks__heading")
|
35
|
+
dates = soup.find_all("p", class_="bin-collection-tasks__date")
|
36
|
+
|
37
|
+
current_year = datetime.now().year
|
38
|
+
current_month = datetime.now().month
|
39
|
+
|
40
|
+
for i in range(len(dates)):
|
41
|
+
bint = " ".join(bins[i].text.split()[2:4])
|
42
|
+
date = dates[i].text
|
43
|
+
|
44
|
+
date = datetime.strptime(
|
45
|
+
solve(date),
|
46
|
+
"%d %B",
|
47
|
+
)
|
48
|
+
|
49
|
+
if (current_month > 10) and (date.month < 3):
|
50
|
+
date = date.replace(year=(current_year + 1))
|
51
|
+
else:
|
52
|
+
date = date.replace(year=current_year)
|
53
|
+
|
54
|
+
dict_data = {
|
55
|
+
"type": bint,
|
56
|
+
"collectionDate": date.strftime("%d/%m/%Y"),
|
57
|
+
}
|
58
|
+
bindata["bins"].append(dict_data)
|
59
|
+
|
60
|
+
return bindata
|
@@ -1,4 +1,5 @@
|
|
1
1
|
from bs4 import BeautifulSoup
|
2
|
+
|
2
3
|
from uk_bin_collection.uk_bin_collection.common import *
|
3
4
|
from uk_bin_collection.uk_bin_collection.get_bin_data import AbstractGetBinDataClass
|
4
5
|
|
@@ -14,7 +15,7 @@ class CouncilClass(AbstractGetBinDataClass):
|
|
14
15
|
user_uprn = kwargs.get("uprn")
|
15
16
|
check_uprn(user_uprn)
|
16
17
|
|
17
|
-
api_url = f"https://geoserver.nottinghamcity.gov.uk/
|
18
|
+
api_url = f"https://geoserver.nottinghamcity.gov.uk/bincollections2/api/collection/{user_uprn}"
|
18
19
|
|
19
20
|
requests.packages.urllib3.disable_warnings()
|
20
21
|
response = requests.get(api_url)
|
@@ -0,0 +1,56 @@
|
|
1
|
+
import requests
|
2
|
+
from bs4 import BeautifulSoup
|
3
|
+
|
4
|
+
from uk_bin_collection.uk_bin_collection.common import *
|
5
|
+
from uk_bin_collection.uk_bin_collection.get_bin_data import AbstractGetBinDataClass
|
6
|
+
|
7
|
+
|
8
|
+
# import the wonderful Beautiful Soup and the URL grabber
|
9
|
+
class CouncilClass(AbstractGetBinDataClass):
|
10
|
+
"""
|
11
|
+
Concrete classes have to implement all abstract operations of the
|
12
|
+
base class. They can also override some operations with a default
|
13
|
+
implementation.
|
14
|
+
"""
|
15
|
+
|
16
|
+
def parse_data(self, page: str, **kwargs) -> dict:
|
17
|
+
|
18
|
+
user_uprn = kwargs.get("uprn")
|
19
|
+
check_uprn(user_uprn)
|
20
|
+
bindata = {"bins": []}
|
21
|
+
|
22
|
+
URI = f"https://cag.walsall.gov.uk/BinCollections/GetBins?uprn={user_uprn}"
|
23
|
+
|
24
|
+
headers = {
|
25
|
+
"user-agent": "Mozilla/5.0",
|
26
|
+
}
|
27
|
+
|
28
|
+
response = requests.get(URI, headers=headers)
|
29
|
+
|
30
|
+
soup = BeautifulSoup(response.text, "html.parser")
|
31
|
+
# Extract links to collection shedule pages and iterate through the pages
|
32
|
+
schedule_links = soup.findAll("a", {"class": "nav-link"}, href=True)
|
33
|
+
for item in schedule_links:
|
34
|
+
if "roundname" in item["href"]:
|
35
|
+
# get bin colour
|
36
|
+
bincolour = item["href"].split("=")[-1].split("%")[0].upper()
|
37
|
+
binURL = "https://cag.walsall.gov.uk" + item["href"]
|
38
|
+
r = requests.get(binURL, headers=headers)
|
39
|
+
soup = BeautifulSoup(r.text, "html.parser")
|
40
|
+
table = soup.findAll("tr")
|
41
|
+
for tr in table:
|
42
|
+
td = tr.findAll("td")
|
43
|
+
if td:
|
44
|
+
dict_data = {
|
45
|
+
"type": bincolour,
|
46
|
+
"collectionDate": datetime.strptime(
|
47
|
+
td[1].text.strip(), "%d/%m/%Y"
|
48
|
+
).strftime("%d/%m/%Y"),
|
49
|
+
}
|
50
|
+
bindata["bins"].append(dict_data)
|
51
|
+
|
52
|
+
bindata["bins"].sort(
|
53
|
+
key=lambda x: datetime.strptime(x.get("collectionDate"), "%d/%m/%Y")
|
54
|
+
)
|
55
|
+
|
56
|
+
return bindata
|
uk_bin_collection-0.98.0/uk_bin_collection/uk_bin_collection/councils/WestMorlandAndFurness.py
ADDED
@@ -0,0 +1,65 @@
|
|
1
|
+
import requests
|
2
|
+
from bs4 import BeautifulSoup
|
3
|
+
|
4
|
+
from uk_bin_collection.uk_bin_collection.common import *
|
5
|
+
from uk_bin_collection.uk_bin_collection.get_bin_data import AbstractGetBinDataClass
|
6
|
+
|
7
|
+
|
8
|
+
# import the wonderful Beautiful Soup and the URL grabber
|
9
|
+
class CouncilClass(AbstractGetBinDataClass):
|
10
|
+
"""
|
11
|
+
Concrete classes have to implement all abstract operations of the
|
12
|
+
base class. They can also override some operations with a default
|
13
|
+
implementation.
|
14
|
+
"""
|
15
|
+
|
16
|
+
def parse_data(self, page: str, **kwargs) -> dict:
|
17
|
+
|
18
|
+
user_uprn = kwargs.get("uprn")
|
19
|
+
check_uprn(user_uprn)
|
20
|
+
bindata = {"bins": []}
|
21
|
+
|
22
|
+
URI = f"https://www.westmorlandandfurness.gov.uk/bins-recycling-and-street-cleaning/waste-collection-schedule/view/{user_uprn}"
|
23
|
+
|
24
|
+
headers = {
|
25
|
+
"user-agent": "Mozilla/5.0",
|
26
|
+
}
|
27
|
+
|
28
|
+
current_year = datetime.now().year
|
29
|
+
current_month = datetime.now().month
|
30
|
+
|
31
|
+
response = requests.get(URI)
|
32
|
+
|
33
|
+
soup = BeautifulSoup(response.text, "html.parser")
|
34
|
+
# Extract links to collection shedule pages and iterate through the pages
|
35
|
+
schedule = soup.findAll("div", {"class": "waste-collection__month"})
|
36
|
+
for month in schedule:
|
37
|
+
collectionmonth = datetime.strptime(month.find("h3").text, "%B")
|
38
|
+
collectionmonth = collectionmonth.month
|
39
|
+
collectiondays = month.findAll("li", {"class": "waste-collection__day"})
|
40
|
+
for collectionday in collectiondays:
|
41
|
+
day = collectionday.find(
|
42
|
+
"span", {"class": "waste-collection__day--day"}
|
43
|
+
).text.strip()
|
44
|
+
collectiondate = datetime.strptime(day, "%d")
|
45
|
+
collectiondate = collectiondate.replace(month=collectionmonth)
|
46
|
+
bintype = collectionday.find(
|
47
|
+
"span", {"class": "waste-collection__day--colour"}
|
48
|
+
).text
|
49
|
+
|
50
|
+
if (current_month > 9) and (collectiondate.month < 4):
|
51
|
+
collectiondate = collectiondate.replace(year=(current_year + 1))
|
52
|
+
else:
|
53
|
+
collectiondate = collectiondate.replace(year=current_year)
|
54
|
+
|
55
|
+
dict_data = {
|
56
|
+
"type": bintype,
|
57
|
+
"collectionDate": collectiondate.strftime("%d/%m/%Y"),
|
58
|
+
}
|
59
|
+
bindata["bins"].append(dict_data)
|
60
|
+
|
61
|
+
bindata["bins"].sort(
|
62
|
+
key=lambda x: datetime.strptime(x.get("collectionDate"), "%d/%m/%Y")
|
63
|
+
)
|
64
|
+
|
65
|
+
return bindata
|
@@ -0,0 +1,64 @@
|
|
1
|
+
import requests
|
2
|
+
from bs4 import BeautifulSoup
|
3
|
+
|
4
|
+
from uk_bin_collection.uk_bin_collection.common import *
|
5
|
+
from uk_bin_collection.uk_bin_collection.get_bin_data import AbstractGetBinDataClass
|
6
|
+
|
7
|
+
|
8
|
+
# import the wonderful Beautiful Soup and the URL grabber
|
9
|
+
class CouncilClass(AbstractGetBinDataClass):
|
10
|
+
"""
|
11
|
+
Concrete classes have to implement all abstract operations of the
|
12
|
+
base class. They can also override some operations with a default
|
13
|
+
implementation.
|
14
|
+
"""
|
15
|
+
|
16
|
+
def parse_data(self, page: str, **kwargs) -> dict:
|
17
|
+
|
18
|
+
user_uprn = kwargs.get("uprn")
|
19
|
+
bindata = {"bins": []}
|
20
|
+
|
21
|
+
street = user_uprn.split(",")[0]
|
22
|
+
suburb = user_uprn.split(",")[1]
|
23
|
+
|
24
|
+
if not street:
|
25
|
+
print("Street name could not be parsed"),
|
26
|
+
return
|
27
|
+
if not suburb:
|
28
|
+
print("Street name could not be parsed"),
|
29
|
+
return
|
30
|
+
|
31
|
+
wastes = {
|
32
|
+
"Non recycleable (green bin)",
|
33
|
+
"Garden waste (brown bin)",
|
34
|
+
"Paper and packaging (grey bin)",
|
35
|
+
}
|
36
|
+
DATE_REGEX = "^([0-9]{1,2} [A-Za-z]+ [0-9]{4})"
|
37
|
+
|
38
|
+
s = requests.Session()
|
39
|
+
# Loop through waste types
|
40
|
+
for waste in wastes:
|
41
|
+
r = s.get(
|
42
|
+
f"https://ww3.wirral.gov.uk//recycling/detailContentDru7.asp?s={street}&t={suburb}&c={waste}"
|
43
|
+
)
|
44
|
+
# extract dates
|
45
|
+
soup = BeautifulSoup(r.text, "html.parser")
|
46
|
+
dates = soup.findAll("li")
|
47
|
+
if len(dates) != 0:
|
48
|
+
for item in dates:
|
49
|
+
match = re.match(DATE_REGEX, item.text)
|
50
|
+
if match:
|
51
|
+
dict_data = {
|
52
|
+
"type": waste,
|
53
|
+
"collectionDate": datetime.strptime(
|
54
|
+
match.group(1),
|
55
|
+
"%d %B %Y",
|
56
|
+
).strftime("%d/%m/%Y"),
|
57
|
+
}
|
58
|
+
bindata["bins"].append(dict_data)
|
59
|
+
|
60
|
+
bindata["bins"].sort(
|
61
|
+
key=lambda x: datetime.strptime(x.get("collectionDate"), "%d/%m/%Y")
|
62
|
+
)
|
63
|
+
|
64
|
+
return bindata
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{uk_bin_collection-0.97.0 → uk_bin_collection-0.98.0}/uk_bin_collection/tests/test_collect_data.py
RENAMED
File without changes
|
File without changes
|
{uk_bin_collection-0.97.0 → uk_bin_collection-0.98.0}/uk_bin_collection/tests/test_conftest.py
RENAMED
File without changes
|
{uk_bin_collection-0.97.0 → uk_bin_collection-0.98.0}/uk_bin_collection/tests/test_get_data.py
RENAMED
File without changes
|
File without changes
|
{uk_bin_collection-0.97.0 → uk_bin_collection-0.98.0}/uk_bin_collection/uk_bin_collection/common.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|