uk_bin_collection 0.104.0__tar.gz → 0.105.0__tar.gz
Sign up to get free protection for your applications and to get access to all the features.
- {uk_bin_collection-0.104.0 → uk_bin_collection-0.105.0}/PKG-INFO +1 -1
- {uk_bin_collection-0.104.0 → uk_bin_collection-0.105.0}/pyproject.toml +1 -1
- {uk_bin_collection-0.104.0 → uk_bin_collection-0.105.0}/uk_bin_collection/tests/input.json +29 -1
- uk_bin_collection-0.105.0/uk_bin_collection/uk_bin_collection/councils/CoventryCityCouncil.py +51 -0
- uk_bin_collection-0.105.0/uk_bin_collection/uk_bin_collection/councils/HarboroughDistrictCouncil.py +58 -0
- uk_bin_collection-0.105.0/uk_bin_collection/uk_bin_collection/councils/TeignbridgeCouncil.py +59 -0
- uk_bin_collection-0.105.0/uk_bin_collection/uk_bin_collection/councils/WatfordBoroughCouncil.py +72 -0
- {uk_bin_collection-0.104.0 → uk_bin_collection-0.105.0}/LICENSE +0 -0
- {uk_bin_collection-0.104.0 → uk_bin_collection-0.105.0}/README.md +0 -0
- {uk_bin_collection-0.104.0 → uk_bin_collection-0.105.0}/uk_bin_collection/README.rst +0 -0
- {uk_bin_collection-0.104.0 → uk_bin_collection-0.105.0}/uk_bin_collection/tests/council_feature_input_parity.py +0 -0
- {uk_bin_collection-0.104.0 → uk_bin_collection-0.105.0}/uk_bin_collection/tests/features/environment.py +0 -0
- {uk_bin_collection-0.104.0 → uk_bin_collection-0.105.0}/uk_bin_collection/tests/features/validate_council_outputs.feature +0 -0
- {uk_bin_collection-0.104.0 → uk_bin_collection-0.105.0}/uk_bin_collection/tests/output.schema +0 -0
- {uk_bin_collection-0.104.0 → uk_bin_collection-0.105.0}/uk_bin_collection/tests/step_defs/step_helpers/file_handler.py +0 -0
- {uk_bin_collection-0.104.0 → uk_bin_collection-0.105.0}/uk_bin_collection/tests/step_defs/test_validate_council.py +0 -0
- {uk_bin_collection-0.104.0 → uk_bin_collection-0.105.0}/uk_bin_collection/tests/test_collect_data.py +0 -0
- {uk_bin_collection-0.104.0 → uk_bin_collection-0.105.0}/uk_bin_collection/tests/test_common_functions.py +0 -0
- {uk_bin_collection-0.104.0 → uk_bin_collection-0.105.0}/uk_bin_collection/tests/test_conftest.py +0 -0
- {uk_bin_collection-0.104.0 → uk_bin_collection-0.105.0}/uk_bin_collection/tests/test_get_data.py +0 -0
- {uk_bin_collection-0.104.0 → uk_bin_collection-0.105.0}/uk_bin_collection/uk_bin_collection/collect_data.py +0 -0
- {uk_bin_collection-0.104.0 → uk_bin_collection-0.105.0}/uk_bin_collection/uk_bin_collection/common.py +0 -0
- {uk_bin_collection-0.104.0 → uk_bin_collection-0.105.0}/uk_bin_collection/uk_bin_collection/councils/AberdeenshireCouncil.py +0 -0
- {uk_bin_collection-0.104.0 → uk_bin_collection-0.105.0}/uk_bin_collection/uk_bin_collection/councils/AdurAndWorthingCouncils.py +0 -0
- {uk_bin_collection-0.104.0 → uk_bin_collection-0.105.0}/uk_bin_collection/uk_bin_collection/councils/ArmaghBanbridgeCraigavonCouncil.py +0 -0
- {uk_bin_collection-0.104.0 → uk_bin_collection-0.105.0}/uk_bin_collection/uk_bin_collection/councils/ArunCouncil.py +0 -0
- {uk_bin_collection-0.104.0 → uk_bin_collection-0.105.0}/uk_bin_collection/uk_bin_collection/councils/AylesburyValeCouncil.py +0 -0
- {uk_bin_collection-0.104.0 → uk_bin_collection-0.105.0}/uk_bin_collection/uk_bin_collection/councils/BCPCouncil.py +0 -0
- {uk_bin_collection-0.104.0 → uk_bin_collection-0.105.0}/uk_bin_collection/uk_bin_collection/councils/BarnetCouncil.py +0 -0
- {uk_bin_collection-0.104.0 → uk_bin_collection-0.105.0}/uk_bin_collection/uk_bin_collection/councils/BarnsleyMBCouncil.py +0 -0
- {uk_bin_collection-0.104.0 → uk_bin_collection-0.105.0}/uk_bin_collection/uk_bin_collection/councils/BasildonCouncil.py +0 -0
- {uk_bin_collection-0.104.0 → uk_bin_collection-0.105.0}/uk_bin_collection/uk_bin_collection/councils/BasingstokeCouncil.py +0 -0
- {uk_bin_collection-0.104.0 → uk_bin_collection-0.105.0}/uk_bin_collection/uk_bin_collection/councils/BathAndNorthEastSomersetCouncil.py +0 -0
- {uk_bin_collection-0.104.0 → uk_bin_collection-0.105.0}/uk_bin_collection/uk_bin_collection/councils/BedfordBoroughCouncil.py +0 -0
- {uk_bin_collection-0.104.0 → uk_bin_collection-0.105.0}/uk_bin_collection/uk_bin_collection/councils/BedfordshireCouncil.py +0 -0
- {uk_bin_collection-0.104.0 → uk_bin_collection-0.105.0}/uk_bin_collection/uk_bin_collection/councils/BelfastCityCouncil.py +0 -0
- {uk_bin_collection-0.104.0 → uk_bin_collection-0.105.0}/uk_bin_collection/uk_bin_collection/councils/BexleyCouncil.py +0 -0
- {uk_bin_collection-0.104.0 → uk_bin_collection-0.105.0}/uk_bin_collection/uk_bin_collection/councils/BirminghamCityCouncil.py +0 -0
- {uk_bin_collection-0.104.0 → uk_bin_collection-0.105.0}/uk_bin_collection/uk_bin_collection/councils/BlackburnCouncil.py +0 -0
- {uk_bin_collection-0.104.0 → uk_bin_collection-0.105.0}/uk_bin_collection/uk_bin_collection/councils/BoltonCouncil.py +0 -0
- {uk_bin_collection-0.104.0 → uk_bin_collection-0.105.0}/uk_bin_collection/uk_bin_collection/councils/BracknellForestCouncil.py +0 -0
- {uk_bin_collection-0.104.0 → uk_bin_collection-0.105.0}/uk_bin_collection/uk_bin_collection/councils/BradfordMDC.py +0 -0
- {uk_bin_collection-0.104.0 → uk_bin_collection-0.105.0}/uk_bin_collection/uk_bin_collection/councils/BrightonandHoveCityCouncil.py +0 -0
- {uk_bin_collection-0.104.0 → uk_bin_collection-0.105.0}/uk_bin_collection/uk_bin_collection/councils/BristolCityCouncil.py +0 -0
- {uk_bin_collection-0.104.0 → uk_bin_collection-0.105.0}/uk_bin_collection/uk_bin_collection/councils/BromleyBoroughCouncil.py +0 -0
- {uk_bin_collection-0.104.0 → uk_bin_collection-0.105.0}/uk_bin_collection/uk_bin_collection/councils/BroxtoweBoroughCouncil.py +0 -0
- {uk_bin_collection-0.104.0 → uk_bin_collection-0.105.0}/uk_bin_collection/uk_bin_collection/councils/BuckinghamshireCouncil.py +0 -0
- {uk_bin_collection-0.104.0 → uk_bin_collection-0.105.0}/uk_bin_collection/uk_bin_collection/councils/BuryCouncil.py +0 -0
- {uk_bin_collection-0.104.0 → uk_bin_collection-0.105.0}/uk_bin_collection/uk_bin_collection/councils/CalderdaleCouncil.py +0 -0
- {uk_bin_collection-0.104.0 → uk_bin_collection-0.105.0}/uk_bin_collection/uk_bin_collection/councils/CannockChaseDistrictCouncil.py +0 -0
- {uk_bin_collection-0.104.0 → uk_bin_collection-0.105.0}/uk_bin_collection/uk_bin_collection/councils/CanterburyCityCouncil.py +0 -0
- {uk_bin_collection-0.104.0 → uk_bin_collection-0.105.0}/uk_bin_collection/uk_bin_collection/councils/CardiffCouncil.py +0 -0
- {uk_bin_collection-0.104.0 → uk_bin_collection-0.105.0}/uk_bin_collection/uk_bin_collection/councils/CastlepointDistrictCouncil.py +0 -0
- {uk_bin_collection-0.104.0 → uk_bin_collection-0.105.0}/uk_bin_collection/uk_bin_collection/councils/CharnwoodBoroughCouncil.py +0 -0
- {uk_bin_collection-0.104.0 → uk_bin_collection-0.105.0}/uk_bin_collection/uk_bin_collection/councils/ChelmsfordCityCouncil.py +0 -0
- {uk_bin_collection-0.104.0 → uk_bin_collection-0.105.0}/uk_bin_collection/uk_bin_collection/councils/CheshireEastCouncil.py +0 -0
- {uk_bin_collection-0.104.0 → uk_bin_collection-0.105.0}/uk_bin_collection/uk_bin_collection/councils/CheshireWestAndChesterCouncil.py +0 -0
- {uk_bin_collection-0.104.0 → uk_bin_collection-0.105.0}/uk_bin_collection/uk_bin_collection/councils/ChichesterDistrictCouncil.py +0 -0
- {uk_bin_collection-0.104.0 → uk_bin_collection-0.105.0}/uk_bin_collection/uk_bin_collection/councils/ChorleyCouncil.py +0 -0
- {uk_bin_collection-0.104.0 → uk_bin_collection-0.105.0}/uk_bin_collection/uk_bin_collection/councils/ColchesterCityCouncil.py +0 -0
- {uk_bin_collection-0.104.0 → uk_bin_collection-0.105.0}/uk_bin_collection/uk_bin_collection/councils/ConwyCountyBorough.py +0 -0
- {uk_bin_collection-0.104.0 → uk_bin_collection-0.105.0}/uk_bin_collection/uk_bin_collection/councils/CornwallCouncil.py +0 -0
- {uk_bin_collection-0.104.0 → uk_bin_collection-0.105.0}/uk_bin_collection/uk_bin_collection/councils/CrawleyBoroughCouncil.py +0 -0
- {uk_bin_collection-0.104.0 → uk_bin_collection-0.105.0}/uk_bin_collection/uk_bin_collection/councils/CroydonCouncil.py +0 -0
- {uk_bin_collection-0.104.0 → uk_bin_collection-0.105.0}/uk_bin_collection/uk_bin_collection/councils/DacorumBoroughCouncil.py +0 -0
- {uk_bin_collection-0.104.0 → uk_bin_collection-0.105.0}/uk_bin_collection/uk_bin_collection/councils/DartfordBoroughCouncil.py +0 -0
- {uk_bin_collection-0.104.0 → uk_bin_collection-0.105.0}/uk_bin_collection/uk_bin_collection/councils/DerbyshireDalesDistrictCouncil.py +0 -0
- {uk_bin_collection-0.104.0 → uk_bin_collection-0.105.0}/uk_bin_collection/uk_bin_collection/councils/DoncasterCouncil.py +0 -0
- {uk_bin_collection-0.104.0 → uk_bin_collection-0.105.0}/uk_bin_collection/uk_bin_collection/councils/DorsetCouncil.py +0 -0
- {uk_bin_collection-0.104.0 → uk_bin_collection-0.105.0}/uk_bin_collection/uk_bin_collection/councils/DoverDistrictCouncil.py +0 -0
- {uk_bin_collection-0.104.0 → uk_bin_collection-0.105.0}/uk_bin_collection/uk_bin_collection/councils/DudleyCouncil.py +0 -0
- {uk_bin_collection-0.104.0 → uk_bin_collection-0.105.0}/uk_bin_collection/uk_bin_collection/councils/DurhamCouncil.py +0 -0
- {uk_bin_collection-0.104.0 → uk_bin_collection-0.105.0}/uk_bin_collection/uk_bin_collection/councils/EalingCouncil.py +0 -0
- {uk_bin_collection-0.104.0 → uk_bin_collection-0.105.0}/uk_bin_collection/uk_bin_collection/councils/EastCambridgeshireCouncil.py +0 -0
- {uk_bin_collection-0.104.0 → uk_bin_collection-0.105.0}/uk_bin_collection/uk_bin_collection/councils/EastDevonDC.py +0 -0
- {uk_bin_collection-0.104.0 → uk_bin_collection-0.105.0}/uk_bin_collection/uk_bin_collection/councils/EastLindseyDistrictCouncil.py +0 -0
- {uk_bin_collection-0.104.0 → uk_bin_collection-0.105.0}/uk_bin_collection/uk_bin_collection/councils/EastRenfrewshireCouncil.py +0 -0
- {uk_bin_collection-0.104.0 → uk_bin_collection-0.105.0}/uk_bin_collection/uk_bin_collection/councils/EastRidingCouncil.py +0 -0
- {uk_bin_collection-0.104.0 → uk_bin_collection-0.105.0}/uk_bin_collection/uk_bin_collection/councils/EastSuffolkCouncil.py +0 -0
- {uk_bin_collection-0.104.0 → uk_bin_collection-0.105.0}/uk_bin_collection/uk_bin_collection/councils/EastleighBoroughCouncil.py +0 -0
- {uk_bin_collection-0.104.0 → uk_bin_collection-0.105.0}/uk_bin_collection/uk_bin_collection/councils/ElmbridgeBoroughCouncil.py +0 -0
- {uk_bin_collection-0.104.0 → uk_bin_collection-0.105.0}/uk_bin_collection/uk_bin_collection/councils/EnfieldCouncil.py +0 -0
- {uk_bin_collection-0.104.0 → uk_bin_collection-0.105.0}/uk_bin_collection/uk_bin_collection/councils/EnvironmentFirst.py +0 -0
- {uk_bin_collection-0.104.0 → uk_bin_collection-0.105.0}/uk_bin_collection/uk_bin_collection/councils/EppingForestDistrictCouncil.py +0 -0
- {uk_bin_collection-0.104.0 → uk_bin_collection-0.105.0}/uk_bin_collection/uk_bin_collection/councils/ErewashBoroughCouncil.py +0 -0
- {uk_bin_collection-0.104.0 → uk_bin_collection-0.105.0}/uk_bin_collection/uk_bin_collection/councils/FalkirkCouncil.py +0 -0
- {uk_bin_collection-0.104.0 → uk_bin_collection-0.105.0}/uk_bin_collection/uk_bin_collection/councils/FarehamBoroughCouncil.py +0 -0
- {uk_bin_collection-0.104.0 → uk_bin_collection-0.105.0}/uk_bin_collection/uk_bin_collection/councils/FenlandDistrictCouncil.py +0 -0
- {uk_bin_collection-0.104.0 → uk_bin_collection-0.105.0}/uk_bin_collection/uk_bin_collection/councils/ForestOfDeanDistrictCouncil.py +0 -0
- {uk_bin_collection-0.104.0 → uk_bin_collection-0.105.0}/uk_bin_collection/uk_bin_collection/councils/GatesheadCouncil.py +0 -0
- {uk_bin_collection-0.104.0 → uk_bin_collection-0.105.0}/uk_bin_collection/uk_bin_collection/councils/GedlingBoroughCouncil.py +0 -0
- {uk_bin_collection-0.104.0 → uk_bin_collection-0.105.0}/uk_bin_collection/uk_bin_collection/councils/GlasgowCityCouncil.py +0 -0
- {uk_bin_collection-0.104.0 → uk_bin_collection-0.105.0}/uk_bin_collection/uk_bin_collection/councils/GloucesterCityCouncil.py +0 -0
- {uk_bin_collection-0.104.0 → uk_bin_collection-0.105.0}/uk_bin_collection/uk_bin_collection/councils/GuildfordCouncil.py +0 -0
- {uk_bin_collection-0.104.0 → uk_bin_collection-0.105.0}/uk_bin_collection/uk_bin_collection/councils/HaltonBoroughCouncil.py +0 -0
- {uk_bin_collection-0.104.0 → uk_bin_collection-0.105.0}/uk_bin_collection/uk_bin_collection/councils/HaringeyCouncil.py +0 -0
- {uk_bin_collection-0.104.0 → uk_bin_collection-0.105.0}/uk_bin_collection/uk_bin_collection/councils/HarrogateBoroughCouncil.py +0 -0
- {uk_bin_collection-0.104.0 → uk_bin_collection-0.105.0}/uk_bin_collection/uk_bin_collection/councils/HighPeakCouncil.py +0 -0
- {uk_bin_collection-0.104.0 → uk_bin_collection-0.105.0}/uk_bin_collection/uk_bin_collection/councils/HighlandCouncil.py +0 -0
- {uk_bin_collection-0.104.0 → uk_bin_collection-0.105.0}/uk_bin_collection/uk_bin_collection/councils/HounslowCouncil.py +0 -0
- {uk_bin_collection-0.104.0 → uk_bin_collection-0.105.0}/uk_bin_collection/uk_bin_collection/councils/HullCityCouncil.py +0 -0
- {uk_bin_collection-0.104.0 → uk_bin_collection-0.105.0}/uk_bin_collection/uk_bin_collection/councils/HuntingdonDistrictCouncil.py +0 -0
- {uk_bin_collection-0.104.0 → uk_bin_collection-0.105.0}/uk_bin_collection/uk_bin_collection/councils/IslingtonCouncil.py +0 -0
- {uk_bin_collection-0.104.0 → uk_bin_collection-0.105.0}/uk_bin_collection/uk_bin_collection/councils/KingstonUponThamesCouncil.py +0 -0
- {uk_bin_collection-0.104.0 → uk_bin_collection-0.105.0}/uk_bin_collection/uk_bin_collection/councils/KirkleesCouncil.py +0 -0
- {uk_bin_collection-0.104.0 → uk_bin_collection-0.105.0}/uk_bin_collection/uk_bin_collection/councils/KnowsleyMBCouncil.py +0 -0
- {uk_bin_collection-0.104.0 → uk_bin_collection-0.105.0}/uk_bin_collection/uk_bin_collection/councils/LancasterCityCouncil.py +0 -0
- {uk_bin_collection-0.104.0 → uk_bin_collection-0.105.0}/uk_bin_collection/uk_bin_collection/councils/LeedsCityCouncil.py +0 -0
- {uk_bin_collection-0.104.0 → uk_bin_collection-0.105.0}/uk_bin_collection/uk_bin_collection/councils/LichfieldDistrictCouncil.py +0 -0
- {uk_bin_collection-0.104.0 → uk_bin_collection-0.105.0}/uk_bin_collection/uk_bin_collection/councils/LincolnCouncil.py +0 -0
- {uk_bin_collection-0.104.0 → uk_bin_collection-0.105.0}/uk_bin_collection/uk_bin_collection/councils/LisburnCastlereaghCityCouncil.py +0 -0
- {uk_bin_collection-0.104.0 → uk_bin_collection-0.105.0}/uk_bin_collection/uk_bin_collection/councils/LiverpoolCityCouncil.py +0 -0
- {uk_bin_collection-0.104.0 → uk_bin_collection-0.105.0}/uk_bin_collection/uk_bin_collection/councils/LondonBoroughEaling.py +0 -0
- {uk_bin_collection-0.104.0 → uk_bin_collection-0.105.0}/uk_bin_collection/uk_bin_collection/councils/LondonBoroughHarrow.py +0 -0
- {uk_bin_collection-0.104.0 → uk_bin_collection-0.105.0}/uk_bin_collection/uk_bin_collection/councils/LondonBoroughHounslow.py +0 -0
- {uk_bin_collection-0.104.0 → uk_bin_collection-0.105.0}/uk_bin_collection/uk_bin_collection/councils/LondonBoroughLambeth.py +0 -0
- {uk_bin_collection-0.104.0 → uk_bin_collection-0.105.0}/uk_bin_collection/uk_bin_collection/councils/LondonBoroughRedbridge.py +0 -0
- {uk_bin_collection-0.104.0 → uk_bin_collection-0.105.0}/uk_bin_collection/uk_bin_collection/councils/LutonBoroughCouncil.py +0 -0
- {uk_bin_collection-0.104.0 → uk_bin_collection-0.105.0}/uk_bin_collection/uk_bin_collection/councils/MaldonDistrictCouncil.py +0 -0
- {uk_bin_collection-0.104.0 → uk_bin_collection-0.105.0}/uk_bin_collection/uk_bin_collection/councils/MalvernHillsDC.py +0 -0
- {uk_bin_collection-0.104.0 → uk_bin_collection-0.105.0}/uk_bin_collection/uk_bin_collection/councils/ManchesterCityCouncil.py +0 -0
- {uk_bin_collection-0.104.0 → uk_bin_collection-0.105.0}/uk_bin_collection/uk_bin_collection/councils/MansfieldDistrictCouncil.py +0 -0
- {uk_bin_collection-0.104.0 → uk_bin_collection-0.105.0}/uk_bin_collection/uk_bin_collection/councils/MertonCouncil.py +0 -0
- {uk_bin_collection-0.104.0 → uk_bin_collection-0.105.0}/uk_bin_collection/uk_bin_collection/councils/MidAndEastAntrimBoroughCouncil.py +0 -0
- {uk_bin_collection-0.104.0 → uk_bin_collection-0.105.0}/uk_bin_collection/uk_bin_collection/councils/MidSussexDistrictCouncil.py +0 -0
- {uk_bin_collection-0.104.0 → uk_bin_collection-0.105.0}/uk_bin_collection/uk_bin_collection/councils/MidlothianCouncil.py +0 -0
- {uk_bin_collection-0.104.0 → uk_bin_collection-0.105.0}/uk_bin_collection/uk_bin_collection/councils/MiltonKeynesCityCouncil.py +0 -0
- {uk_bin_collection-0.104.0 → uk_bin_collection-0.105.0}/uk_bin_collection/uk_bin_collection/councils/MoleValleyDistrictCouncil.py +0 -0
- {uk_bin_collection-0.104.0 → uk_bin_collection-0.105.0}/uk_bin_collection/uk_bin_collection/councils/NeathPortTalbotCouncil.py +0 -0
- {uk_bin_collection-0.104.0 → uk_bin_collection-0.105.0}/uk_bin_collection/uk_bin_collection/councils/NewForestCouncil.py +0 -0
- {uk_bin_collection-0.104.0 → uk_bin_collection-0.105.0}/uk_bin_collection/uk_bin_collection/councils/NewarkAndSherwoodDC.py +0 -0
- {uk_bin_collection-0.104.0 → uk_bin_collection-0.105.0}/uk_bin_collection/uk_bin_collection/councils/NewcastleCityCouncil.py +0 -0
- {uk_bin_collection-0.104.0 → uk_bin_collection-0.105.0}/uk_bin_collection/uk_bin_collection/councils/NewhamCouncil.py +0 -0
- {uk_bin_collection-0.104.0 → uk_bin_collection-0.105.0}/uk_bin_collection/uk_bin_collection/councils/NewportCityCouncil.py +0 -0
- {uk_bin_collection-0.104.0 → uk_bin_collection-0.105.0}/uk_bin_collection/uk_bin_collection/councils/NorthAyrshireCouncil.py +0 -0
- {uk_bin_collection-0.104.0 → uk_bin_collection-0.105.0}/uk_bin_collection/uk_bin_collection/councils/NorthEastDerbyshireDistrictCouncil.py +0 -0
- {uk_bin_collection-0.104.0 → uk_bin_collection-0.105.0}/uk_bin_collection/uk_bin_collection/councils/NorthEastLincs.py +0 -0
- {uk_bin_collection-0.104.0 → uk_bin_collection-0.105.0}/uk_bin_collection/uk_bin_collection/councils/NorthKestevenDistrictCouncil.py +0 -0
- {uk_bin_collection-0.104.0 → uk_bin_collection-0.105.0}/uk_bin_collection/uk_bin_collection/councils/NorthLanarkshireCouncil.py +0 -0
- {uk_bin_collection-0.104.0 → uk_bin_collection-0.105.0}/uk_bin_collection/uk_bin_collection/councils/NorthLincolnshireCouncil.py +0 -0
- {uk_bin_collection-0.104.0 → uk_bin_collection-0.105.0}/uk_bin_collection/uk_bin_collection/councils/NorthNorfolkDistrictCouncil.py +0 -0
- {uk_bin_collection-0.104.0 → uk_bin_collection-0.105.0}/uk_bin_collection/uk_bin_collection/councils/NorthNorthamptonshireCouncil.py +0 -0
- {uk_bin_collection-0.104.0 → uk_bin_collection-0.105.0}/uk_bin_collection/uk_bin_collection/councils/NorthSomersetCouncil.py +0 -0
- {uk_bin_collection-0.104.0 → uk_bin_collection-0.105.0}/uk_bin_collection/uk_bin_collection/councils/NorthTynesideCouncil.py +0 -0
- {uk_bin_collection-0.104.0 → uk_bin_collection-0.105.0}/uk_bin_collection/uk_bin_collection/councils/NorthWestLeicestershire.py +0 -0
- {uk_bin_collection-0.104.0 → uk_bin_collection-0.105.0}/uk_bin_collection/uk_bin_collection/councils/NorthYorkshire.py +0 -0
- {uk_bin_collection-0.104.0 → uk_bin_collection-0.105.0}/uk_bin_collection/uk_bin_collection/councils/NorthumberlandCouncil.py +0 -0
- {uk_bin_collection-0.104.0 → uk_bin_collection-0.105.0}/uk_bin_collection/uk_bin_collection/councils/NorwichCityCouncil.py +0 -0
- {uk_bin_collection-0.104.0 → uk_bin_collection-0.105.0}/uk_bin_collection/uk_bin_collection/councils/NottinghamCityCouncil.py +0 -0
- {uk_bin_collection-0.104.0 → uk_bin_collection-0.105.0}/uk_bin_collection/uk_bin_collection/councils/OldhamCouncil.py +0 -0
- {uk_bin_collection-0.104.0 → uk_bin_collection-0.105.0}/uk_bin_collection/uk_bin_collection/councils/PerthAndKinrossCouncil.py +0 -0
- {uk_bin_collection-0.104.0 → uk_bin_collection-0.105.0}/uk_bin_collection/uk_bin_collection/councils/PlymouthCouncil.py +0 -0
- {uk_bin_collection-0.104.0 → uk_bin_collection-0.105.0}/uk_bin_collection/uk_bin_collection/councils/PortsmouthCityCouncil.py +0 -0
- {uk_bin_collection-0.104.0 → uk_bin_collection-0.105.0}/uk_bin_collection/uk_bin_collection/councils/PrestonCityCouncil.py +0 -0
- {uk_bin_collection-0.104.0 → uk_bin_collection-0.105.0}/uk_bin_collection/uk_bin_collection/councils/ReadingBoroughCouncil.py +0 -0
- {uk_bin_collection-0.104.0 → uk_bin_collection-0.105.0}/uk_bin_collection/uk_bin_collection/councils/ReigateAndBansteadBoroughCouncil.py +0 -0
- {uk_bin_collection-0.104.0 → uk_bin_collection-0.105.0}/uk_bin_collection/uk_bin_collection/councils/RenfrewshireCouncil.py +0 -0
- {uk_bin_collection-0.104.0 → uk_bin_collection-0.105.0}/uk_bin_collection/uk_bin_collection/councils/RhonddaCynonTaffCouncil.py +0 -0
- {uk_bin_collection-0.104.0 → uk_bin_collection-0.105.0}/uk_bin_collection/uk_bin_collection/councils/RochdaleCouncil.py +0 -0
- {uk_bin_collection-0.104.0 → uk_bin_collection-0.105.0}/uk_bin_collection/uk_bin_collection/councils/RochfordCouncil.py +0 -0
- {uk_bin_collection-0.104.0 → uk_bin_collection-0.105.0}/uk_bin_collection/uk_bin_collection/councils/RotherhamCouncil.py +0 -0
- {uk_bin_collection-0.104.0 → uk_bin_collection-0.105.0}/uk_bin_collection/uk_bin_collection/councils/RugbyBoroughCouncil.py +0 -0
- {uk_bin_collection-0.104.0 → uk_bin_collection-0.105.0}/uk_bin_collection/uk_bin_collection/councils/RushcliffeBoroughCouncil.py +0 -0
- {uk_bin_collection-0.104.0 → uk_bin_collection-0.105.0}/uk_bin_collection/uk_bin_collection/councils/RushmoorCouncil.py +0 -0
- {uk_bin_collection-0.104.0 → uk_bin_collection-0.105.0}/uk_bin_collection/uk_bin_collection/councils/SalfordCityCouncil.py +0 -0
- {uk_bin_collection-0.104.0 → uk_bin_collection-0.105.0}/uk_bin_collection/uk_bin_collection/councils/SevenoaksDistrictCouncil.py +0 -0
- {uk_bin_collection-0.104.0 → uk_bin_collection-0.105.0}/uk_bin_collection/uk_bin_collection/councils/SheffieldCityCouncil.py +0 -0
- {uk_bin_collection-0.104.0 → uk_bin_collection-0.105.0}/uk_bin_collection/uk_bin_collection/councils/ShropshireCouncil.py +0 -0
- {uk_bin_collection-0.104.0 → uk_bin_collection-0.105.0}/uk_bin_collection/uk_bin_collection/councils/SolihullCouncil.py +0 -0
- {uk_bin_collection-0.104.0 → uk_bin_collection-0.105.0}/uk_bin_collection/uk_bin_collection/councils/SomersetCouncil.py +0 -0
- {uk_bin_collection-0.104.0 → uk_bin_collection-0.105.0}/uk_bin_collection/uk_bin_collection/councils/SouthAyrshireCouncil.py +0 -0
- {uk_bin_collection-0.104.0 → uk_bin_collection-0.105.0}/uk_bin_collection/uk_bin_collection/councils/SouthCambridgeshireCouncil.py +0 -0
- {uk_bin_collection-0.104.0 → uk_bin_collection-0.105.0}/uk_bin_collection/uk_bin_collection/councils/SouthDerbyshireDistrictCouncil.py +0 -0
- {uk_bin_collection-0.104.0 → uk_bin_collection-0.105.0}/uk_bin_collection/uk_bin_collection/councils/SouthGloucestershireCouncil.py +0 -0
- {uk_bin_collection-0.104.0 → uk_bin_collection-0.105.0}/uk_bin_collection/uk_bin_collection/councils/SouthKestevenDistrictCouncil.py +0 -0
- {uk_bin_collection-0.104.0 → uk_bin_collection-0.105.0}/uk_bin_collection/uk_bin_collection/councils/SouthLanarkshireCouncil.py +0 -0
- {uk_bin_collection-0.104.0 → uk_bin_collection-0.105.0}/uk_bin_collection/uk_bin_collection/councils/SouthNorfolkCouncil.py +0 -0
- {uk_bin_collection-0.104.0 → uk_bin_collection-0.105.0}/uk_bin_collection/uk_bin_collection/councils/SouthOxfordshireCouncil.py +0 -0
- {uk_bin_collection-0.104.0 → uk_bin_collection-0.105.0}/uk_bin_collection/uk_bin_collection/councils/SouthRibbleCouncil.py +0 -0
- {uk_bin_collection-0.104.0 → uk_bin_collection-0.105.0}/uk_bin_collection/uk_bin_collection/councils/SouthTynesideCouncil.py +0 -0
- {uk_bin_collection-0.104.0 → uk_bin_collection-0.105.0}/uk_bin_collection/uk_bin_collection/councils/SouthwarkCouncil.py +0 -0
- {uk_bin_collection-0.104.0 → uk_bin_collection-0.105.0}/uk_bin_collection/uk_bin_collection/councils/StAlbansCityAndDistrictCouncil.py +0 -0
- {uk_bin_collection-0.104.0 → uk_bin_collection-0.105.0}/uk_bin_collection/uk_bin_collection/councils/StHelensBC.py +0 -0
- {uk_bin_collection-0.104.0 → uk_bin_collection-0.105.0}/uk_bin_collection/uk_bin_collection/councils/StaffordBoroughCouncil.py +0 -0
- {uk_bin_collection-0.104.0 → uk_bin_collection-0.105.0}/uk_bin_collection/uk_bin_collection/councils/StaffordshireMoorlandsDistrictCouncil.py +0 -0
- {uk_bin_collection-0.104.0 → uk_bin_collection-0.105.0}/uk_bin_collection/uk_bin_collection/councils/StockportBoroughCouncil.py +0 -0
- {uk_bin_collection-0.104.0 → uk_bin_collection-0.105.0}/uk_bin_collection/uk_bin_collection/councils/StokeOnTrentCityCouncil.py +0 -0
- {uk_bin_collection-0.104.0 → uk_bin_collection-0.105.0}/uk_bin_collection/uk_bin_collection/councils/StratfordUponAvonCouncil.py +0 -0
- {uk_bin_collection-0.104.0 → uk_bin_collection-0.105.0}/uk_bin_collection/uk_bin_collection/councils/StroudDistrictCouncil.py +0 -0
- {uk_bin_collection-0.104.0 → uk_bin_collection-0.105.0}/uk_bin_collection/uk_bin_collection/councils/SunderlandCityCouncil.py +0 -0
- {uk_bin_collection-0.104.0 → uk_bin_collection-0.105.0}/uk_bin_collection/uk_bin_collection/councils/SwaleBoroughCouncil.py +0 -0
- {uk_bin_collection-0.104.0 → uk_bin_collection-0.105.0}/uk_bin_collection/uk_bin_collection/councils/SwanseaCouncil.py +0 -0
- {uk_bin_collection-0.104.0 → uk_bin_collection-0.105.0}/uk_bin_collection/uk_bin_collection/councils/SwindonBoroughCouncil.py +0 -0
- {uk_bin_collection-0.104.0 → uk_bin_collection-0.105.0}/uk_bin_collection/uk_bin_collection/councils/TamesideMBCouncil.py +0 -0
- {uk_bin_collection-0.104.0 → uk_bin_collection-0.105.0}/uk_bin_collection/uk_bin_collection/councils/TandridgeDistrictCouncil.py +0 -0
- {uk_bin_collection-0.104.0 → uk_bin_collection-0.105.0}/uk_bin_collection/uk_bin_collection/councils/TelfordAndWrekinCouncil.py +0 -0
- {uk_bin_collection-0.104.0 → uk_bin_collection-0.105.0}/uk_bin_collection/uk_bin_collection/councils/TendringDistrictCouncil.py +0 -0
- {uk_bin_collection-0.104.0 → uk_bin_collection-0.105.0}/uk_bin_collection/uk_bin_collection/councils/TestValleyBoroughCouncil.py +0 -0
- {uk_bin_collection-0.104.0 → uk_bin_collection-0.105.0}/uk_bin_collection/uk_bin_collection/councils/ThreeRiversDistrictCouncil.py +0 -0
- {uk_bin_collection-0.104.0 → uk_bin_collection-0.105.0}/uk_bin_collection/uk_bin_collection/councils/TonbridgeAndMallingBC.py +0 -0
- {uk_bin_collection-0.104.0 → uk_bin_collection-0.105.0}/uk_bin_collection/uk_bin_collection/councils/TorbayCouncil.py +0 -0
- {uk_bin_collection-0.104.0 → uk_bin_collection-0.105.0}/uk_bin_collection/uk_bin_collection/councils/TorridgeDistrictCouncil.py +0 -0
- {uk_bin_collection-0.104.0 → uk_bin_collection-0.105.0}/uk_bin_collection/uk_bin_collection/councils/TunbridgeWellsCouncil.py +0 -0
- {uk_bin_collection-0.104.0 → uk_bin_collection-0.105.0}/uk_bin_collection/uk_bin_collection/councils/UttlesfordDistrictCouncil.py +0 -0
- {uk_bin_collection-0.104.0 → uk_bin_collection-0.105.0}/uk_bin_collection/uk_bin_collection/councils/ValeofGlamorganCouncil.py +0 -0
- {uk_bin_collection-0.104.0 → uk_bin_collection-0.105.0}/uk_bin_collection/uk_bin_collection/councils/ValeofWhiteHorseCouncil.py +0 -0
- {uk_bin_collection-0.104.0 → uk_bin_collection-0.105.0}/uk_bin_collection/uk_bin_collection/councils/WakefieldCityCouncil.py +0 -0
- {uk_bin_collection-0.104.0 → uk_bin_collection-0.105.0}/uk_bin_collection/uk_bin_collection/councils/WalsallCouncil.py +0 -0
- {uk_bin_collection-0.104.0 → uk_bin_collection-0.105.0}/uk_bin_collection/uk_bin_collection/councils/WalthamForest.py +0 -0
- {uk_bin_collection-0.104.0 → uk_bin_collection-0.105.0}/uk_bin_collection/uk_bin_collection/councils/WarwickDistrictCouncil.py +0 -0
- {uk_bin_collection-0.104.0 → uk_bin_collection-0.105.0}/uk_bin_collection/uk_bin_collection/councils/WaverleyBoroughCouncil.py +0 -0
- {uk_bin_collection-0.104.0 → uk_bin_collection-0.105.0}/uk_bin_collection/uk_bin_collection/councils/WealdenDistrictCouncil.py +0 -0
- {uk_bin_collection-0.104.0 → uk_bin_collection-0.105.0}/uk_bin_collection/uk_bin_collection/councils/WelhatCouncil.py +0 -0
- {uk_bin_collection-0.104.0 → uk_bin_collection-0.105.0}/uk_bin_collection/uk_bin_collection/councils/WestBerkshireCouncil.py +0 -0
- {uk_bin_collection-0.104.0 → uk_bin_collection-0.105.0}/uk_bin_collection/uk_bin_collection/councils/WestLindseyDistrictCouncil.py +0 -0
- {uk_bin_collection-0.104.0 → uk_bin_collection-0.105.0}/uk_bin_collection/uk_bin_collection/councils/WestLothianCouncil.py +0 -0
- {uk_bin_collection-0.104.0 → uk_bin_collection-0.105.0}/uk_bin_collection/uk_bin_collection/councils/WestMorlandAndFurness.py +0 -0
- {uk_bin_collection-0.104.0 → uk_bin_collection-0.105.0}/uk_bin_collection/uk_bin_collection/councils/WestNorthamptonshireCouncil.py +0 -0
- {uk_bin_collection-0.104.0 → uk_bin_collection-0.105.0}/uk_bin_collection/uk_bin_collection/councils/WestOxfordshireDistrictCouncil.py +0 -0
- {uk_bin_collection-0.104.0 → uk_bin_collection-0.105.0}/uk_bin_collection/uk_bin_collection/councils/WestSuffolkCouncil.py +0 -0
- {uk_bin_collection-0.104.0 → uk_bin_collection-0.105.0}/uk_bin_collection/uk_bin_collection/councils/WiganBoroughCouncil.py +0 -0
- {uk_bin_collection-0.104.0 → uk_bin_collection-0.105.0}/uk_bin_collection/uk_bin_collection/councils/WiltshireCouncil.py +0 -0
- {uk_bin_collection-0.104.0 → uk_bin_collection-0.105.0}/uk_bin_collection/uk_bin_collection/councils/WinchesterCityCouncil.py +0 -0
- {uk_bin_collection-0.104.0 → uk_bin_collection-0.105.0}/uk_bin_collection/uk_bin_collection/councils/WindsorAndMaidenheadCouncil.py +0 -0
- {uk_bin_collection-0.104.0 → uk_bin_collection-0.105.0}/uk_bin_collection/uk_bin_collection/councils/WirralCouncil.py +0 -0
- {uk_bin_collection-0.104.0 → uk_bin_collection-0.105.0}/uk_bin_collection/uk_bin_collection/councils/WokingBoroughCouncil.py +0 -0
- {uk_bin_collection-0.104.0 → uk_bin_collection-0.105.0}/uk_bin_collection/uk_bin_collection/councils/WokinghamBoroughCouncil.py +0 -0
- {uk_bin_collection-0.104.0 → uk_bin_collection-0.105.0}/uk_bin_collection/uk_bin_collection/councils/WychavonDistrictCouncil.py +0 -0
- {uk_bin_collection-0.104.0 → uk_bin_collection-0.105.0}/uk_bin_collection/uk_bin_collection/councils/WyreCouncil.py +0 -0
- {uk_bin_collection-0.104.0 → uk_bin_collection-0.105.0}/uk_bin_collection/uk_bin_collection/councils/YorkCouncil.py +0 -0
- {uk_bin_collection-0.104.0 → uk_bin_collection-0.105.0}/uk_bin_collection/uk_bin_collection/councils/council_class_template/councilclasstemplate.py +0 -0
- {uk_bin_collection-0.104.0 → uk_bin_collection-0.105.0}/uk_bin_collection/uk_bin_collection/create_new_council.py +0 -0
- {uk_bin_collection-0.104.0 → uk_bin_collection-0.105.0}/uk_bin_collection/uk_bin_collection/get_bin_data.py +0 -0
@@ -299,6 +299,12 @@
|
|
299
299
|
"wiki_name": "Cornwall Council",
|
300
300
|
"wiki_note": "Use https://uprn.uk/ to find your UPRN."
|
301
301
|
},
|
302
|
+
"CoventryCityCouncil": {
|
303
|
+
"url": "https://www.coventry.gov.uk/directory-record/56384/abberton-way-",
|
304
|
+
"wiki_command_url_override": "https://www.coventry.gov.uk/directory_record/XXXXXX/XXXXXX",
|
305
|
+
"wiki_name": "Coventry City Council",
|
306
|
+
"wiki_note": "Follow the instructions [here](https://www.coventry.gov.uk/bin-collection-calendar) until you get the page that shows the weekly collections for your address then copy the URL and replace the URL in the command."
|
307
|
+
},
|
302
308
|
"CrawleyBoroughCouncil": {
|
303
309
|
"house_number": "9701076",
|
304
310
|
"skip_get_url": true,
|
@@ -537,6 +543,13 @@
|
|
537
543
|
"wiki_name": "Halton Borough Council",
|
538
544
|
"wiki_note": "Pass the House number and post code"
|
539
545
|
},
|
546
|
+
"HarboroughDistrictCouncil": {
|
547
|
+
"url": "https://www.harborough.gov.uk",
|
548
|
+
"wiki_command_url_override": "https://www.harborough.gov.uk",
|
549
|
+
"uprn": "100030489072",
|
550
|
+
"wiki_name": "Harborough District Council",
|
551
|
+
"wiki_note": "You will need to use [FindMyAddress](https://www.findmyaddress.co.uk/search) to find the UPRN."
|
552
|
+
},
|
540
553
|
"HaringeyCouncil": {
|
541
554
|
"skip_get_url": true,
|
542
555
|
"uprn": "100021203052",
|
@@ -741,7 +754,7 @@
|
|
741
754
|
"wiki_note": "Pass the house name/number plus the name of the street with the postcode parameter, wrapped in double quotes. Check the address in the web site first. This version will only pick the first SHOW button returned by the search or if it is fully unique. The search is not very predictable (e.g. house number 4 returns 14,24,4,44 etc.)."
|
742
755
|
},
|
743
756
|
"MidlothianCouncil": {
|
744
|
-
"url": "https://www.midlothian.gov.uk/directory_record/
|
757
|
+
"url": "https://www.midlothian.gov.uk/directory_record/92594377/glenesk_bonnyrigg_eh19_3je",
|
745
758
|
"wiki_command_url_override": "https://www.midlothian.gov.uk/directory_record/XXXXXX/XXXXXX",
|
746
759
|
"wiki_name": "Midlothian Council",
|
747
760
|
"wiki_note": "Follow the instructions [here](https://www.midlothian.gov.uk/info/1054/bins_and_recycling/343/bin_collection_days) until you get the page that shows the weekly collections for your address then copy the URL and replace the URL in the command."
|
@@ -1229,6 +1242,14 @@
|
|
1229
1242
|
"url": "https://tdcws01.tandridge.gov.uk/TDCWebAppsPublic/tfaBranded/408?utm_source=pressrelease&utm_medium=smposts&utm_campaign=check_my_bin_day",
|
1230
1243
|
"wiki_name": "Tandridge District Council"
|
1231
1244
|
},
|
1245
|
+
"TeignbridgeCouncil": {
|
1246
|
+
"url": "https://www.google.co.uk",
|
1247
|
+
"wiki_command_url_override": "https://www.google.co.uk",
|
1248
|
+
"uprn": "100040338776",
|
1249
|
+
"web_driver": "http://selenium:4444",
|
1250
|
+
"wiki_name": "Teignbridge Council",
|
1251
|
+
"wiki_note": "Provide Google as the URL as the real URL breaks the integration. You will need to use [FindMyAddress](https://www.findmyaddress.co.uk/search) to find the UPRN."
|
1252
|
+
},
|
1232
1253
|
"TelfordAndWrekinCouncil": {
|
1233
1254
|
"skip_get_url": true,
|
1234
1255
|
"uprn": "000452015013",
|
@@ -1338,6 +1359,13 @@
|
|
1338
1359
|
"wiki_name": "Warwick District Council",
|
1339
1360
|
"wiki_note": "Replace XXXXXXXX with UPRN."
|
1340
1361
|
},
|
1362
|
+
"WatfordBoroughCouncil": {
|
1363
|
+
"url": "https://www.watford.gov.uk",
|
1364
|
+
"wiki_command_url_override": "https://www.watford.gov.uk",
|
1365
|
+
"uprn": "100080942183",
|
1366
|
+
"wiki_name": "Watford Borough Council",
|
1367
|
+
"wiki_note": "You will need to use [FindMyAddress](https://www.findmyaddress.co.uk/search) to find the UPRN."
|
1368
|
+
},
|
1341
1369
|
"WaverleyBoroughCouncil": {
|
1342
1370
|
"house_number": "23",
|
1343
1371
|
"postcode": "GU9 9QG",
|
@@ -0,0 +1,51 @@
|
|
1
|
+
import requests
|
2
|
+
from bs4 import BeautifulSoup
|
3
|
+
from dateutil.relativedelta import relativedelta
|
4
|
+
|
5
|
+
from uk_bin_collection.uk_bin_collection.common import *
|
6
|
+
from uk_bin_collection.uk_bin_collection.get_bin_data import AbstractGetBinDataClass
|
7
|
+
|
8
|
+
|
9
|
+
# import the wonderful Beautiful Soup and the URL grabber
|
10
|
+
class CouncilClass(AbstractGetBinDataClass):
|
11
|
+
"""
|
12
|
+
Concrete classes have to implement all abstract operations of the
|
13
|
+
base class. They can also override some operations with a default
|
14
|
+
implementation.
|
15
|
+
"""
|
16
|
+
|
17
|
+
def parse_data(self, page: str, **kwargs) -> dict:
|
18
|
+
|
19
|
+
bindata = {"bins": []}
|
20
|
+
curr_date = datetime.today()
|
21
|
+
|
22
|
+
soup = BeautifulSoup(page.content, features="html.parser")
|
23
|
+
button = soup.find("a", text="Find out which bin will be collected when.")
|
24
|
+
|
25
|
+
if button["href"]:
|
26
|
+
URI = button["href"]
|
27
|
+
# Make the GET request
|
28
|
+
response = requests.get(URI)
|
29
|
+
soup = BeautifulSoup(response.content, features="html.parser")
|
30
|
+
divs = soup.find_all("div", {"class": "editor"})
|
31
|
+
for div in divs:
|
32
|
+
lis = div.find_all("li")
|
33
|
+
for li in lis:
|
34
|
+
collection = li.text.split(": ")
|
35
|
+
collection_date = datetime.strptime(
|
36
|
+
collection[0],
|
37
|
+
"%A %d %B",
|
38
|
+
).replace(year=curr_date.year)
|
39
|
+
if curr_date.month == 12 and collection_date.month == 1:
|
40
|
+
collection_date = collection_date + relativedelta(years=1)
|
41
|
+
bin_types = collection[1].split(" and ")
|
42
|
+
for bin_type in bin_types:
|
43
|
+
dict_data = {
|
44
|
+
"type": bin_type,
|
45
|
+
"collectionDate": collection_date.strftime("%d/%m/%Y"),
|
46
|
+
}
|
47
|
+
bindata["bins"].append(dict_data)
|
48
|
+
else:
|
49
|
+
print("Failed to find bin schedule")
|
50
|
+
|
51
|
+
return bindata
|
uk_bin_collection-0.105.0/uk_bin_collection/uk_bin_collection/councils/HarboroughDistrictCouncil.py
ADDED
@@ -0,0 +1,58 @@
|
|
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 = "https://harborough.fccenvironment.co.uk/detail-address"
|
23
|
+
|
24
|
+
headers = {
|
25
|
+
"Content-Type": "application/json",
|
26
|
+
"User-Agent": "Mozilla/5.0",
|
27
|
+
"Referer": "https://harborough.fccenvironment.co.uk/",
|
28
|
+
}
|
29
|
+
params = {"Uprn": user_uprn}
|
30
|
+
response = requests.post(URI, headers=headers, json=params)
|
31
|
+
|
32
|
+
soup = BeautifulSoup(response.content, features="html.parser")
|
33
|
+
bin_collection = soup.find(
|
34
|
+
"div", {"class": "blocks block-your-next-scheduled-bin-collection-days"}
|
35
|
+
)
|
36
|
+
lis = bin_collection.find_all("li")
|
37
|
+
for li in lis:
|
38
|
+
try:
|
39
|
+
split = re.match(r"(.+)\s(\d{1,2} \w+ \d{4})$", li.text)
|
40
|
+
bin_type = split.group(1).strip()
|
41
|
+
date = split.group(2)
|
42
|
+
|
43
|
+
dict_data = {
|
44
|
+
"type": bin_type,
|
45
|
+
"collectionDate": datetime.strptime(
|
46
|
+
date,
|
47
|
+
"%d %B %Y",
|
48
|
+
).strftime("%d/%m/%Y"),
|
49
|
+
}
|
50
|
+
bindata["bins"].append(dict_data)
|
51
|
+
except:
|
52
|
+
continue
|
53
|
+
|
54
|
+
bindata["bins"].sort(
|
55
|
+
key=lambda x: datetime.strptime(x.get("collectionDate"), "%d/%m/%Y")
|
56
|
+
)
|
57
|
+
|
58
|
+
return bindata
|
@@ -0,0 +1,59 @@
|
|
1
|
+
from bs4 import BeautifulSoup
|
2
|
+
from selenium.webdriver.common.by import By
|
3
|
+
from selenium.webdriver.support import expected_conditions as EC
|
4
|
+
from selenium.webdriver.support.wait import WebDriverWait
|
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
|
+
web_driver = kwargs.get("web_driver")
|
22
|
+
headless = kwargs.get("headless")
|
23
|
+
check_uprn(user_uprn)
|
24
|
+
bindata = {"bins": []}
|
25
|
+
|
26
|
+
URI = f"https://www.teignbridge.gov.uk/repositories/hidden-pages/bin-finder?uprn={user_uprn}"
|
27
|
+
|
28
|
+
driver = create_webdriver(web_driver, headless, None, __name__)
|
29
|
+
driver.get(URI)
|
30
|
+
|
31
|
+
soup = BeautifulSoup(driver.page_source, features="html.parser")
|
32
|
+
|
33
|
+
collection_dates = soup.find_all(
|
34
|
+
"h3"
|
35
|
+
) # Assuming bin types are inside <h3> tags
|
36
|
+
bin_type_headers = soup.find_all(
|
37
|
+
"div", {"class": "binInfoContainer"}
|
38
|
+
) # Assuming collection dates are inside <p> tags
|
39
|
+
|
40
|
+
# Iterate over the results and extract bin type and collection dates
|
41
|
+
for i, date in enumerate(collection_dates):
|
42
|
+
collection_date = date.get_text(strip=True)
|
43
|
+
|
44
|
+
bin_types = bin_type_headers[i].find_all("div")
|
45
|
+
for bin_type in bin_types:
|
46
|
+
dict_data = {
|
47
|
+
"type": bin_type.text.strip(),
|
48
|
+
"collectionDate": datetime.strptime(
|
49
|
+
collection_date,
|
50
|
+
"%d %B %Y%A",
|
51
|
+
).strftime("%d/%m/%Y"),
|
52
|
+
}
|
53
|
+
bindata["bins"].append(dict_data)
|
54
|
+
|
55
|
+
bindata["bins"].sort(
|
56
|
+
key=lambda x: datetime.strptime(x.get("collectionDate"), "%d/%m/%Y")
|
57
|
+
)
|
58
|
+
|
59
|
+
return bindata
|
uk_bin_collection-0.105.0/uk_bin_collection/uk_bin_collection/councils/WatfordBoroughCouncil.py
ADDED
@@ -0,0 +1,72 @@
|
|
1
|
+
import time
|
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
|
+
SESSION_URL = "https://watfordbc-self.achieveservice.com/authapi/isauthenticated?uri=https%253A%252F%252Fwatfordbc-self.achieveservice.com%252Fen%252Fservice%252FBin_collections%253Faccept%253Dyes%2526consentMessageIds%255B%255D%253D4&hostname=watfordbc-self.achieveservice.com&withCredentials=true"
|
25
|
+
|
26
|
+
API_URL = "https://watfordbc-self.achieveservice.com/apibroker/runLookup"
|
27
|
+
|
28
|
+
data = {
|
29
|
+
"formValues": {
|
30
|
+
"Address": {
|
31
|
+
"echoUprn": {"value": user_uprn},
|
32
|
+
},
|
33
|
+
},
|
34
|
+
}
|
35
|
+
|
36
|
+
headers = {
|
37
|
+
"Content-Type": "application/json",
|
38
|
+
"Accept": "application/json",
|
39
|
+
"User-Agent": "Mozilla/5.0",
|
40
|
+
"X-Requested-With": "XMLHttpRequest",
|
41
|
+
"Referer": "https://watfordbc-self.achieveservice.com/fillform/?iframe_id=fillform-frame-1&db_id=",
|
42
|
+
}
|
43
|
+
s = requests.session()
|
44
|
+
r = s.get(SESSION_URL)
|
45
|
+
r.raise_for_status()
|
46
|
+
session_data = r.json()
|
47
|
+
sid = session_data["auth-session"]
|
48
|
+
params = {
|
49
|
+
"id": "5e79edf15b2ec",
|
50
|
+
"repeat_against": "",
|
51
|
+
"noRetry": "true",
|
52
|
+
"getOnlyTokens": "undefined",
|
53
|
+
"log_id": "",
|
54
|
+
"app_name": "AF-Renderer::Self",
|
55
|
+
# unix_timestamp
|
56
|
+
"_": str(int(time.time() * 1000)),
|
57
|
+
"sid": sid,
|
58
|
+
}
|
59
|
+
r = s.post(API_URL, json=data, headers=headers, params=params)
|
60
|
+
r.raise_for_status()
|
61
|
+
data = r.json()
|
62
|
+
dispHTML = data["integration"]["transformed"]["rows_data"]["0"]["dispHTML"]
|
63
|
+
soup = BeautifulSoup(dispHTML, features="html.parser")
|
64
|
+
|
65
|
+
collections = soup.find_all("li")
|
66
|
+
for collection in collections:
|
67
|
+
bin_type = collection.find("h3").text
|
68
|
+
collection_date = collection.find("strong").text.strip()
|
69
|
+
dict_data = {"type": bin_type, "collectionDate": collection_date}
|
70
|
+
bindata["bins"].append(dict_data)
|
71
|
+
|
72
|
+
return bindata
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{uk_bin_collection-0.104.0 → uk_bin_collection-0.105.0}/uk_bin_collection/tests/output.schema
RENAMED
File without changes
|
File without changes
|
File without changes
|
{uk_bin_collection-0.104.0 → uk_bin_collection-0.105.0}/uk_bin_collection/tests/test_collect_data.py
RENAMED
File without changes
|
File without changes
|
{uk_bin_collection-0.104.0 → uk_bin_collection-0.105.0}/uk_bin_collection/tests/test_conftest.py
RENAMED
File without changes
|
{uk_bin_collection-0.104.0 → uk_bin_collection-0.105.0}/uk_bin_collection/tests/test_get_data.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
|
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
|