uk_bin_collection 0.117.0__tar.gz → 0.118.0__tar.gz
Sign up to get free protection for your applications and to get access to all the features.
- {uk_bin_collection-0.117.0 → uk_bin_collection-0.118.0}/PKG-INFO +1 -1
- {uk_bin_collection-0.117.0 → uk_bin_collection-0.118.0}/pyproject.toml +1 -1
- {uk_bin_collection-0.117.0 → uk_bin_collection-0.118.0}/uk_bin_collection/tests/input.json +41 -2
- {uk_bin_collection-0.117.0 → uk_bin_collection-0.118.0}/uk_bin_collection/uk_bin_collection/councils/BaberghDistrictCouncil.py +62 -0
- uk_bin_collection-0.118.0/uk_bin_collection/uk_bin_collection/councils/CopelandBoroughCouncil.py +93 -0
- uk_bin_collection-0.118.0/uk_bin_collection/uk_bin_collection/councils/CrawleyBoroughCouncil.py +112 -0
- {uk_bin_collection-0.117.0 → uk_bin_collection-0.118.0}/uk_bin_collection/uk_bin_collection/councils/MidSuffolkDistrictCouncil.py +62 -0
- uk_bin_collection-0.118.0/uk_bin_collection/uk_bin_collection/councils/RotherDistrictCouncil.py +84 -0
- uk_bin_collection-0.118.0/uk_bin_collection/uk_bin_collection/councils/SouthHamsDistrictCouncil.py +90 -0
- uk_bin_collection-0.118.0/uk_bin_collection/uk_bin_collection/councils/StevenageBoroughCouncil.py +101 -0
- uk_bin_collection-0.118.0/uk_bin_collection/uk_bin_collection/councils/ThanetDistrictCouncil.py +51 -0
- uk_bin_collection-0.118.0/uk_bin_collection/uk_bin_collection/councils/WolverhamptonCityCouncil.py +57 -0
- uk_bin_collection-0.117.0/uk_bin_collection/uk_bin_collection/councils/CrawleyBoroughCouncil.py +0 -61
- {uk_bin_collection-0.117.0 → uk_bin_collection-0.118.0}/LICENSE +0 -0
- {uk_bin_collection-0.117.0 → uk_bin_collection-0.118.0}/README.md +0 -0
- {uk_bin_collection-0.117.0 → uk_bin_collection-0.118.0}/uk_bin_collection/README.rst +0 -0
- {uk_bin_collection-0.117.0 → uk_bin_collection-0.118.0}/uk_bin_collection/tests/council_feature_input_parity.py +0 -0
- {uk_bin_collection-0.117.0 → uk_bin_collection-0.118.0}/uk_bin_collection/tests/features/environment.py +0 -0
- {uk_bin_collection-0.117.0 → uk_bin_collection-0.118.0}/uk_bin_collection/tests/features/validate_council_outputs.feature +0 -0
- {uk_bin_collection-0.117.0 → uk_bin_collection-0.118.0}/uk_bin_collection/tests/output.schema +0 -0
- {uk_bin_collection-0.117.0 → uk_bin_collection-0.118.0}/uk_bin_collection/tests/step_defs/step_helpers/file_handler.py +0 -0
- {uk_bin_collection-0.117.0 → uk_bin_collection-0.118.0}/uk_bin_collection/tests/step_defs/test_validate_council.py +0 -0
- {uk_bin_collection-0.117.0 → uk_bin_collection-0.118.0}/uk_bin_collection/tests/test_collect_data.py +0 -0
- {uk_bin_collection-0.117.0 → uk_bin_collection-0.118.0}/uk_bin_collection/tests/test_common_functions.py +0 -0
- {uk_bin_collection-0.117.0 → uk_bin_collection-0.118.0}/uk_bin_collection/tests/test_conftest.py +0 -0
- {uk_bin_collection-0.117.0 → uk_bin_collection-0.118.0}/uk_bin_collection/tests/test_get_data.py +0 -0
- {uk_bin_collection-0.117.0 → uk_bin_collection-0.118.0}/uk_bin_collection/uk_bin_collection/collect_data.py +0 -0
- {uk_bin_collection-0.117.0 → uk_bin_collection-0.118.0}/uk_bin_collection/uk_bin_collection/common.py +0 -0
- {uk_bin_collection-0.117.0 → uk_bin_collection-0.118.0}/uk_bin_collection/uk_bin_collection/councils/AberdeenshireCouncil.py +0 -0
- {uk_bin_collection-0.117.0 → uk_bin_collection-0.118.0}/uk_bin_collection/uk_bin_collection/councils/AdurAndWorthingCouncils.py +0 -0
- {uk_bin_collection-0.117.0 → uk_bin_collection-0.118.0}/uk_bin_collection/uk_bin_collection/councils/AntrimAndNewtonabbeyCouncil.py +0 -0
- {uk_bin_collection-0.117.0 → uk_bin_collection-0.118.0}/uk_bin_collection/uk_bin_collection/councils/ArdsAndNorthDownCouncil.py +0 -0
- {uk_bin_collection-0.117.0 → uk_bin_collection-0.118.0}/uk_bin_collection/uk_bin_collection/councils/ArgyllandButeCouncil.py +0 -0
- {uk_bin_collection-0.117.0 → uk_bin_collection-0.118.0}/uk_bin_collection/uk_bin_collection/councils/ArmaghBanbridgeCraigavonCouncil.py +0 -0
- {uk_bin_collection-0.117.0 → uk_bin_collection-0.118.0}/uk_bin_collection/uk_bin_collection/councils/ArunCouncil.py +0 -0
- {uk_bin_collection-0.117.0 → uk_bin_collection-0.118.0}/uk_bin_collection/uk_bin_collection/councils/AshfieldDistrictCouncil.py +0 -0
- {uk_bin_collection-0.117.0 → uk_bin_collection-0.118.0}/uk_bin_collection/uk_bin_collection/councils/AshfordBoroughCouncil.py +0 -0
- {uk_bin_collection-0.117.0 → uk_bin_collection-0.118.0}/uk_bin_collection/uk_bin_collection/councils/AylesburyValeCouncil.py +0 -0
- {uk_bin_collection-0.117.0 → uk_bin_collection-0.118.0}/uk_bin_collection/uk_bin_collection/councils/BCPCouncil.py +0 -0
- {uk_bin_collection-0.117.0 → uk_bin_collection-0.118.0}/uk_bin_collection/uk_bin_collection/councils/BarnetCouncil.py +0 -0
- {uk_bin_collection-0.117.0 → uk_bin_collection-0.118.0}/uk_bin_collection/uk_bin_collection/councils/BarnsleyMBCouncil.py +0 -0
- {uk_bin_collection-0.117.0 → uk_bin_collection-0.118.0}/uk_bin_collection/uk_bin_collection/councils/BasildonCouncil.py +0 -0
- {uk_bin_collection-0.117.0 → uk_bin_collection-0.118.0}/uk_bin_collection/uk_bin_collection/councils/BasingstokeCouncil.py +0 -0
- {uk_bin_collection-0.117.0 → uk_bin_collection-0.118.0}/uk_bin_collection/uk_bin_collection/councils/BathAndNorthEastSomersetCouncil.py +0 -0
- {uk_bin_collection-0.117.0 → uk_bin_collection-0.118.0}/uk_bin_collection/uk_bin_collection/councils/BedfordBoroughCouncil.py +0 -0
- {uk_bin_collection-0.117.0 → uk_bin_collection-0.118.0}/uk_bin_collection/uk_bin_collection/councils/BedfordshireCouncil.py +0 -0
- {uk_bin_collection-0.117.0 → uk_bin_collection-0.118.0}/uk_bin_collection/uk_bin_collection/councils/BelfastCityCouncil.py +0 -0
- {uk_bin_collection-0.117.0 → uk_bin_collection-0.118.0}/uk_bin_collection/uk_bin_collection/councils/BexleyCouncil.py +0 -0
- {uk_bin_collection-0.117.0 → uk_bin_collection-0.118.0}/uk_bin_collection/uk_bin_collection/councils/BirminghamCityCouncil.py +0 -0
- {uk_bin_collection-0.117.0 → uk_bin_collection-0.118.0}/uk_bin_collection/uk_bin_collection/councils/BlabyDistrictCouncil.py +0 -0
- {uk_bin_collection-0.117.0 → uk_bin_collection-0.118.0}/uk_bin_collection/uk_bin_collection/councils/BlackburnCouncil.py +0 -0
- {uk_bin_collection-0.117.0 → uk_bin_collection-0.118.0}/uk_bin_collection/uk_bin_collection/councils/BoltonCouncil.py +0 -0
- {uk_bin_collection-0.117.0 → uk_bin_collection-0.118.0}/uk_bin_collection/uk_bin_collection/councils/BracknellForestCouncil.py +0 -0
- {uk_bin_collection-0.117.0 → uk_bin_collection-0.118.0}/uk_bin_collection/uk_bin_collection/councils/BradfordMDC.py +0 -0
- {uk_bin_collection-0.117.0 → uk_bin_collection-0.118.0}/uk_bin_collection/uk_bin_collection/councils/BrecklandCouncil.py +0 -0
- {uk_bin_collection-0.117.0 → uk_bin_collection-0.118.0}/uk_bin_collection/uk_bin_collection/councils/BrightonandHoveCityCouncil.py +0 -0
- {uk_bin_collection-0.117.0 → uk_bin_collection-0.118.0}/uk_bin_collection/uk_bin_collection/councils/BristolCityCouncil.py +0 -0
- {uk_bin_collection-0.117.0 → uk_bin_collection-0.118.0}/uk_bin_collection/uk_bin_collection/councils/BromleyBoroughCouncil.py +0 -0
- {uk_bin_collection-0.117.0 → uk_bin_collection-0.118.0}/uk_bin_collection/uk_bin_collection/councils/BromsgroveDistrictCouncil.py +0 -0
- {uk_bin_collection-0.117.0 → uk_bin_collection-0.118.0}/uk_bin_collection/uk_bin_collection/councils/BroxbourneCouncil.py +0 -0
- {uk_bin_collection-0.117.0 → uk_bin_collection-0.118.0}/uk_bin_collection/uk_bin_collection/councils/BroxtoweBoroughCouncil.py +0 -0
- {uk_bin_collection-0.117.0 → uk_bin_collection-0.118.0}/uk_bin_collection/uk_bin_collection/councils/BuckinghamshireCouncil.py +0 -0
- {uk_bin_collection-0.117.0 → uk_bin_collection-0.118.0}/uk_bin_collection/uk_bin_collection/councils/BuryCouncil.py +0 -0
- {uk_bin_collection-0.117.0 → uk_bin_collection-0.118.0}/uk_bin_collection/uk_bin_collection/councils/CalderdaleCouncil.py +0 -0
- {uk_bin_collection-0.117.0 → uk_bin_collection-0.118.0}/uk_bin_collection/uk_bin_collection/councils/CannockChaseDistrictCouncil.py +0 -0
- {uk_bin_collection-0.117.0 → uk_bin_collection-0.118.0}/uk_bin_collection/uk_bin_collection/councils/CanterburyCityCouncil.py +0 -0
- {uk_bin_collection-0.117.0 → uk_bin_collection-0.118.0}/uk_bin_collection/uk_bin_collection/councils/CardiffCouncil.py +0 -0
- {uk_bin_collection-0.117.0 → uk_bin_collection-0.118.0}/uk_bin_collection/uk_bin_collection/councils/CarmarthenshireCountyCouncil.py +0 -0
- {uk_bin_collection-0.117.0 → uk_bin_collection-0.118.0}/uk_bin_collection/uk_bin_collection/councils/CastlepointDistrictCouncil.py +0 -0
- {uk_bin_collection-0.117.0 → uk_bin_collection-0.118.0}/uk_bin_collection/uk_bin_collection/councils/CharnwoodBoroughCouncil.py +0 -0
- {uk_bin_collection-0.117.0 → uk_bin_collection-0.118.0}/uk_bin_collection/uk_bin_collection/councils/ChelmsfordCityCouncil.py +0 -0
- {uk_bin_collection-0.117.0 → uk_bin_collection-0.118.0}/uk_bin_collection/uk_bin_collection/councils/CheshireEastCouncil.py +0 -0
- {uk_bin_collection-0.117.0 → uk_bin_collection-0.118.0}/uk_bin_collection/uk_bin_collection/councils/CheshireWestAndChesterCouncil.py +0 -0
- {uk_bin_collection-0.117.0 → uk_bin_collection-0.118.0}/uk_bin_collection/uk_bin_collection/councils/ChesterfieldBoroughCouncil.py +0 -0
- {uk_bin_collection-0.117.0 → uk_bin_collection-0.118.0}/uk_bin_collection/uk_bin_collection/councils/ChichesterDistrictCouncil.py +0 -0
- {uk_bin_collection-0.117.0 → uk_bin_collection-0.118.0}/uk_bin_collection/uk_bin_collection/councils/ChorleyCouncil.py +0 -0
- {uk_bin_collection-0.117.0 → uk_bin_collection-0.118.0}/uk_bin_collection/uk_bin_collection/councils/ColchesterCityCouncil.py +0 -0
- {uk_bin_collection-0.117.0 → uk_bin_collection-0.118.0}/uk_bin_collection/uk_bin_collection/councils/ConwyCountyBorough.py +0 -0
- {uk_bin_collection-0.117.0 → uk_bin_collection-0.118.0}/uk_bin_collection/uk_bin_collection/councils/CornwallCouncil.py +0 -0
- {uk_bin_collection-0.117.0 → uk_bin_collection-0.118.0}/uk_bin_collection/uk_bin_collection/councils/CotswoldDistrictCouncil.py +0 -0
- {uk_bin_collection-0.117.0 → uk_bin_collection-0.118.0}/uk_bin_collection/uk_bin_collection/councils/CoventryCityCouncil.py +0 -0
- {uk_bin_collection-0.117.0 → uk_bin_collection-0.118.0}/uk_bin_collection/uk_bin_collection/councils/CroydonCouncil.py +0 -0
- {uk_bin_collection-0.117.0 → uk_bin_collection-0.118.0}/uk_bin_collection/uk_bin_collection/councils/DacorumBoroughCouncil.py +0 -0
- {uk_bin_collection-0.117.0 → uk_bin_collection-0.118.0}/uk_bin_collection/uk_bin_collection/councils/DartfordBoroughCouncil.py +0 -0
- {uk_bin_collection-0.117.0 → uk_bin_collection-0.118.0}/uk_bin_collection/uk_bin_collection/councils/DerbyCityCouncil.py +0 -0
- {uk_bin_collection-0.117.0 → uk_bin_collection-0.118.0}/uk_bin_collection/uk_bin_collection/councils/DerbyshireDalesDistrictCouncil.py +0 -0
- {uk_bin_collection-0.117.0 → uk_bin_collection-0.118.0}/uk_bin_collection/uk_bin_collection/councils/DoncasterCouncil.py +0 -0
- {uk_bin_collection-0.117.0 → uk_bin_collection-0.118.0}/uk_bin_collection/uk_bin_collection/councils/DorsetCouncil.py +0 -0
- {uk_bin_collection-0.117.0 → uk_bin_collection-0.118.0}/uk_bin_collection/uk_bin_collection/councils/DoverDistrictCouncil.py +0 -0
- {uk_bin_collection-0.117.0 → uk_bin_collection-0.118.0}/uk_bin_collection/uk_bin_collection/councils/DudleyCouncil.py +0 -0
- {uk_bin_collection-0.117.0 → uk_bin_collection-0.118.0}/uk_bin_collection/uk_bin_collection/councils/DurhamCouncil.py +0 -0
- {uk_bin_collection-0.117.0 → uk_bin_collection-0.118.0}/uk_bin_collection/uk_bin_collection/councils/EalingCouncil.py +0 -0
- {uk_bin_collection-0.117.0 → uk_bin_collection-0.118.0}/uk_bin_collection/uk_bin_collection/councils/EastAyrshireCouncil.py +0 -0
- {uk_bin_collection-0.117.0 → uk_bin_collection-0.118.0}/uk_bin_collection/uk_bin_collection/councils/EastCambridgeshireCouncil.py +0 -0
- {uk_bin_collection-0.117.0 → uk_bin_collection-0.118.0}/uk_bin_collection/uk_bin_collection/councils/EastDevonDC.py +0 -0
- {uk_bin_collection-0.117.0 → uk_bin_collection-0.118.0}/uk_bin_collection/uk_bin_collection/councils/EastHertsCouncil.py +0 -0
- {uk_bin_collection-0.117.0 → uk_bin_collection-0.118.0}/uk_bin_collection/uk_bin_collection/councils/EastLindseyDistrictCouncil.py +0 -0
- {uk_bin_collection-0.117.0 → uk_bin_collection-0.118.0}/uk_bin_collection/uk_bin_collection/councils/EastRenfrewshireCouncil.py +0 -0
- {uk_bin_collection-0.117.0 → uk_bin_collection-0.118.0}/uk_bin_collection/uk_bin_collection/councils/EastRidingCouncil.py +0 -0
- {uk_bin_collection-0.117.0 → uk_bin_collection-0.118.0}/uk_bin_collection/uk_bin_collection/councils/EastSuffolkCouncil.py +0 -0
- {uk_bin_collection-0.117.0 → uk_bin_collection-0.118.0}/uk_bin_collection/uk_bin_collection/councils/EastleighBoroughCouncil.py +0 -0
- {uk_bin_collection-0.117.0 → uk_bin_collection-0.118.0}/uk_bin_collection/uk_bin_collection/councils/ElmbridgeBoroughCouncil.py +0 -0
- {uk_bin_collection-0.117.0 → uk_bin_collection-0.118.0}/uk_bin_collection/uk_bin_collection/councils/EnfieldCouncil.py +0 -0
- {uk_bin_collection-0.117.0 → uk_bin_collection-0.118.0}/uk_bin_collection/uk_bin_collection/councils/EnvironmentFirst.py +0 -0
- {uk_bin_collection-0.117.0 → uk_bin_collection-0.118.0}/uk_bin_collection/uk_bin_collection/councils/EppingForestDistrictCouncil.py +0 -0
- {uk_bin_collection-0.117.0 → uk_bin_collection-0.118.0}/uk_bin_collection/uk_bin_collection/councils/ErewashBoroughCouncil.py +0 -0
- {uk_bin_collection-0.117.0 → uk_bin_collection-0.118.0}/uk_bin_collection/uk_bin_collection/councils/FalkirkCouncil.py +0 -0
- {uk_bin_collection-0.117.0 → uk_bin_collection-0.118.0}/uk_bin_collection/uk_bin_collection/councils/FarehamBoroughCouncil.py +0 -0
- {uk_bin_collection-0.117.0 → uk_bin_collection-0.118.0}/uk_bin_collection/uk_bin_collection/councils/FenlandDistrictCouncil.py +0 -0
- {uk_bin_collection-0.117.0 → uk_bin_collection-0.118.0}/uk_bin_collection/uk_bin_collection/councils/FifeCouncil.py +0 -0
- {uk_bin_collection-0.117.0 → uk_bin_collection-0.118.0}/uk_bin_collection/uk_bin_collection/councils/FlintshireCountyCouncil.py +0 -0
- {uk_bin_collection-0.117.0 → uk_bin_collection-0.118.0}/uk_bin_collection/uk_bin_collection/councils/ForestOfDeanDistrictCouncil.py +0 -0
- {uk_bin_collection-0.117.0 → uk_bin_collection-0.118.0}/uk_bin_collection/uk_bin_collection/councils/GatesheadCouncil.py +0 -0
- {uk_bin_collection-0.117.0 → uk_bin_collection-0.118.0}/uk_bin_collection/uk_bin_collection/councils/GedlingBoroughCouncil.py +0 -0
- {uk_bin_collection-0.117.0 → uk_bin_collection-0.118.0}/uk_bin_collection/uk_bin_collection/councils/GlasgowCityCouncil.py +0 -0
- {uk_bin_collection-0.117.0 → uk_bin_collection-0.118.0}/uk_bin_collection/uk_bin_collection/councils/GloucesterCityCouncil.py +0 -0
- {uk_bin_collection-0.117.0 → uk_bin_collection-0.118.0}/uk_bin_collection/uk_bin_collection/councils/GraveshamBoroughCouncil.py +0 -0
- {uk_bin_collection-0.117.0 → uk_bin_collection-0.118.0}/uk_bin_collection/uk_bin_collection/councils/GuildfordCouncil.py +0 -0
- {uk_bin_collection-0.117.0 → uk_bin_collection-0.118.0}/uk_bin_collection/uk_bin_collection/councils/HaltonBoroughCouncil.py +0 -0
- {uk_bin_collection-0.117.0 → uk_bin_collection-0.118.0}/uk_bin_collection/uk_bin_collection/councils/HarboroughDistrictCouncil.py +0 -0
- {uk_bin_collection-0.117.0 → uk_bin_collection-0.118.0}/uk_bin_collection/uk_bin_collection/councils/HaringeyCouncil.py +0 -0
- {uk_bin_collection-0.117.0 → uk_bin_collection-0.118.0}/uk_bin_collection/uk_bin_collection/councils/HarrogateBoroughCouncil.py +0 -0
- {uk_bin_collection-0.117.0 → uk_bin_collection-0.118.0}/uk_bin_collection/uk_bin_collection/councils/HertsmereBoroughCouncil.py +0 -0
- {uk_bin_collection-0.117.0 → uk_bin_collection-0.118.0}/uk_bin_collection/uk_bin_collection/councils/HighPeakCouncil.py +0 -0
- {uk_bin_collection-0.117.0 → uk_bin_collection-0.118.0}/uk_bin_collection/uk_bin_collection/councils/HighlandCouncil.py +0 -0
- {uk_bin_collection-0.117.0 → uk_bin_collection-0.118.0}/uk_bin_collection/uk_bin_collection/councils/HounslowCouncil.py +0 -0
- {uk_bin_collection-0.117.0 → uk_bin_collection-0.118.0}/uk_bin_collection/uk_bin_collection/councils/HullCityCouncil.py +0 -0
- {uk_bin_collection-0.117.0 → uk_bin_collection-0.118.0}/uk_bin_collection/uk_bin_collection/councils/HuntingdonDistrictCouncil.py +0 -0
- {uk_bin_collection-0.117.0 → uk_bin_collection-0.118.0}/uk_bin_collection/uk_bin_collection/councils/IslingtonCouncil.py +0 -0
- {uk_bin_collection-0.117.0 → uk_bin_collection-0.118.0}/uk_bin_collection/uk_bin_collection/councils/KingstonUponThamesCouncil.py +0 -0
- {uk_bin_collection-0.117.0 → uk_bin_collection-0.118.0}/uk_bin_collection/uk_bin_collection/councils/KirkleesCouncil.py +0 -0
- {uk_bin_collection-0.117.0 → uk_bin_collection-0.118.0}/uk_bin_collection/uk_bin_collection/councils/KnowsleyMBCouncil.py +0 -0
- {uk_bin_collection-0.117.0 → uk_bin_collection-0.118.0}/uk_bin_collection/uk_bin_collection/councils/LancasterCityCouncil.py +0 -0
- {uk_bin_collection-0.117.0 → uk_bin_collection-0.118.0}/uk_bin_collection/uk_bin_collection/councils/LeedsCityCouncil.py +0 -0
- {uk_bin_collection-0.117.0 → uk_bin_collection-0.118.0}/uk_bin_collection/uk_bin_collection/councils/LichfieldDistrictCouncil.py +0 -0
- {uk_bin_collection-0.117.0 → uk_bin_collection-0.118.0}/uk_bin_collection/uk_bin_collection/councils/LincolnCouncil.py +0 -0
- {uk_bin_collection-0.117.0 → uk_bin_collection-0.118.0}/uk_bin_collection/uk_bin_collection/councils/LisburnCastlereaghCityCouncil.py +0 -0
- {uk_bin_collection-0.117.0 → uk_bin_collection-0.118.0}/uk_bin_collection/uk_bin_collection/councils/LiverpoolCityCouncil.py +0 -0
- {uk_bin_collection-0.117.0 → uk_bin_collection-0.118.0}/uk_bin_collection/uk_bin_collection/councils/LondonBoroughEaling.py +0 -0
- {uk_bin_collection-0.117.0 → uk_bin_collection-0.118.0}/uk_bin_collection/uk_bin_collection/councils/LondonBoroughHarrow.py +0 -0
- {uk_bin_collection-0.117.0 → uk_bin_collection-0.118.0}/uk_bin_collection/uk_bin_collection/councils/LondonBoroughHounslow.py +0 -0
- {uk_bin_collection-0.117.0 → uk_bin_collection-0.118.0}/uk_bin_collection/uk_bin_collection/councils/LondonBoroughLambeth.py +0 -0
- {uk_bin_collection-0.117.0 → uk_bin_collection-0.118.0}/uk_bin_collection/uk_bin_collection/councils/LondonBoroughRedbridge.py +0 -0
- {uk_bin_collection-0.117.0 → uk_bin_collection-0.118.0}/uk_bin_collection/uk_bin_collection/councils/LondonBoroughSutton.py +0 -0
- {uk_bin_collection-0.117.0 → uk_bin_collection-0.118.0}/uk_bin_collection/uk_bin_collection/councils/LutonBoroughCouncil.py +0 -0
- {uk_bin_collection-0.117.0 → uk_bin_collection-0.118.0}/uk_bin_collection/uk_bin_collection/councils/MaldonDistrictCouncil.py +0 -0
- {uk_bin_collection-0.117.0 → uk_bin_collection-0.118.0}/uk_bin_collection/uk_bin_collection/councils/MalvernHillsDC.py +0 -0
- {uk_bin_collection-0.117.0 → uk_bin_collection-0.118.0}/uk_bin_collection/uk_bin_collection/councils/ManchesterCityCouncil.py +0 -0
- {uk_bin_collection-0.117.0 → uk_bin_collection-0.118.0}/uk_bin_collection/uk_bin_collection/councils/MansfieldDistrictCouncil.py +0 -0
- {uk_bin_collection-0.117.0 → uk_bin_collection-0.118.0}/uk_bin_collection/uk_bin_collection/councils/MertonCouncil.py +0 -0
- {uk_bin_collection-0.117.0 → uk_bin_collection-0.118.0}/uk_bin_collection/uk_bin_collection/councils/MidAndEastAntrimBoroughCouncil.py +0 -0
- {uk_bin_collection-0.117.0 → uk_bin_collection-0.118.0}/uk_bin_collection/uk_bin_collection/councils/MidDevonCouncil.py +0 -0
- {uk_bin_collection-0.117.0 → uk_bin_collection-0.118.0}/uk_bin_collection/uk_bin_collection/councils/MidSussexDistrictCouncil.py +0 -0
- {uk_bin_collection-0.117.0 → uk_bin_collection-0.118.0}/uk_bin_collection/uk_bin_collection/councils/MidlothianCouncil.py +0 -0
- {uk_bin_collection-0.117.0 → uk_bin_collection-0.118.0}/uk_bin_collection/uk_bin_collection/councils/MiltonKeynesCityCouncil.py +0 -0
- {uk_bin_collection-0.117.0 → uk_bin_collection-0.118.0}/uk_bin_collection/uk_bin_collection/councils/MoleValleyDistrictCouncil.py +0 -0
- {uk_bin_collection-0.117.0 → uk_bin_collection-0.118.0}/uk_bin_collection/uk_bin_collection/councils/NeathPortTalbotCouncil.py +0 -0
- {uk_bin_collection-0.117.0 → uk_bin_collection-0.118.0}/uk_bin_collection/uk_bin_collection/councils/NewForestCouncil.py +0 -0
- {uk_bin_collection-0.117.0 → uk_bin_collection-0.118.0}/uk_bin_collection/uk_bin_collection/councils/NewarkAndSherwoodDC.py +0 -0
- {uk_bin_collection-0.117.0 → uk_bin_collection-0.118.0}/uk_bin_collection/uk_bin_collection/councils/NewcastleCityCouncil.py +0 -0
- {uk_bin_collection-0.117.0 → uk_bin_collection-0.118.0}/uk_bin_collection/uk_bin_collection/councils/NewhamCouncil.py +0 -0
- {uk_bin_collection-0.117.0 → uk_bin_collection-0.118.0}/uk_bin_collection/uk_bin_collection/councils/NewportCityCouncil.py +0 -0
- {uk_bin_collection-0.117.0 → uk_bin_collection-0.118.0}/uk_bin_collection/uk_bin_collection/councils/NorthAyrshireCouncil.py +0 -0
- {uk_bin_collection-0.117.0 → uk_bin_collection-0.118.0}/uk_bin_collection/uk_bin_collection/councils/NorthEastDerbyshireDistrictCouncil.py +0 -0
- {uk_bin_collection-0.117.0 → uk_bin_collection-0.118.0}/uk_bin_collection/uk_bin_collection/councils/NorthEastLincs.py +0 -0
- {uk_bin_collection-0.117.0 → uk_bin_collection-0.118.0}/uk_bin_collection/uk_bin_collection/councils/NorthKestevenDistrictCouncil.py +0 -0
- {uk_bin_collection-0.117.0 → uk_bin_collection-0.118.0}/uk_bin_collection/uk_bin_collection/councils/NorthLanarkshireCouncil.py +0 -0
- {uk_bin_collection-0.117.0 → uk_bin_collection-0.118.0}/uk_bin_collection/uk_bin_collection/councils/NorthLincolnshireCouncil.py +0 -0
- {uk_bin_collection-0.117.0 → uk_bin_collection-0.118.0}/uk_bin_collection/uk_bin_collection/councils/NorthNorfolkDistrictCouncil.py +0 -0
- {uk_bin_collection-0.117.0 → uk_bin_collection-0.118.0}/uk_bin_collection/uk_bin_collection/councils/NorthNorthamptonshireCouncil.py +0 -0
- {uk_bin_collection-0.117.0 → uk_bin_collection-0.118.0}/uk_bin_collection/uk_bin_collection/councils/NorthSomersetCouncil.py +0 -0
- {uk_bin_collection-0.117.0 → uk_bin_collection-0.118.0}/uk_bin_collection/uk_bin_collection/councils/NorthTynesideCouncil.py +0 -0
- {uk_bin_collection-0.117.0 → uk_bin_collection-0.118.0}/uk_bin_collection/uk_bin_collection/councils/NorthWestLeicestershire.py +0 -0
- {uk_bin_collection-0.117.0 → uk_bin_collection-0.118.0}/uk_bin_collection/uk_bin_collection/councils/NorthYorkshire.py +0 -0
- {uk_bin_collection-0.117.0 → uk_bin_collection-0.118.0}/uk_bin_collection/uk_bin_collection/councils/NorthumberlandCouncil.py +0 -0
- {uk_bin_collection-0.117.0 → uk_bin_collection-0.118.0}/uk_bin_collection/uk_bin_collection/councils/NorwichCityCouncil.py +0 -0
- {uk_bin_collection-0.117.0 → uk_bin_collection-0.118.0}/uk_bin_collection/uk_bin_collection/councils/NottinghamCityCouncil.py +0 -0
- {uk_bin_collection-0.117.0 → uk_bin_collection-0.118.0}/uk_bin_collection/uk_bin_collection/councils/NuneatonBedworthBoroughCouncil.py +0 -0
- {uk_bin_collection-0.117.0 → uk_bin_collection-0.118.0}/uk_bin_collection/uk_bin_collection/councils/OldhamCouncil.py +0 -0
- {uk_bin_collection-0.117.0 → uk_bin_collection-0.118.0}/uk_bin_collection/uk_bin_collection/councils/OxfordCityCouncil.py +0 -0
- {uk_bin_collection-0.117.0 → uk_bin_collection-0.118.0}/uk_bin_collection/uk_bin_collection/councils/PerthAndKinrossCouncil.py +0 -0
- {uk_bin_collection-0.117.0 → uk_bin_collection-0.118.0}/uk_bin_collection/uk_bin_collection/councils/PlymouthCouncil.py +0 -0
- {uk_bin_collection-0.117.0 → uk_bin_collection-0.118.0}/uk_bin_collection/uk_bin_collection/councils/PortsmouthCityCouncil.py +0 -0
- {uk_bin_collection-0.117.0 → uk_bin_collection-0.118.0}/uk_bin_collection/uk_bin_collection/councils/PowysCouncil.py +0 -0
- {uk_bin_collection-0.117.0 → uk_bin_collection-0.118.0}/uk_bin_collection/uk_bin_collection/councils/PrestonCityCouncil.py +0 -0
- {uk_bin_collection-0.117.0 → uk_bin_collection-0.118.0}/uk_bin_collection/uk_bin_collection/councils/ReadingBoroughCouncil.py +0 -0
- {uk_bin_collection-0.117.0 → uk_bin_collection-0.118.0}/uk_bin_collection/uk_bin_collection/councils/ReigateAndBansteadBoroughCouncil.py +0 -0
- {uk_bin_collection-0.117.0 → uk_bin_collection-0.118.0}/uk_bin_collection/uk_bin_collection/councils/RenfrewshireCouncil.py +0 -0
- {uk_bin_collection-0.117.0 → uk_bin_collection-0.118.0}/uk_bin_collection/uk_bin_collection/councils/RhonddaCynonTaffCouncil.py +0 -0
- {uk_bin_collection-0.117.0 → uk_bin_collection-0.118.0}/uk_bin_collection/uk_bin_collection/councils/RochdaleCouncil.py +0 -0
- {uk_bin_collection-0.117.0 → uk_bin_collection-0.118.0}/uk_bin_collection/uk_bin_collection/councils/RochfordCouncil.py +0 -0
- {uk_bin_collection-0.117.0 → uk_bin_collection-0.118.0}/uk_bin_collection/uk_bin_collection/councils/RotherhamCouncil.py +0 -0
- {uk_bin_collection-0.117.0 → uk_bin_collection-0.118.0}/uk_bin_collection/uk_bin_collection/councils/RugbyBoroughCouncil.py +0 -0
- {uk_bin_collection-0.117.0 → uk_bin_collection-0.118.0}/uk_bin_collection/uk_bin_collection/councils/RushcliffeBoroughCouncil.py +0 -0
- {uk_bin_collection-0.117.0 → uk_bin_collection-0.118.0}/uk_bin_collection/uk_bin_collection/councils/RushmoorCouncil.py +0 -0
- {uk_bin_collection-0.117.0 → uk_bin_collection-0.118.0}/uk_bin_collection/uk_bin_collection/councils/SalfordCityCouncil.py +0 -0
- {uk_bin_collection-0.117.0 → uk_bin_collection-0.118.0}/uk_bin_collection/uk_bin_collection/councils/SeftonCouncil.py +0 -0
- {uk_bin_collection-0.117.0 → uk_bin_collection-0.118.0}/uk_bin_collection/uk_bin_collection/councils/SevenoaksDistrictCouncil.py +0 -0
- {uk_bin_collection-0.117.0 → uk_bin_collection-0.118.0}/uk_bin_collection/uk_bin_collection/councils/SheffieldCityCouncil.py +0 -0
- {uk_bin_collection-0.117.0 → uk_bin_collection-0.118.0}/uk_bin_collection/uk_bin_collection/councils/ShropshireCouncil.py +0 -0
- {uk_bin_collection-0.117.0 → uk_bin_collection-0.118.0}/uk_bin_collection/uk_bin_collection/councils/SolihullCouncil.py +0 -0
- {uk_bin_collection-0.117.0 → uk_bin_collection-0.118.0}/uk_bin_collection/uk_bin_collection/councils/SomersetCouncil.py +0 -0
- {uk_bin_collection-0.117.0 → uk_bin_collection-0.118.0}/uk_bin_collection/uk_bin_collection/councils/SouthAyrshireCouncil.py +0 -0
- {uk_bin_collection-0.117.0 → uk_bin_collection-0.118.0}/uk_bin_collection/uk_bin_collection/councils/SouthCambridgeshireCouncil.py +0 -0
- {uk_bin_collection-0.117.0 → uk_bin_collection-0.118.0}/uk_bin_collection/uk_bin_collection/councils/SouthDerbyshireDistrictCouncil.py +0 -0
- {uk_bin_collection-0.117.0 → uk_bin_collection-0.118.0}/uk_bin_collection/uk_bin_collection/councils/SouthGloucestershireCouncil.py +0 -0
- {uk_bin_collection-0.117.0 → uk_bin_collection-0.118.0}/uk_bin_collection/uk_bin_collection/councils/SouthKestevenDistrictCouncil.py +0 -0
- {uk_bin_collection-0.117.0 → uk_bin_collection-0.118.0}/uk_bin_collection/uk_bin_collection/councils/SouthLanarkshireCouncil.py +0 -0
- {uk_bin_collection-0.117.0 → uk_bin_collection-0.118.0}/uk_bin_collection/uk_bin_collection/councils/SouthNorfolkCouncil.py +0 -0
- {uk_bin_collection-0.117.0 → uk_bin_collection-0.118.0}/uk_bin_collection/uk_bin_collection/councils/SouthOxfordshireCouncil.py +0 -0
- {uk_bin_collection-0.117.0 → uk_bin_collection-0.118.0}/uk_bin_collection/uk_bin_collection/councils/SouthRibbleCouncil.py +0 -0
- {uk_bin_collection-0.117.0 → uk_bin_collection-0.118.0}/uk_bin_collection/uk_bin_collection/councils/SouthStaffordshireDistrictCouncil.py +0 -0
- {uk_bin_collection-0.117.0 → uk_bin_collection-0.118.0}/uk_bin_collection/uk_bin_collection/councils/SouthTynesideCouncil.py +0 -0
- {uk_bin_collection-0.117.0 → uk_bin_collection-0.118.0}/uk_bin_collection/uk_bin_collection/councils/SouthwarkCouncil.py +0 -0
- {uk_bin_collection-0.117.0 → uk_bin_collection-0.118.0}/uk_bin_collection/uk_bin_collection/councils/StAlbansCityAndDistrictCouncil.py +0 -0
- {uk_bin_collection-0.117.0 → uk_bin_collection-0.118.0}/uk_bin_collection/uk_bin_collection/councils/StHelensBC.py +0 -0
- {uk_bin_collection-0.117.0 → uk_bin_collection-0.118.0}/uk_bin_collection/uk_bin_collection/councils/StaffordBoroughCouncil.py +0 -0
- {uk_bin_collection-0.117.0 → uk_bin_collection-0.118.0}/uk_bin_collection/uk_bin_collection/councils/StaffordshireMoorlandsDistrictCouncil.py +0 -0
- {uk_bin_collection-0.117.0 → uk_bin_collection-0.118.0}/uk_bin_collection/uk_bin_collection/councils/StockportBoroughCouncil.py +0 -0
- {uk_bin_collection-0.117.0 → uk_bin_collection-0.118.0}/uk_bin_collection/uk_bin_collection/councils/StocktonOnTeesCouncil.py +0 -0
- {uk_bin_collection-0.117.0 → uk_bin_collection-0.118.0}/uk_bin_collection/uk_bin_collection/councils/StokeOnTrentCityCouncil.py +0 -0
- {uk_bin_collection-0.117.0 → uk_bin_collection-0.118.0}/uk_bin_collection/uk_bin_collection/councils/StratfordUponAvonCouncil.py +0 -0
- {uk_bin_collection-0.117.0 → uk_bin_collection-0.118.0}/uk_bin_collection/uk_bin_collection/councils/StroudDistrictCouncil.py +0 -0
- {uk_bin_collection-0.117.0 → uk_bin_collection-0.118.0}/uk_bin_collection/uk_bin_collection/councils/SunderlandCityCouncil.py +0 -0
- {uk_bin_collection-0.117.0 → uk_bin_collection-0.118.0}/uk_bin_collection/uk_bin_collection/councils/SwaleBoroughCouncil.py +0 -0
- {uk_bin_collection-0.117.0 → uk_bin_collection-0.118.0}/uk_bin_collection/uk_bin_collection/councils/SwanseaCouncil.py +0 -0
- {uk_bin_collection-0.117.0 → uk_bin_collection-0.118.0}/uk_bin_collection/uk_bin_collection/councils/SwindonBoroughCouncil.py +0 -0
- {uk_bin_collection-0.117.0 → uk_bin_collection-0.118.0}/uk_bin_collection/uk_bin_collection/councils/TamesideMBCouncil.py +0 -0
- {uk_bin_collection-0.117.0 → uk_bin_collection-0.118.0}/uk_bin_collection/uk_bin_collection/councils/TandridgeDistrictCouncil.py +0 -0
- {uk_bin_collection-0.117.0 → uk_bin_collection-0.118.0}/uk_bin_collection/uk_bin_collection/councils/TeignbridgeCouncil.py +0 -0
- {uk_bin_collection-0.117.0 → uk_bin_collection-0.118.0}/uk_bin_collection/uk_bin_collection/councils/TelfordAndWrekinCouncil.py +0 -0
- {uk_bin_collection-0.117.0 → uk_bin_collection-0.118.0}/uk_bin_collection/uk_bin_collection/councils/TendringDistrictCouncil.py +0 -0
- {uk_bin_collection-0.117.0 → uk_bin_collection-0.118.0}/uk_bin_collection/uk_bin_collection/councils/TestValleyBoroughCouncil.py +0 -0
- {uk_bin_collection-0.117.0 → uk_bin_collection-0.118.0}/uk_bin_collection/uk_bin_collection/councils/ThreeRiversDistrictCouncil.py +0 -0
- {uk_bin_collection-0.117.0 → uk_bin_collection-0.118.0}/uk_bin_collection/uk_bin_collection/councils/TonbridgeAndMallingBC.py +0 -0
- {uk_bin_collection-0.117.0 → uk_bin_collection-0.118.0}/uk_bin_collection/uk_bin_collection/councils/TorbayCouncil.py +0 -0
- {uk_bin_collection-0.117.0 → uk_bin_collection-0.118.0}/uk_bin_collection/uk_bin_collection/councils/TorridgeDistrictCouncil.py +0 -0
- {uk_bin_collection-0.117.0 → uk_bin_collection-0.118.0}/uk_bin_collection/uk_bin_collection/councils/TunbridgeWellsCouncil.py +0 -0
- {uk_bin_collection-0.117.0 → uk_bin_collection-0.118.0}/uk_bin_collection/uk_bin_collection/councils/UttlesfordDistrictCouncil.py +0 -0
- {uk_bin_collection-0.117.0 → uk_bin_collection-0.118.0}/uk_bin_collection/uk_bin_collection/councils/ValeofGlamorganCouncil.py +0 -0
- {uk_bin_collection-0.117.0 → uk_bin_collection-0.118.0}/uk_bin_collection/uk_bin_collection/councils/ValeofWhiteHorseCouncil.py +0 -0
- {uk_bin_collection-0.117.0 → uk_bin_collection-0.118.0}/uk_bin_collection/uk_bin_collection/councils/WakefieldCityCouncil.py +0 -0
- {uk_bin_collection-0.117.0 → uk_bin_collection-0.118.0}/uk_bin_collection/uk_bin_collection/councils/WalsallCouncil.py +0 -0
- {uk_bin_collection-0.117.0 → uk_bin_collection-0.118.0}/uk_bin_collection/uk_bin_collection/councils/WalthamForest.py +0 -0
- {uk_bin_collection-0.117.0 → uk_bin_collection-0.118.0}/uk_bin_collection/uk_bin_collection/councils/WarringtonBoroughCouncil.py +0 -0
- {uk_bin_collection-0.117.0 → uk_bin_collection-0.118.0}/uk_bin_collection/uk_bin_collection/councils/WarwickDistrictCouncil.py +0 -0
- {uk_bin_collection-0.117.0 → uk_bin_collection-0.118.0}/uk_bin_collection/uk_bin_collection/councils/WatfordBoroughCouncil.py +0 -0
- {uk_bin_collection-0.117.0 → uk_bin_collection-0.118.0}/uk_bin_collection/uk_bin_collection/councils/WaverleyBoroughCouncil.py +0 -0
- {uk_bin_collection-0.117.0 → uk_bin_collection-0.118.0}/uk_bin_collection/uk_bin_collection/councils/WealdenDistrictCouncil.py +0 -0
- {uk_bin_collection-0.117.0 → uk_bin_collection-0.118.0}/uk_bin_collection/uk_bin_collection/councils/WelhatCouncil.py +0 -0
- {uk_bin_collection-0.117.0 → uk_bin_collection-0.118.0}/uk_bin_collection/uk_bin_collection/councils/WestBerkshireCouncil.py +0 -0
- {uk_bin_collection-0.117.0 → uk_bin_collection-0.118.0}/uk_bin_collection/uk_bin_collection/councils/WestLancashireBoroughCouncil.py +0 -0
- {uk_bin_collection-0.117.0 → uk_bin_collection-0.118.0}/uk_bin_collection/uk_bin_collection/councils/WestLindseyDistrictCouncil.py +0 -0
- {uk_bin_collection-0.117.0 → uk_bin_collection-0.118.0}/uk_bin_collection/uk_bin_collection/councils/WestLothianCouncil.py +0 -0
- {uk_bin_collection-0.117.0 → uk_bin_collection-0.118.0}/uk_bin_collection/uk_bin_collection/councils/WestMorlandAndFurness.py +0 -0
- {uk_bin_collection-0.117.0 → uk_bin_collection-0.118.0}/uk_bin_collection/uk_bin_collection/councils/WestNorthamptonshireCouncil.py +0 -0
- {uk_bin_collection-0.117.0 → uk_bin_collection-0.118.0}/uk_bin_collection/uk_bin_collection/councils/WestOxfordshireDistrictCouncil.py +0 -0
- {uk_bin_collection-0.117.0 → uk_bin_collection-0.118.0}/uk_bin_collection/uk_bin_collection/councils/WestSuffolkCouncil.py +0 -0
- {uk_bin_collection-0.117.0 → uk_bin_collection-0.118.0}/uk_bin_collection/uk_bin_collection/councils/WiganBoroughCouncil.py +0 -0
- {uk_bin_collection-0.117.0 → uk_bin_collection-0.118.0}/uk_bin_collection/uk_bin_collection/councils/WiltshireCouncil.py +0 -0
- {uk_bin_collection-0.117.0 → uk_bin_collection-0.118.0}/uk_bin_collection/uk_bin_collection/councils/WinchesterCityCouncil.py +0 -0
- {uk_bin_collection-0.117.0 → uk_bin_collection-0.118.0}/uk_bin_collection/uk_bin_collection/councils/WindsorAndMaidenheadCouncil.py +0 -0
- {uk_bin_collection-0.117.0 → uk_bin_collection-0.118.0}/uk_bin_collection/uk_bin_collection/councils/WirralCouncil.py +0 -0
- {uk_bin_collection-0.117.0 → uk_bin_collection-0.118.0}/uk_bin_collection/uk_bin_collection/councils/WokingBoroughCouncil.py +0 -0
- {uk_bin_collection-0.117.0 → uk_bin_collection-0.118.0}/uk_bin_collection/uk_bin_collection/councils/WokinghamBoroughCouncil.py +0 -0
- {uk_bin_collection-0.117.0 → uk_bin_collection-0.118.0}/uk_bin_collection/uk_bin_collection/councils/WorcesterCityCouncil.py +0 -0
- {uk_bin_collection-0.117.0 → uk_bin_collection-0.118.0}/uk_bin_collection/uk_bin_collection/councils/WychavonDistrictCouncil.py +0 -0
- {uk_bin_collection-0.117.0 → uk_bin_collection-0.118.0}/uk_bin_collection/uk_bin_collection/councils/WyreCouncil.py +0 -0
- {uk_bin_collection-0.117.0 → uk_bin_collection-0.118.0}/uk_bin_collection/uk_bin_collection/councils/YorkCouncil.py +0 -0
- {uk_bin_collection-0.117.0 → uk_bin_collection-0.118.0}/uk_bin_collection/uk_bin_collection/councils/council_class_template/councilclasstemplate.py +0 -0
- {uk_bin_collection-0.117.0 → uk_bin_collection-0.118.0}/uk_bin_collection/uk_bin_collection/create_new_council.py +0 -0
- {uk_bin_collection-0.117.0 → uk_bin_collection-0.118.0}/uk_bin_collection/uk_bin_collection/get_bin_data.py +0 -0
@@ -81,9 +81,10 @@
|
|
81
81
|
"BaberghDistrictCouncil": {
|
82
82
|
"skip_get_url": true,
|
83
83
|
"house_number": "Monday",
|
84
|
+
"postcode": "Week 1",
|
84
85
|
"url": "https://www.babergh.gov.uk",
|
85
86
|
"wiki_name": "Babergh District Council",
|
86
|
-
"wiki_note": "Use the House Number field to pass the DAY of the week for your collections. Monday/Tuesday/Wednesday/Thursday/Friday"
|
87
|
+
"wiki_note": "Use the House Number field to pass the DAY of the week for your collections. Monday/Tuesday/Wednesday/Thursday/Friday. [OPTIONAL] Use the 'postcode' field to pass the WEEK for your garden collection. [Week 1/Week 2]"
|
87
88
|
},
|
88
89
|
"BCPCouncil": {
|
89
90
|
"skip_get_url": true,
|
@@ -397,6 +398,12 @@
|
|
397
398
|
"wiki_name": "Conwy County Borough Council",
|
398
399
|
"wiki_note": "Conwy County Borough Council uses a straight UPRN in the URL, e.g., `&uprn=XXXXXXXXXXXXX`."
|
399
400
|
},
|
401
|
+
"CopelandBoroughCouncil": {
|
402
|
+
"uprn": "100110734613",
|
403
|
+
"url": "https://www.copeland.gov.uk",
|
404
|
+
"wiki_name": "Copeland Borough Council",
|
405
|
+
"wiki_note": "Use [FindMyAddress](https://www.findmyaddress.co.uk/search) to find your UPRN."
|
406
|
+
},
|
400
407
|
"CornwallCouncil": {
|
401
408
|
"skip_get_url": true,
|
402
409
|
"uprn": "100040128734",
|
@@ -1005,9 +1012,10 @@
|
|
1005
1012
|
"MidSuffolkDistrictCouncil": {
|
1006
1013
|
"skip_get_url": true,
|
1007
1014
|
"house_number": "Monday",
|
1015
|
+
"postcode": "Week 2",
|
1008
1016
|
"url": "https://www.midsuffolk.gov.uk",
|
1009
1017
|
"wiki_name": "Mid Suffolk District Council",
|
1010
|
-
"wiki_note": "Use the House Number field to pass the DAY of the week for your collections. Monday/Tuesday/Wednesday/Thursday/Friday"
|
1018
|
+
"wiki_note": "Use the House Number field to pass the DAY of the week for your collections. Monday/Tuesday/Wednesday/Thursday/Friday. [OPTIONAL] Use the 'postcode' field to pass the WEEK for your garden collection. [Week 1/Week 2]"
|
1011
1019
|
},
|
1012
1020
|
"MidSussexDistrictCouncil": {
|
1013
1021
|
"house_number": "OAKLANDS, OAKLANDS ROAD RH16 1SS",
|
@@ -1303,6 +1311,12 @@
|
|
1303
1311
|
"wiki_name": "Rochford Council",
|
1304
1312
|
"wiki_note": "No extra parameters are required. Dates presented should be read as 'week commencing'."
|
1305
1313
|
},
|
1314
|
+
"RotherDistrictCouncil": {
|
1315
|
+
"uprn": "100061937338",
|
1316
|
+
"url": "https://www.rother.gov.uk",
|
1317
|
+
"wiki_name": "Rother District Council",
|
1318
|
+
"wiki_note": "Use [FindMyAddress](https://www.findmyaddress.co.uk/search) to find your UPRN."
|
1319
|
+
},
|
1306
1320
|
"RotherhamCouncil": {
|
1307
1321
|
"url": "https://www.rotherham.gov.uk/bin-collections?address=100050866000&submit=Submit",
|
1308
1322
|
"uprn": "100050866000",
|
@@ -1412,6 +1426,12 @@
|
|
1412
1426
|
"wiki_name": "South Gloucestershire Council",
|
1413
1427
|
"wiki_note": "Provide your UPRN. You can find it using [FindMyAddress](https://www.findmyaddress.co.uk/search)."
|
1414
1428
|
},
|
1429
|
+
"SouthHamsDistrictCouncil": {
|
1430
|
+
"uprn": "10004742851",
|
1431
|
+
"url": "https://www.southhams.gov.uk",
|
1432
|
+
"wiki_name": "South Hams District Council",
|
1433
|
+
"wiki_note": "Use [FindMyAddress](https://www.findmyaddress.co.uk/search) to find your UPRN."
|
1434
|
+
},
|
1415
1435
|
"SouthKestevenDistrictCouncil": {
|
1416
1436
|
"house_number": "2 Althorpe Close, Market Deeping, PE6 8BL",
|
1417
1437
|
"postcode": "PE68BL",
|
@@ -1476,6 +1496,12 @@
|
|
1476
1496
|
"wiki_name": "St Albans City and District Council",
|
1477
1497
|
"wiki_note": "Provide your UPRN. You can find it using [FindMyAddress](https://www.findmyaddress.co.uk/search)."
|
1478
1498
|
},
|
1499
|
+
"StevenageBoroughCouncil": {
|
1500
|
+
"uprn": "100080878852",
|
1501
|
+
"url": "https://www.stevenage.gov.uk",
|
1502
|
+
"wiki_name": "Stevenage Borough Council",
|
1503
|
+
"wiki_note": "Use [FindMyAddress](https://www.findmyaddress.co.uk/search) to find your UPRN."
|
1504
|
+
},
|
1479
1505
|
"StHelensBC": {
|
1480
1506
|
"house_number": "15",
|
1481
1507
|
"postcode": "L34 2GA",
|
@@ -1630,6 +1656,12 @@
|
|
1630
1656
|
"wiki_name": "Test Valley Borough Council",
|
1631
1657
|
"wiki_note": "Provide your UPRN and postcode. Use [FindMyAddress](https://www.findmyaddress.co.uk/search) to find your UPRN."
|
1632
1658
|
},
|
1659
|
+
"ThanetDistrictCouncil": {
|
1660
|
+
"uprn": "100061111858",
|
1661
|
+
"url": "https://www.thanet.gov.uk",
|
1662
|
+
"wiki_name": "Thanet District Council",
|
1663
|
+
"wiki_note": "Use [FindMyAddress](https://www.findmyaddress.co.uk/search) to find your UPRN."
|
1664
|
+
},
|
1633
1665
|
"ThreeRiversDistrictCouncil": {
|
1634
1666
|
"postcode": "WD3 7AZ",
|
1635
1667
|
"skip_get_url": true,
|
@@ -1897,6 +1929,13 @@
|
|
1897
1929
|
"wiki_name": "Worcester City Council",
|
1898
1930
|
"wiki_note": "Provide your UPRN. You can find it using [FindMyAddress](https://www.findmyaddress.co.uk/search)."
|
1899
1931
|
},
|
1932
|
+
"WolverhamptonCityCouncil": {
|
1933
|
+
"uprn": "100071205205",
|
1934
|
+
"postcode": "WV3 9NZ",
|
1935
|
+
"url": "https://www.wolverhampton.gov.uk",
|
1936
|
+
"wiki_name": "Wolverhampton City Council",
|
1937
|
+
"wiki_note": "Use [FindMyAddress](https://www.findmyaddress.co.uk/search) to find your UPRN."
|
1938
|
+
},
|
1900
1939
|
"WorcesterCityCouncil": {
|
1901
1940
|
"url": "https://www.Worcester.gov.uk",
|
1902
1941
|
"wiki_command_url_override": "https://www.Worcester.gov.uk",
|
@@ -23,6 +23,7 @@ class CouncilClass(AbstractGetBinDataClass):
|
|
23
23
|
def parse_data(self, page: str, **kwargs) -> dict:
|
24
24
|
|
25
25
|
collection_day = kwargs.get("paon")
|
26
|
+
garden_collection_week = kwargs.get("postcode")
|
26
27
|
bindata = {"bins": []}
|
27
28
|
|
28
29
|
days_of_week = [
|
@@ -35,10 +36,14 @@ class CouncilClass(AbstractGetBinDataClass):
|
|
35
36
|
"Sunday",
|
36
37
|
]
|
37
38
|
|
39
|
+
garden_week = ["Week 1", "Week 2"]
|
40
|
+
|
38
41
|
refusestartDate = datetime(2024, 11, 4)
|
39
42
|
recyclingstartDate = datetime(2024, 11, 11)
|
40
43
|
|
41
44
|
offset_days = days_of_week.index(collection_day)
|
45
|
+
if garden_collection_week:
|
46
|
+
garden_collection = garden_week.index(garden_collection_week)
|
42
47
|
|
43
48
|
refuse_dates = get_dates_every_x_days(refusestartDate, 14, 28)
|
44
49
|
recycling_dates = get_dates_every_x_days(recyclingstartDate, 14, 28)
|
@@ -125,6 +130,63 @@ class CouncilClass(AbstractGetBinDataClass):
|
|
125
130
|
}
|
126
131
|
bindata["bins"].append(dict_data)
|
127
132
|
|
133
|
+
if garden_collection_week:
|
134
|
+
if garden_collection == 0:
|
135
|
+
gardenstartDate = datetime(2024, 11, 11)
|
136
|
+
elif garden_collection == 1:
|
137
|
+
gardenstartDate = datetime(2024, 11, 4)
|
138
|
+
|
139
|
+
garden_dates = get_dates_every_x_days(gardenstartDate, 14, 28)
|
140
|
+
|
141
|
+
garden_bank_holidays = [
|
142
|
+
("23/12/2024", 1),
|
143
|
+
("24/12/2024", 1),
|
144
|
+
("25/12/2024", 1),
|
145
|
+
("26/12/2024", 1),
|
146
|
+
("27/12/2024", 1),
|
147
|
+
("30/12/2024", 1),
|
148
|
+
("31/12/2024", 1),
|
149
|
+
("01/01/2025", 1),
|
150
|
+
("02/01/2025", 1),
|
151
|
+
("03/01/2025", 1),
|
152
|
+
]
|
153
|
+
|
154
|
+
for gardenDate in garden_dates:
|
155
|
+
|
156
|
+
collection_date = (
|
157
|
+
datetime.strptime(gardenDate, "%d/%m/%Y")
|
158
|
+
+ timedelta(days=offset_days)
|
159
|
+
).strftime("%d/%m/%Y")
|
160
|
+
|
161
|
+
garden_holiday = next(
|
162
|
+
(
|
163
|
+
value
|
164
|
+
for date, value in garden_bank_holidays
|
165
|
+
if date == collection_date
|
166
|
+
),
|
167
|
+
0,
|
168
|
+
)
|
169
|
+
|
170
|
+
if garden_holiday > 0:
|
171
|
+
continue
|
172
|
+
|
173
|
+
holiday_offset = next(
|
174
|
+
(value for date, value in bank_holidays if date == collection_date),
|
175
|
+
0,
|
176
|
+
)
|
177
|
+
|
178
|
+
if holiday_offset > 0:
|
179
|
+
collection_date = (
|
180
|
+
datetime.strptime(collection_date, "%d/%m/%Y")
|
181
|
+
+ timedelta(days=holiday_offset)
|
182
|
+
).strftime("%d/%m/%Y")
|
183
|
+
|
184
|
+
dict_data = {
|
185
|
+
"type": "Garden Bin",
|
186
|
+
"collectionDate": collection_date,
|
187
|
+
}
|
188
|
+
bindata["bins"].append(dict_data)
|
189
|
+
|
128
190
|
bindata["bins"].sort(
|
129
191
|
key=lambda x: datetime.strptime(x.get("collectionDate"), "%d/%m/%Y")
|
130
192
|
)
|
uk_bin_collection-0.118.0/uk_bin_collection/uk_bin_collection/councils/CopelandBoroughCouncil.py
ADDED
@@ -0,0 +1,93 @@
|
|
1
|
+
from xml.etree import ElementTree
|
2
|
+
|
3
|
+
from bs4 import BeautifulSoup
|
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
|
+
class CouncilClass(AbstractGetBinDataClass):
|
10
|
+
"""
|
11
|
+
Concrete classes have to implement all abstract operations of the
|
12
|
+
baseclass. They can also override some
|
13
|
+
operations with a default implementation.
|
14
|
+
"""
|
15
|
+
|
16
|
+
def parse_data(self, page: str, **kwargs) -> dict:
|
17
|
+
uprn = kwargs.get("uprn")
|
18
|
+
check_uprn(uprn)
|
19
|
+
council = "CPL"
|
20
|
+
|
21
|
+
# Make SOAP request
|
22
|
+
headers = {
|
23
|
+
"Content-Type": "text/xml; charset=UTF-8",
|
24
|
+
"Referer": "https://collections-copeland.azurewebsites.net/calendar.html",
|
25
|
+
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/110.0.0.0 Safari/537.36",
|
26
|
+
}
|
27
|
+
requests.packages.urllib3.disable_warnings()
|
28
|
+
post_data = (
|
29
|
+
'<?xml version="1.0" encoding="utf-8"?>'
|
30
|
+
'<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">'
|
31
|
+
'<soap:Body><getRoundCalendarForUPRN xmlns="http://webaspx-collections.azurewebsites.net/">'
|
32
|
+
"<council>" + council + "</council><UPRN>" + uprn + "</UPRN>"
|
33
|
+
"<from>Chtml</from></getRoundCalendarForUPRN></soap:Body></soap:Envelope>"
|
34
|
+
)
|
35
|
+
response = requests.post(
|
36
|
+
"https://collections-copeland.azurewebsites.net/WSCollExternal.asmx",
|
37
|
+
headers=headers,
|
38
|
+
data=post_data,
|
39
|
+
)
|
40
|
+
|
41
|
+
if response.status_code != 200:
|
42
|
+
raise ValueError("No bin data found for provided UPRN.")
|
43
|
+
|
44
|
+
# Get HTML from SOAP response
|
45
|
+
xmltree = ElementTree.fromstring(response.text)
|
46
|
+
html = xmltree.find(
|
47
|
+
".//{http://webaspx-collections.azurewebsites.net/}getRoundCalendarForUPRNResult"
|
48
|
+
).text
|
49
|
+
# Parse with BS4
|
50
|
+
soup = BeautifulSoup(html, features="html.parser")
|
51
|
+
soup.prettify()
|
52
|
+
|
53
|
+
data = {"bins": []}
|
54
|
+
for bin_type in ["Refuse", "Recycling", "Garden"]:
|
55
|
+
bin_el = soup.find("b", string=bin_type)
|
56
|
+
if bin_el:
|
57
|
+
bin_info = bin_el.next_sibling.split(": ")[1]
|
58
|
+
collection_date = ""
|
59
|
+
results = re.search("([A-Za-z]+ \\d\\d? [A-Za-z]+) then", bin_info)
|
60
|
+
if results:
|
61
|
+
if results[1] == "Today":
|
62
|
+
date = datetime.now()
|
63
|
+
elif results[1] == "Tomorrow":
|
64
|
+
date = datetime.now() + timedelta(days=1)
|
65
|
+
else:
|
66
|
+
date = get_next_occurrence_from_day_month(
|
67
|
+
datetime.strptime(
|
68
|
+
results[1] + " " + datetime.now().strftime("%Y"),
|
69
|
+
"%a %d %b %Y",
|
70
|
+
)
|
71
|
+
)
|
72
|
+
if date:
|
73
|
+
collection_date = date.strftime(date_format)
|
74
|
+
else:
|
75
|
+
results2 = re.search("([A-Za-z]+) then", bin_info)
|
76
|
+
if results2:
|
77
|
+
if results2[1] == "Today":
|
78
|
+
collection_date = datetime.now().strftime(date_format)
|
79
|
+
elif results2[1] == "Tomorrow":
|
80
|
+
collection_date = (
|
81
|
+
datetime.now() + timedelta(days=1)
|
82
|
+
).strftime(date_format)
|
83
|
+
else:
|
84
|
+
collection_date = results2[1]
|
85
|
+
|
86
|
+
if collection_date != "":
|
87
|
+
dict_data = {
|
88
|
+
"type": bin_type,
|
89
|
+
"collectionDate": collection_date,
|
90
|
+
}
|
91
|
+
data["bins"].append(dict_data)
|
92
|
+
|
93
|
+
return data
|
uk_bin_collection-0.118.0/uk_bin_collection/uk_bin_collection/councils/CrawleyBoroughCouncil.py
ADDED
@@ -0,0 +1,112 @@
|
|
1
|
+
import time
|
2
|
+
|
3
|
+
import requests
|
4
|
+
from dateutil.relativedelta import relativedelta
|
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
|
+
# Make a BS4 object
|
20
|
+
uprn = kwargs.get("uprn")
|
21
|
+
usrn = kwargs.get("paon")
|
22
|
+
check_uprn(uprn)
|
23
|
+
check_usrn(usrn)
|
24
|
+
bindata = {"bins": []}
|
25
|
+
|
26
|
+
SESSION_URL = "https://crawleybc-self.achieveservice.com/authapi/isauthenticated?uri=https%253A%252F%252Fcrawleybc-self.achieveservice.com%252Fen%252FAchieveForms%252F%253Fform_uri%253Dsandbox-publish%253A%252F%252FAF-Process-fb73f73e-e8f5-4441-9f83-8b5d04d889d6%252FAF-Stage-ec9ada91-d2d9-43bc-9730-597d15fc8108%252Fdefinition.json%2526redirectlink%253D%252Fen%2526cancelRedirectLink%253D%252Fen%2526noLoginPrompt%253D1%2526accept%253Dyes&hostname=crawleybc-self.achieveservice.com&withCredentials=true"
|
27
|
+
|
28
|
+
API_URL = "https://crawleybc-self.achieveservice.com/apibroker/"
|
29
|
+
|
30
|
+
currentdate = datetime.now().strftime("%d/%m/%Y")
|
31
|
+
|
32
|
+
data = {
|
33
|
+
"formValues": {
|
34
|
+
"Address": {
|
35
|
+
"address": {
|
36
|
+
"value": {
|
37
|
+
"Address": {
|
38
|
+
"usrn": {
|
39
|
+
"value": usrn,
|
40
|
+
},
|
41
|
+
"uprn": {
|
42
|
+
"value": uprn,
|
43
|
+
},
|
44
|
+
}
|
45
|
+
},
|
46
|
+
},
|
47
|
+
"dayConverted": {
|
48
|
+
"value": currentdate,
|
49
|
+
},
|
50
|
+
"getCollection": {
|
51
|
+
"value": "true",
|
52
|
+
},
|
53
|
+
"getWorksheets": {
|
54
|
+
"value": "false",
|
55
|
+
},
|
56
|
+
},
|
57
|
+
},
|
58
|
+
}
|
59
|
+
|
60
|
+
headers = {
|
61
|
+
"Content-Type": "application/json",
|
62
|
+
"Accept": "application/json",
|
63
|
+
"User-Agent": "Mozilla/5.0",
|
64
|
+
"X-Requested-With": "XMLHttpRequest",
|
65
|
+
"Referer": "https://crawleybc-self.achieveservice.com/fillform/?iframe_id=fillform-frame-1&db_id=",
|
66
|
+
}
|
67
|
+
s = requests.session()
|
68
|
+
r = s.get(SESSION_URL)
|
69
|
+
r.raise_for_status()
|
70
|
+
session_data = r.json()
|
71
|
+
sid = session_data["auth-session"]
|
72
|
+
params = {
|
73
|
+
"api": "RunLookup",
|
74
|
+
"id": "5b4f0ec5f13f4",
|
75
|
+
"repeat_against": "",
|
76
|
+
"noRetry": "true",
|
77
|
+
"getOnlyTokens": "undefined",
|
78
|
+
"log_id": "",
|
79
|
+
"app_name": "AF-Renderer::Self",
|
80
|
+
# unix_timestamp
|
81
|
+
"_": str(int(time.time() * 1000)),
|
82
|
+
"sid": sid,
|
83
|
+
}
|
84
|
+
|
85
|
+
r = s.post(API_URL, json=data, headers=headers, params=params)
|
86
|
+
r.raise_for_status()
|
87
|
+
|
88
|
+
data = r.json()
|
89
|
+
rows_data = data["integration"]["transformed"]["rows_data"]["0"]
|
90
|
+
if not isinstance(rows_data, dict):
|
91
|
+
raise ValueError("Invalid data returned from API")
|
92
|
+
|
93
|
+
# Extract each service's relevant details for the bin schedule
|
94
|
+
for key, value in rows_data.items():
|
95
|
+
if key.endswith("DateNext"):
|
96
|
+
BinType = key.replace("DateNext", "Service")
|
97
|
+
for key2, value2 in rows_data.items():
|
98
|
+
if key2 == BinType:
|
99
|
+
BinType = value2
|
100
|
+
next_collection = datetime.strptime(value, "%A %d %B").replace(
|
101
|
+
year=datetime.now().year
|
102
|
+
)
|
103
|
+
if datetime.now().month == 12 and next_collection.month == 1:
|
104
|
+
next_collection = next_collection + relativedelta(years=1)
|
105
|
+
|
106
|
+
dict_data = {
|
107
|
+
"type": BinType,
|
108
|
+
"collectionDate": next_collection.strftime(date_format),
|
109
|
+
}
|
110
|
+
bindata["bins"].append(dict_data)
|
111
|
+
|
112
|
+
return bindata
|
@@ -23,6 +23,7 @@ class CouncilClass(AbstractGetBinDataClass):
|
|
23
23
|
def parse_data(self, page: str, **kwargs) -> dict:
|
24
24
|
|
25
25
|
collection_day = kwargs.get("paon")
|
26
|
+
garden_collection_week = kwargs.get("postcode")
|
26
27
|
bindata = {"bins": []}
|
27
28
|
|
28
29
|
days_of_week = [
|
@@ -35,10 +36,14 @@ class CouncilClass(AbstractGetBinDataClass):
|
|
35
36
|
"Sunday",
|
36
37
|
]
|
37
38
|
|
39
|
+
garden_week = ["Week 1", "Week 2"]
|
40
|
+
|
38
41
|
refusestartDate = datetime(2024, 11, 11)
|
39
42
|
recyclingstartDate = datetime(2024, 11, 4)
|
40
43
|
|
41
44
|
offset_days = days_of_week.index(collection_day)
|
45
|
+
if garden_collection_week:
|
46
|
+
garden_collection = garden_week.index(garden_collection_week)
|
42
47
|
|
43
48
|
refuse_dates = get_dates_every_x_days(refusestartDate, 14, 28)
|
44
49
|
recycling_dates = get_dates_every_x_days(recyclingstartDate, 14, 28)
|
@@ -125,6 +130,63 @@ class CouncilClass(AbstractGetBinDataClass):
|
|
125
130
|
}
|
126
131
|
bindata["bins"].append(dict_data)
|
127
132
|
|
133
|
+
if garden_collection_week:
|
134
|
+
if garden_collection == 0:
|
135
|
+
gardenstartDate = datetime(2024, 11, 11)
|
136
|
+
elif garden_collection == 1:
|
137
|
+
gardenstartDate = datetime(2024, 11, 4)
|
138
|
+
|
139
|
+
garden_dates = get_dates_every_x_days(gardenstartDate, 14, 28)
|
140
|
+
|
141
|
+
garden_bank_holidays = [
|
142
|
+
("23/12/2024", 1),
|
143
|
+
("24/12/2024", 1),
|
144
|
+
("25/12/2024", 1),
|
145
|
+
("26/12/2024", 1),
|
146
|
+
("27/12/2024", 1),
|
147
|
+
("30/12/2024", 1),
|
148
|
+
("31/12/2024", 1),
|
149
|
+
("01/01/2025", 1),
|
150
|
+
("02/01/2025", 1),
|
151
|
+
("03/01/2025", 1),
|
152
|
+
]
|
153
|
+
|
154
|
+
for gardenDate in garden_dates:
|
155
|
+
|
156
|
+
collection_date = (
|
157
|
+
datetime.strptime(gardenDate, "%d/%m/%Y")
|
158
|
+
+ timedelta(days=offset_days)
|
159
|
+
).strftime("%d/%m/%Y")
|
160
|
+
|
161
|
+
garden_holiday = next(
|
162
|
+
(
|
163
|
+
value
|
164
|
+
for date, value in garden_bank_holidays
|
165
|
+
if date == collection_date
|
166
|
+
),
|
167
|
+
0,
|
168
|
+
)
|
169
|
+
|
170
|
+
if garden_holiday > 0:
|
171
|
+
continue
|
172
|
+
|
173
|
+
holiday_offset = next(
|
174
|
+
(value for date, value in bank_holidays if date == collection_date),
|
175
|
+
0,
|
176
|
+
)
|
177
|
+
|
178
|
+
if holiday_offset > 0:
|
179
|
+
collection_date = (
|
180
|
+
datetime.strptime(collection_date, "%d/%m/%Y")
|
181
|
+
+ timedelta(days=holiday_offset)
|
182
|
+
).strftime("%d/%m/%Y")
|
183
|
+
|
184
|
+
dict_data = {
|
185
|
+
"type": "Garden Bin",
|
186
|
+
"collectionDate": collection_date,
|
187
|
+
}
|
188
|
+
bindata["bins"].append(dict_data)
|
189
|
+
|
128
190
|
bindata["bins"].sort(
|
129
191
|
key=lambda x: datetime.strptime(x.get("collectionDate"), "%d/%m/%Y")
|
130
192
|
)
|
uk_bin_collection-0.118.0/uk_bin_collection/uk_bin_collection/councils/RotherDistrictCouncil.py
ADDED
@@ -0,0 +1,84 @@
|
|
1
|
+
from datetime import datetime
|
2
|
+
|
3
|
+
import requests
|
4
|
+
from bs4 import BeautifulSoup
|
5
|
+
from dateutil.relativedelta import relativedelta
|
6
|
+
|
7
|
+
from uk_bin_collection.uk_bin_collection.common import *
|
8
|
+
from uk_bin_collection.uk_bin_collection.get_bin_data import AbstractGetBinDataClass
|
9
|
+
|
10
|
+
|
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
|
+
# Get and check UPRN
|
20
|
+
user_uprn = kwargs.get("uprn")
|
21
|
+
check_uprn(user_uprn)
|
22
|
+
bindata = {"bins": []}
|
23
|
+
|
24
|
+
uri = "https://www.rother.gov.uk/wp-admin/admin-ajax.php"
|
25
|
+
params = {
|
26
|
+
"action": "get_address_data",
|
27
|
+
"uprn": user_uprn,
|
28
|
+
"context": "full-page",
|
29
|
+
}
|
30
|
+
|
31
|
+
headers = {
|
32
|
+
"Content-Type": "application/x-www-form-urlencoded",
|
33
|
+
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36",
|
34
|
+
}
|
35
|
+
|
36
|
+
# Send a POST request with form data and headers
|
37
|
+
r = requests.post(uri, data=params, headers=headers, verify=False)
|
38
|
+
|
39
|
+
result = r.json()
|
40
|
+
|
41
|
+
if result["success"]:
|
42
|
+
# Parse the HTML with BeautifulSoup
|
43
|
+
soup = BeautifulSoup(result["data"], "html.parser")
|
44
|
+
soup.prettify()
|
45
|
+
|
46
|
+
# print(soup)
|
47
|
+
|
48
|
+
# Find the div elements with class "bindays-item"
|
49
|
+
bin_days = soup.find_all("div", class_="bindays-item")
|
50
|
+
|
51
|
+
# Loop through each bin item and extract type and date
|
52
|
+
for bin_day in bin_days:
|
53
|
+
# Extract bin type from the <h3> tag
|
54
|
+
bin_type = bin_day.find("h3").get_text(strip=True).replace(":", "")
|
55
|
+
|
56
|
+
# Extract date (or check if it's a subscription link for Garden Waste)
|
57
|
+
date_span = bin_day.find("span", class_="find-my-nearest-bindays-date")
|
58
|
+
if date_span:
|
59
|
+
if date_span.find("a"):
|
60
|
+
# If there is a link, this is the Garden bin signup link
|
61
|
+
continue
|
62
|
+
else:
|
63
|
+
# Otherwise, get the date text directly
|
64
|
+
date = date_span.get_text(strip=True)
|
65
|
+
else:
|
66
|
+
date = None
|
67
|
+
|
68
|
+
date = datetime.strptime(
|
69
|
+
remove_ordinal_indicator_from_date_string(date),
|
70
|
+
"%A %d %B",
|
71
|
+
).replace(year=datetime.now().year)
|
72
|
+
if datetime.now().month == 12 and date.month == 1:
|
73
|
+
date = date + relativedelta(years=1)
|
74
|
+
|
75
|
+
dict_data = {
|
76
|
+
"type": bin_type,
|
77
|
+
"collectionDate": date.strftime(date_format),
|
78
|
+
}
|
79
|
+
bindata["bins"].append(dict_data)
|
80
|
+
|
81
|
+
bindata["bins"].sort(
|
82
|
+
key=lambda x: datetime.strptime(x.get("collectionDate"), "%d/%m/%Y")
|
83
|
+
)
|
84
|
+
return bindata
|
uk_bin_collection-0.118.0/uk_bin_collection/uk_bin_collection/councils/SouthHamsDistrictCouncil.py
ADDED
@@ -0,0 +1,90 @@
|
|
1
|
+
from datetime import datetime
|
2
|
+
|
3
|
+
import requests
|
4
|
+
from bs4 import BeautifulSoup
|
5
|
+
from dateutil.relativedelta import relativedelta
|
6
|
+
|
7
|
+
from uk_bin_collection.uk_bin_collection.common import *
|
8
|
+
from uk_bin_collection.uk_bin_collection.get_bin_data import AbstractGetBinDataClass
|
9
|
+
|
10
|
+
|
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
|
+
# Get and check UPRN
|
20
|
+
user_uprn = kwargs.get("uprn")
|
21
|
+
check_uprn(user_uprn)
|
22
|
+
bindata = {"bins": []}
|
23
|
+
|
24
|
+
uri = "https://waste.southhams.gov.uk/mycollections"
|
25
|
+
|
26
|
+
s = requests.session()
|
27
|
+
r = s.get(uri)
|
28
|
+
for cookie in r.cookies:
|
29
|
+
if cookie.name == "fcc_session_cookie":
|
30
|
+
fcc_session_token = cookie.value
|
31
|
+
|
32
|
+
uri = "https://waste.southhams.gov.uk/mycollections/getcollectiondetails"
|
33
|
+
|
34
|
+
params = {
|
35
|
+
"fcc_session_token": fcc_session_token,
|
36
|
+
"uprn": user_uprn,
|
37
|
+
}
|
38
|
+
|
39
|
+
headers = {
|
40
|
+
"Content-Type": "application/x-www-form-urlencoded",
|
41
|
+
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36",
|
42
|
+
"Referer": "https://waste.southhams.gov.uk/mycollections",
|
43
|
+
"X-Requested-With": "XMLHttpRequest",
|
44
|
+
}
|
45
|
+
|
46
|
+
# Send a POST request with form data and headers
|
47
|
+
r = s.post(uri, data=params, headers=headers)
|
48
|
+
|
49
|
+
result = r.json()
|
50
|
+
|
51
|
+
for collection in result["binCollections"]["tile"]:
|
52
|
+
|
53
|
+
# Parse the HTML with BeautifulSoup
|
54
|
+
soup = BeautifulSoup(collection[0], "html.parser")
|
55
|
+
soup.prettify()
|
56
|
+
|
57
|
+
# Find all collectionDiv elements
|
58
|
+
collections = soup.find_all("div", class_="collectionDiv")
|
59
|
+
|
60
|
+
# Process each collectionDiv
|
61
|
+
for collection in collections:
|
62
|
+
# Extract the service name
|
63
|
+
service_name = collection.find("h3").text.strip()
|
64
|
+
|
65
|
+
# Extract collection frequency and day
|
66
|
+
details = collection.find("div", class_="detWrap").text.strip()
|
67
|
+
|
68
|
+
# Extract the next collection date
|
69
|
+
next_collection = details.split("Your next scheduled collection is ")[
|
70
|
+
1
|
71
|
+
].split(".")[0]
|
72
|
+
|
73
|
+
if next_collection.startswith("today"):
|
74
|
+
next_collection = next_collection.split("today, ")[1]
|
75
|
+
elif next_collection.startswith("tomorrow"):
|
76
|
+
next_collection = next_collection.split("tomorrow, ")[1]
|
77
|
+
|
78
|
+
dict_data = {
|
79
|
+
"type": service_name,
|
80
|
+
"collectionDate": datetime.strptime(
|
81
|
+
next_collection, "%A, %d %B %Y"
|
82
|
+
).strftime(date_format),
|
83
|
+
}
|
84
|
+
bindata["bins"].append(dict_data)
|
85
|
+
|
86
|
+
bindata["bins"].sort(
|
87
|
+
key=lambda x: datetime.strptime(x.get("collectionDate"), "%d/%m/%Y")
|
88
|
+
)
|
89
|
+
|
90
|
+
return bindata
|