uk_bin_collection 0.98.2__tar.gz → 0.98.4__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (217) hide show
  1. {uk_bin_collection-0.98.2 → uk_bin_collection-0.98.4}/PKG-INFO +1 -1
  2. {uk_bin_collection-0.98.2 → uk_bin_collection-0.98.4}/pyproject.toml +1 -1
  3. {uk_bin_collection-0.98.2 → uk_bin_collection-0.98.4}/uk_bin_collection/tests/input.json +3 -3
  4. {uk_bin_collection-0.98.2 → uk_bin_collection-0.98.4}/uk_bin_collection/uk_bin_collection/councils/BradfordMDC.py +1 -1
  5. {uk_bin_collection-0.98.2 → uk_bin_collection-0.98.4}/uk_bin_collection/uk_bin_collection/councils/EastRidingCouncil.py +2 -2
  6. {uk_bin_collection-0.98.2 → uk_bin_collection-0.98.4}/uk_bin_collection/uk_bin_collection/councils/GlasgowCityCouncil.py +15 -16
  7. uk_bin_collection-0.98.4/uk_bin_collection/uk_bin_collection/councils/ManchesterCityCouncil.py +90 -0
  8. {uk_bin_collection-0.98.2 → uk_bin_collection-0.98.4}/uk_bin_collection/uk_bin_collection/councils/NeathPortTalbotCouncil.py +1 -0
  9. {uk_bin_collection-0.98.2 → uk_bin_collection-0.98.4}/uk_bin_collection/uk_bin_collection/councils/UttlesfordDistrictCouncil.py +3 -3
  10. {uk_bin_collection-0.98.2 → uk_bin_collection-0.98.4}/uk_bin_collection/uk_bin_collection/councils/ValeofWhiteHorseCouncil.py +2 -5
  11. {uk_bin_collection-0.98.2 → uk_bin_collection-0.98.4}/uk_bin_collection/uk_bin_collection/councils/WestSuffolkCouncil.py +0 -1
  12. uk_bin_collection-0.98.2/uk_bin_collection/uk_bin_collection/councils/ManchesterCityCouncil.py +0 -107
  13. {uk_bin_collection-0.98.2 → uk_bin_collection-0.98.4}/LICENSE +0 -0
  14. {uk_bin_collection-0.98.2 → uk_bin_collection-0.98.4}/README.md +0 -0
  15. {uk_bin_collection-0.98.2 → uk_bin_collection-0.98.4}/uk_bin_collection/README.rst +0 -0
  16. {uk_bin_collection-0.98.2 → uk_bin_collection-0.98.4}/uk_bin_collection/tests/council_feature_input_parity.py +0 -0
  17. {uk_bin_collection-0.98.2 → uk_bin_collection-0.98.4}/uk_bin_collection/tests/features/environment.py +0 -0
  18. {uk_bin_collection-0.98.2 → uk_bin_collection-0.98.4}/uk_bin_collection/tests/features/validate_council_outputs.feature +0 -0
  19. {uk_bin_collection-0.98.2 → uk_bin_collection-0.98.4}/uk_bin_collection/tests/output.schema +0 -0
  20. {uk_bin_collection-0.98.2 → uk_bin_collection-0.98.4}/uk_bin_collection/tests/step_defs/step_helpers/file_handler.py +0 -0
  21. {uk_bin_collection-0.98.2 → uk_bin_collection-0.98.4}/uk_bin_collection/tests/step_defs/test_validate_council.py +0 -0
  22. {uk_bin_collection-0.98.2 → uk_bin_collection-0.98.4}/uk_bin_collection/tests/test_collect_data.py +0 -0
  23. {uk_bin_collection-0.98.2 → uk_bin_collection-0.98.4}/uk_bin_collection/tests/test_common_functions.py +0 -0
  24. {uk_bin_collection-0.98.2 → uk_bin_collection-0.98.4}/uk_bin_collection/tests/test_conftest.py +0 -0
  25. {uk_bin_collection-0.98.2 → uk_bin_collection-0.98.4}/uk_bin_collection/tests/test_get_data.py +0 -0
  26. {uk_bin_collection-0.98.2 → uk_bin_collection-0.98.4}/uk_bin_collection/uk_bin_collection/collect_data.py +0 -0
  27. {uk_bin_collection-0.98.2 → uk_bin_collection-0.98.4}/uk_bin_collection/uk_bin_collection/common.py +0 -0
  28. {uk_bin_collection-0.98.2 → uk_bin_collection-0.98.4}/uk_bin_collection/uk_bin_collection/councils/AdurAndWorthingCouncils.py +0 -0
  29. {uk_bin_collection-0.98.2 → uk_bin_collection-0.98.4}/uk_bin_collection/uk_bin_collection/councils/ArmaghBanbridgeCraigavonCouncil.py +0 -0
  30. {uk_bin_collection-0.98.2 → uk_bin_collection-0.98.4}/uk_bin_collection/uk_bin_collection/councils/ArunCouncil.py +0 -0
  31. {uk_bin_collection-0.98.2 → uk_bin_collection-0.98.4}/uk_bin_collection/uk_bin_collection/councils/AylesburyValeCouncil.py +0 -0
  32. {uk_bin_collection-0.98.2 → uk_bin_collection-0.98.4}/uk_bin_collection/uk_bin_collection/councils/BCPCouncil.py +0 -0
  33. {uk_bin_collection-0.98.2 → uk_bin_collection-0.98.4}/uk_bin_collection/uk_bin_collection/councils/BarnetCouncil.py +0 -0
  34. {uk_bin_collection-0.98.2 → uk_bin_collection-0.98.4}/uk_bin_collection/uk_bin_collection/councils/BarnsleyMBCouncil.py +0 -0
  35. {uk_bin_collection-0.98.2 → uk_bin_collection-0.98.4}/uk_bin_collection/uk_bin_collection/councils/BasildonCouncil.py +0 -0
  36. {uk_bin_collection-0.98.2 → uk_bin_collection-0.98.4}/uk_bin_collection/uk_bin_collection/councils/BasingstokeCouncil.py +0 -0
  37. {uk_bin_collection-0.98.2 → uk_bin_collection-0.98.4}/uk_bin_collection/uk_bin_collection/councils/BathAndNorthEastSomersetCouncil.py +0 -0
  38. {uk_bin_collection-0.98.2 → uk_bin_collection-0.98.4}/uk_bin_collection/uk_bin_collection/councils/BedfordBoroughCouncil.py +0 -0
  39. {uk_bin_collection-0.98.2 → uk_bin_collection-0.98.4}/uk_bin_collection/uk_bin_collection/councils/BedfordshireCouncil.py +0 -0
  40. {uk_bin_collection-0.98.2 → uk_bin_collection-0.98.4}/uk_bin_collection/uk_bin_collection/councils/BelfastCityCouncil.py +0 -0
  41. {uk_bin_collection-0.98.2 → uk_bin_collection-0.98.4}/uk_bin_collection/uk_bin_collection/councils/BexleyCouncil.py +0 -0
  42. {uk_bin_collection-0.98.2 → uk_bin_collection-0.98.4}/uk_bin_collection/uk_bin_collection/councils/BirminghamCityCouncil.py +0 -0
  43. {uk_bin_collection-0.98.2 → uk_bin_collection-0.98.4}/uk_bin_collection/uk_bin_collection/councils/BlackburnCouncil.py +0 -0
  44. {uk_bin_collection-0.98.2 → uk_bin_collection-0.98.4}/uk_bin_collection/uk_bin_collection/councils/BoltonCouncil.py +0 -0
  45. {uk_bin_collection-0.98.2 → uk_bin_collection-0.98.4}/uk_bin_collection/uk_bin_collection/councils/BracknellForestCouncil.py +0 -0
  46. {uk_bin_collection-0.98.2 → uk_bin_collection-0.98.4}/uk_bin_collection/uk_bin_collection/councils/BrightonandHoveCityCouncil.py +0 -0
  47. {uk_bin_collection-0.98.2 → uk_bin_collection-0.98.4}/uk_bin_collection/uk_bin_collection/councils/BristolCityCouncil.py +0 -0
  48. {uk_bin_collection-0.98.2 → uk_bin_collection-0.98.4}/uk_bin_collection/uk_bin_collection/councils/BromleyBoroughCouncil.py +0 -0
  49. {uk_bin_collection-0.98.2 → uk_bin_collection-0.98.4}/uk_bin_collection/uk_bin_collection/councils/BroxtoweBoroughCouncil.py +0 -0
  50. {uk_bin_collection-0.98.2 → uk_bin_collection-0.98.4}/uk_bin_collection/uk_bin_collection/councils/BuckinghamshireCouncil.py +0 -0
  51. {uk_bin_collection-0.98.2 → uk_bin_collection-0.98.4}/uk_bin_collection/uk_bin_collection/councils/BuryCouncil.py +0 -0
  52. {uk_bin_collection-0.98.2 → uk_bin_collection-0.98.4}/uk_bin_collection/uk_bin_collection/councils/CalderdaleCouncil.py +0 -0
  53. {uk_bin_collection-0.98.2 → uk_bin_collection-0.98.4}/uk_bin_collection/uk_bin_collection/councils/CannockChaseDistrictCouncil.py +0 -0
  54. {uk_bin_collection-0.98.2 → uk_bin_collection-0.98.4}/uk_bin_collection/uk_bin_collection/councils/CardiffCouncil.py +0 -0
  55. {uk_bin_collection-0.98.2 → uk_bin_collection-0.98.4}/uk_bin_collection/uk_bin_collection/councils/CastlepointDistrictCouncil.py +0 -0
  56. {uk_bin_collection-0.98.2 → uk_bin_collection-0.98.4}/uk_bin_collection/uk_bin_collection/councils/CharnwoodBoroughCouncil.py +0 -0
  57. {uk_bin_collection-0.98.2 → uk_bin_collection-0.98.4}/uk_bin_collection/uk_bin_collection/councils/ChelmsfordCityCouncil.py +0 -0
  58. {uk_bin_collection-0.98.2 → uk_bin_collection-0.98.4}/uk_bin_collection/uk_bin_collection/councils/CheshireEastCouncil.py +0 -0
  59. {uk_bin_collection-0.98.2 → uk_bin_collection-0.98.4}/uk_bin_collection/uk_bin_collection/councils/CheshireWestAndChesterCouncil.py +0 -0
  60. {uk_bin_collection-0.98.2 → uk_bin_collection-0.98.4}/uk_bin_collection/uk_bin_collection/councils/ChichesterDistrictCouncil.py +0 -0
  61. {uk_bin_collection-0.98.2 → uk_bin_collection-0.98.4}/uk_bin_collection/uk_bin_collection/councils/ChorleyCouncil.py +0 -0
  62. {uk_bin_collection-0.98.2 → uk_bin_collection-0.98.4}/uk_bin_collection/uk_bin_collection/councils/ColchesterCityCouncil.py +0 -0
  63. {uk_bin_collection-0.98.2 → uk_bin_collection-0.98.4}/uk_bin_collection/uk_bin_collection/councils/ConwyCountyBorough.py +0 -0
  64. {uk_bin_collection-0.98.2 → uk_bin_collection-0.98.4}/uk_bin_collection/uk_bin_collection/councils/CornwallCouncil.py +0 -0
  65. {uk_bin_collection-0.98.2 → uk_bin_collection-0.98.4}/uk_bin_collection/uk_bin_collection/councils/CrawleyBoroughCouncil.py +0 -0
  66. {uk_bin_collection-0.98.2 → uk_bin_collection-0.98.4}/uk_bin_collection/uk_bin_collection/councils/CroydonCouncil.py +0 -0
  67. {uk_bin_collection-0.98.2 → uk_bin_collection-0.98.4}/uk_bin_collection/uk_bin_collection/councils/DacorumBoroughCouncil.py +0 -0
  68. {uk_bin_collection-0.98.2 → uk_bin_collection-0.98.4}/uk_bin_collection/uk_bin_collection/councils/DartfordBoroughCouncil.py +0 -0
  69. {uk_bin_collection-0.98.2 → uk_bin_collection-0.98.4}/uk_bin_collection/uk_bin_collection/councils/DerbyshireDalesDistrictCouncil.py +0 -0
  70. {uk_bin_collection-0.98.2 → uk_bin_collection-0.98.4}/uk_bin_collection/uk_bin_collection/councils/DoncasterCouncil.py +0 -0
  71. {uk_bin_collection-0.98.2 → uk_bin_collection-0.98.4}/uk_bin_collection/uk_bin_collection/councils/DorsetCouncil.py +0 -0
  72. {uk_bin_collection-0.98.2 → uk_bin_collection-0.98.4}/uk_bin_collection/uk_bin_collection/councils/DoverDistrictCouncil.py +0 -0
  73. {uk_bin_collection-0.98.2 → uk_bin_collection-0.98.4}/uk_bin_collection/uk_bin_collection/councils/DurhamCouncil.py +0 -0
  74. {uk_bin_collection-0.98.2 → uk_bin_collection-0.98.4}/uk_bin_collection/uk_bin_collection/councils/EalingCouncil.py +0 -0
  75. {uk_bin_collection-0.98.2 → uk_bin_collection-0.98.4}/uk_bin_collection/uk_bin_collection/councils/EastCambridgeshireCouncil.py +0 -0
  76. {uk_bin_collection-0.98.2 → uk_bin_collection-0.98.4}/uk_bin_collection/uk_bin_collection/councils/EastDevonDC.py +0 -0
  77. {uk_bin_collection-0.98.2 → uk_bin_collection-0.98.4}/uk_bin_collection/uk_bin_collection/councils/EastLindseyDistrictCouncil.py +0 -0
  78. {uk_bin_collection-0.98.2 → uk_bin_collection-0.98.4}/uk_bin_collection/uk_bin_collection/councils/EastRenfrewshireCouncil.py +0 -0
  79. {uk_bin_collection-0.98.2 → uk_bin_collection-0.98.4}/uk_bin_collection/uk_bin_collection/councils/EastSuffolkCouncil.py +0 -0
  80. {uk_bin_collection-0.98.2 → uk_bin_collection-0.98.4}/uk_bin_collection/uk_bin_collection/councils/EastleighBoroughCouncil.py +0 -0
  81. {uk_bin_collection-0.98.2 → uk_bin_collection-0.98.4}/uk_bin_collection/uk_bin_collection/councils/ElmbridgeBoroughCouncil.py +0 -0
  82. {uk_bin_collection-0.98.2 → uk_bin_collection-0.98.4}/uk_bin_collection/uk_bin_collection/councils/EnfieldCouncil.py +0 -0
  83. {uk_bin_collection-0.98.2 → uk_bin_collection-0.98.4}/uk_bin_collection/uk_bin_collection/councils/EnvironmentFirst.py +0 -0
  84. {uk_bin_collection-0.98.2 → uk_bin_collection-0.98.4}/uk_bin_collection/uk_bin_collection/councils/EppingForestDistrictCouncil.py +0 -0
  85. {uk_bin_collection-0.98.2 → uk_bin_collection-0.98.4}/uk_bin_collection/uk_bin_collection/councils/ErewashBoroughCouncil.py +0 -0
  86. {uk_bin_collection-0.98.2 → uk_bin_collection-0.98.4}/uk_bin_collection/uk_bin_collection/councils/FalkirkCouncil.py +0 -0
  87. {uk_bin_collection-0.98.2 → uk_bin_collection-0.98.4}/uk_bin_collection/uk_bin_collection/councils/FarehamBoroughCouncil.py +0 -0
  88. {uk_bin_collection-0.98.2 → uk_bin_collection-0.98.4}/uk_bin_collection/uk_bin_collection/councils/FenlandDistrictCouncil.py +0 -0
  89. {uk_bin_collection-0.98.2 → uk_bin_collection-0.98.4}/uk_bin_collection/uk_bin_collection/councils/ForestOfDeanDistrictCouncil.py +0 -0
  90. {uk_bin_collection-0.98.2 → uk_bin_collection-0.98.4}/uk_bin_collection/uk_bin_collection/councils/GatesheadCouncil.py +0 -0
  91. {uk_bin_collection-0.98.2 → uk_bin_collection-0.98.4}/uk_bin_collection/uk_bin_collection/councils/GedlingBoroughCouncil.py +0 -0
  92. {uk_bin_collection-0.98.2 → uk_bin_collection-0.98.4}/uk_bin_collection/uk_bin_collection/councils/GloucesterCityCouncil.py +0 -0
  93. {uk_bin_collection-0.98.2 → uk_bin_collection-0.98.4}/uk_bin_collection/uk_bin_collection/councils/GuildfordCouncil.py +0 -0
  94. {uk_bin_collection-0.98.2 → uk_bin_collection-0.98.4}/uk_bin_collection/uk_bin_collection/councils/HaltonBoroughCouncil.py +0 -0
  95. {uk_bin_collection-0.98.2 → uk_bin_collection-0.98.4}/uk_bin_collection/uk_bin_collection/councils/HaringeyCouncil.py +0 -0
  96. {uk_bin_collection-0.98.2 → uk_bin_collection-0.98.4}/uk_bin_collection/uk_bin_collection/councils/HarrogateBoroughCouncil.py +0 -0
  97. {uk_bin_collection-0.98.2 → uk_bin_collection-0.98.4}/uk_bin_collection/uk_bin_collection/councils/HighPeakCouncil.py +0 -0
  98. {uk_bin_collection-0.98.2 → uk_bin_collection-0.98.4}/uk_bin_collection/uk_bin_collection/councils/HighlandCouncil.py +0 -0
  99. {uk_bin_collection-0.98.2 → uk_bin_collection-0.98.4}/uk_bin_collection/uk_bin_collection/councils/HounslowCouncil.py +0 -0
  100. {uk_bin_collection-0.98.2 → uk_bin_collection-0.98.4}/uk_bin_collection/uk_bin_collection/councils/HullCityCouncil.py +0 -0
  101. {uk_bin_collection-0.98.2 → uk_bin_collection-0.98.4}/uk_bin_collection/uk_bin_collection/councils/HuntingdonDistrictCouncil.py +0 -0
  102. {uk_bin_collection-0.98.2 → uk_bin_collection-0.98.4}/uk_bin_collection/uk_bin_collection/councils/IslingtonCouncil.py +0 -0
  103. {uk_bin_collection-0.98.2 → uk_bin_collection-0.98.4}/uk_bin_collection/uk_bin_collection/councils/KingstonUponThamesCouncil.py +0 -0
  104. {uk_bin_collection-0.98.2 → uk_bin_collection-0.98.4}/uk_bin_collection/uk_bin_collection/councils/KirkleesCouncil.py +0 -0
  105. {uk_bin_collection-0.98.2 → uk_bin_collection-0.98.4}/uk_bin_collection/uk_bin_collection/councils/KnowsleyMBCouncil.py +0 -0
  106. {uk_bin_collection-0.98.2 → uk_bin_collection-0.98.4}/uk_bin_collection/uk_bin_collection/councils/LancasterCityCouncil.py +0 -0
  107. {uk_bin_collection-0.98.2 → uk_bin_collection-0.98.4}/uk_bin_collection/uk_bin_collection/councils/LeedsCityCouncil.py +0 -0
  108. {uk_bin_collection-0.98.2 → uk_bin_collection-0.98.4}/uk_bin_collection/uk_bin_collection/councils/LichfieldDistrictCouncil.py +0 -0
  109. {uk_bin_collection-0.98.2 → uk_bin_collection-0.98.4}/uk_bin_collection/uk_bin_collection/councils/LisburnCastlereaghCityCouncil.py +0 -0
  110. {uk_bin_collection-0.98.2 → uk_bin_collection-0.98.4}/uk_bin_collection/uk_bin_collection/councils/LiverpoolCityCouncil.py +0 -0
  111. {uk_bin_collection-0.98.2 → uk_bin_collection-0.98.4}/uk_bin_collection/uk_bin_collection/councils/LondonBoroughEaling.py +0 -0
  112. {uk_bin_collection-0.98.2 → uk_bin_collection-0.98.4}/uk_bin_collection/uk_bin_collection/councils/LondonBoroughHarrow.py +0 -0
  113. {uk_bin_collection-0.98.2 → uk_bin_collection-0.98.4}/uk_bin_collection/uk_bin_collection/councils/LondonBoroughHounslow.py +0 -0
  114. {uk_bin_collection-0.98.2 → uk_bin_collection-0.98.4}/uk_bin_collection/uk_bin_collection/councils/LondonBoroughLambeth.py +0 -0
  115. {uk_bin_collection-0.98.2 → uk_bin_collection-0.98.4}/uk_bin_collection/uk_bin_collection/councils/LondonBoroughRedbridge.py +0 -0
  116. {uk_bin_collection-0.98.2 → uk_bin_collection-0.98.4}/uk_bin_collection/uk_bin_collection/councils/MaldonDistrictCouncil.py +0 -0
  117. {uk_bin_collection-0.98.2 → uk_bin_collection-0.98.4}/uk_bin_collection/uk_bin_collection/councils/MalvernHillsDC.py +0 -0
  118. {uk_bin_collection-0.98.2 → uk_bin_collection-0.98.4}/uk_bin_collection/uk_bin_collection/councils/MansfieldDistrictCouncil.py +0 -0
  119. {uk_bin_collection-0.98.2 → uk_bin_collection-0.98.4}/uk_bin_collection/uk_bin_collection/councils/MertonCouncil.py +0 -0
  120. {uk_bin_collection-0.98.2 → uk_bin_collection-0.98.4}/uk_bin_collection/uk_bin_collection/councils/MidAndEastAntrimBoroughCouncil.py +0 -0
  121. {uk_bin_collection-0.98.2 → uk_bin_collection-0.98.4}/uk_bin_collection/uk_bin_collection/councils/MidSussexDistrictCouncil.py +0 -0
  122. {uk_bin_collection-0.98.2 → uk_bin_collection-0.98.4}/uk_bin_collection/uk_bin_collection/councils/MiltonKeynesCityCouncil.py +0 -0
  123. {uk_bin_collection-0.98.2 → uk_bin_collection-0.98.4}/uk_bin_collection/uk_bin_collection/councils/MoleValleyDistrictCouncil.py +0 -0
  124. {uk_bin_collection-0.98.2 → uk_bin_collection-0.98.4}/uk_bin_collection/uk_bin_collection/councils/NewForestCouncil.py +0 -0
  125. {uk_bin_collection-0.98.2 → uk_bin_collection-0.98.4}/uk_bin_collection/uk_bin_collection/councils/NewarkAndSherwoodDC.py +0 -0
  126. {uk_bin_collection-0.98.2 → uk_bin_collection-0.98.4}/uk_bin_collection/uk_bin_collection/councils/NewcastleCityCouncil.py +0 -0
  127. {uk_bin_collection-0.98.2 → uk_bin_collection-0.98.4}/uk_bin_collection/uk_bin_collection/councils/NewhamCouncil.py +0 -0
  128. {uk_bin_collection-0.98.2 → uk_bin_collection-0.98.4}/uk_bin_collection/uk_bin_collection/councils/NewportCityCouncil.py +0 -0
  129. {uk_bin_collection-0.98.2 → uk_bin_collection-0.98.4}/uk_bin_collection/uk_bin_collection/councils/NorthAyrshireCouncil.py +0 -0
  130. {uk_bin_collection-0.98.2 → uk_bin_collection-0.98.4}/uk_bin_collection/uk_bin_collection/councils/NorthEastDerbyshireDistrictCouncil.py +0 -0
  131. {uk_bin_collection-0.98.2 → uk_bin_collection-0.98.4}/uk_bin_collection/uk_bin_collection/councils/NorthEastLincs.py +0 -0
  132. {uk_bin_collection-0.98.2 → uk_bin_collection-0.98.4}/uk_bin_collection/uk_bin_collection/councils/NorthKestevenDistrictCouncil.py +0 -0
  133. {uk_bin_collection-0.98.2 → uk_bin_collection-0.98.4}/uk_bin_collection/uk_bin_collection/councils/NorthLanarkshireCouncil.py +0 -0
  134. {uk_bin_collection-0.98.2 → uk_bin_collection-0.98.4}/uk_bin_collection/uk_bin_collection/councils/NorthLincolnshireCouncil.py +0 -0
  135. {uk_bin_collection-0.98.2 → uk_bin_collection-0.98.4}/uk_bin_collection/uk_bin_collection/councils/NorthNorfolkDistrictCouncil.py +0 -0
  136. {uk_bin_collection-0.98.2 → uk_bin_collection-0.98.4}/uk_bin_collection/uk_bin_collection/councils/NorthNorthamptonshireCouncil.py +0 -0
  137. {uk_bin_collection-0.98.2 → uk_bin_collection-0.98.4}/uk_bin_collection/uk_bin_collection/councils/NorthSomersetCouncil.py +0 -0
  138. {uk_bin_collection-0.98.2 → uk_bin_collection-0.98.4}/uk_bin_collection/uk_bin_collection/councils/NorthTynesideCouncil.py +0 -0
  139. {uk_bin_collection-0.98.2 → uk_bin_collection-0.98.4}/uk_bin_collection/uk_bin_collection/councils/NorthWestLeicestershire.py +0 -0
  140. {uk_bin_collection-0.98.2 → uk_bin_collection-0.98.4}/uk_bin_collection/uk_bin_collection/councils/NorthYorkshire.py +0 -0
  141. {uk_bin_collection-0.98.2 → uk_bin_collection-0.98.4}/uk_bin_collection/uk_bin_collection/councils/NorthumberlandCouncil.py +0 -0
  142. {uk_bin_collection-0.98.2 → uk_bin_collection-0.98.4}/uk_bin_collection/uk_bin_collection/councils/NottinghamCityCouncil.py +0 -0
  143. {uk_bin_collection-0.98.2 → uk_bin_collection-0.98.4}/uk_bin_collection/uk_bin_collection/councils/OldhamCouncil.py +0 -0
  144. {uk_bin_collection-0.98.2 → uk_bin_collection-0.98.4}/uk_bin_collection/uk_bin_collection/councils/PortsmouthCityCouncil.py +0 -0
  145. {uk_bin_collection-0.98.2 → uk_bin_collection-0.98.4}/uk_bin_collection/uk_bin_collection/councils/PrestonCityCouncil.py +0 -0
  146. {uk_bin_collection-0.98.2 → uk_bin_collection-0.98.4}/uk_bin_collection/uk_bin_collection/councils/ReadingBoroughCouncil.py +0 -0
  147. {uk_bin_collection-0.98.2 → uk_bin_collection-0.98.4}/uk_bin_collection/uk_bin_collection/councils/ReigateAndBansteadBoroughCouncil.py +0 -0
  148. {uk_bin_collection-0.98.2 → uk_bin_collection-0.98.4}/uk_bin_collection/uk_bin_collection/councils/RenfrewshireCouncil.py +0 -0
  149. {uk_bin_collection-0.98.2 → uk_bin_collection-0.98.4}/uk_bin_collection/uk_bin_collection/councils/RhonddaCynonTaffCouncil.py +0 -0
  150. {uk_bin_collection-0.98.2 → uk_bin_collection-0.98.4}/uk_bin_collection/uk_bin_collection/councils/RochdaleCouncil.py +0 -0
  151. {uk_bin_collection-0.98.2 → uk_bin_collection-0.98.4}/uk_bin_collection/uk_bin_collection/councils/RochfordCouncil.py +0 -0
  152. {uk_bin_collection-0.98.2 → uk_bin_collection-0.98.4}/uk_bin_collection/uk_bin_collection/councils/RotherhamCouncil.py +0 -0
  153. {uk_bin_collection-0.98.2 → uk_bin_collection-0.98.4}/uk_bin_collection/uk_bin_collection/councils/RugbyBoroughCouncil.py +0 -0
  154. {uk_bin_collection-0.98.2 → uk_bin_collection-0.98.4}/uk_bin_collection/uk_bin_collection/councils/RushcliffeBoroughCouncil.py +0 -0
  155. {uk_bin_collection-0.98.2 → uk_bin_collection-0.98.4}/uk_bin_collection/uk_bin_collection/councils/RushmoorCouncil.py +0 -0
  156. {uk_bin_collection-0.98.2 → uk_bin_collection-0.98.4}/uk_bin_collection/uk_bin_collection/councils/SalfordCityCouncil.py +0 -0
  157. {uk_bin_collection-0.98.2 → uk_bin_collection-0.98.4}/uk_bin_collection/uk_bin_collection/councils/SevenoaksDistrictCouncil.py +0 -0
  158. {uk_bin_collection-0.98.2 → uk_bin_collection-0.98.4}/uk_bin_collection/uk_bin_collection/councils/SheffieldCityCouncil.py +0 -0
  159. {uk_bin_collection-0.98.2 → uk_bin_collection-0.98.4}/uk_bin_collection/uk_bin_collection/councils/ShropshireCouncil.py +0 -0
  160. {uk_bin_collection-0.98.2 → uk_bin_collection-0.98.4}/uk_bin_collection/uk_bin_collection/councils/SolihullCouncil.py +0 -0
  161. {uk_bin_collection-0.98.2 → uk_bin_collection-0.98.4}/uk_bin_collection/uk_bin_collection/councils/SomersetCouncil.py +0 -0
  162. {uk_bin_collection-0.98.2 → uk_bin_collection-0.98.4}/uk_bin_collection/uk_bin_collection/councils/SouthAyrshireCouncil.py +0 -0
  163. {uk_bin_collection-0.98.2 → uk_bin_collection-0.98.4}/uk_bin_collection/uk_bin_collection/councils/SouthCambridgeshireCouncil.py +0 -0
  164. {uk_bin_collection-0.98.2 → uk_bin_collection-0.98.4}/uk_bin_collection/uk_bin_collection/councils/SouthDerbyshireDistrictCouncil.py +0 -0
  165. {uk_bin_collection-0.98.2 → uk_bin_collection-0.98.4}/uk_bin_collection/uk_bin_collection/councils/SouthGloucestershireCouncil.py +0 -0
  166. {uk_bin_collection-0.98.2 → uk_bin_collection-0.98.4}/uk_bin_collection/uk_bin_collection/councils/SouthKestevenDistrictCouncil.py +0 -0
  167. {uk_bin_collection-0.98.2 → uk_bin_collection-0.98.4}/uk_bin_collection/uk_bin_collection/councils/SouthLanarkshireCouncil.py +0 -0
  168. {uk_bin_collection-0.98.2 → uk_bin_collection-0.98.4}/uk_bin_collection/uk_bin_collection/councils/SouthNorfolkCouncil.py +0 -0
  169. {uk_bin_collection-0.98.2 → uk_bin_collection-0.98.4}/uk_bin_collection/uk_bin_collection/councils/SouthOxfordshireCouncil.py +0 -0
  170. {uk_bin_collection-0.98.2 → uk_bin_collection-0.98.4}/uk_bin_collection/uk_bin_collection/councils/SouthTynesideCouncil.py +0 -0
  171. {uk_bin_collection-0.98.2 → uk_bin_collection-0.98.4}/uk_bin_collection/uk_bin_collection/councils/SouthwarkCouncil.py +0 -0
  172. {uk_bin_collection-0.98.2 → uk_bin_collection-0.98.4}/uk_bin_collection/uk_bin_collection/councils/StAlbansCityAndDistrictCouncil.py +0 -0
  173. {uk_bin_collection-0.98.2 → uk_bin_collection-0.98.4}/uk_bin_collection/uk_bin_collection/councils/StHelensBC.py +0 -0
  174. {uk_bin_collection-0.98.2 → uk_bin_collection-0.98.4}/uk_bin_collection/uk_bin_collection/councils/StaffordBoroughCouncil.py +0 -0
  175. {uk_bin_collection-0.98.2 → uk_bin_collection-0.98.4}/uk_bin_collection/uk_bin_collection/councils/StaffordshireMoorlandsDistrictCouncil.py +0 -0
  176. {uk_bin_collection-0.98.2 → uk_bin_collection-0.98.4}/uk_bin_collection/uk_bin_collection/councils/StockportBoroughCouncil.py +0 -0
  177. {uk_bin_collection-0.98.2 → uk_bin_collection-0.98.4}/uk_bin_collection/uk_bin_collection/councils/StokeOnTrentCityCouncil.py +0 -0
  178. {uk_bin_collection-0.98.2 → uk_bin_collection-0.98.4}/uk_bin_collection/uk_bin_collection/councils/StratfordUponAvonCouncil.py +0 -0
  179. {uk_bin_collection-0.98.2 → uk_bin_collection-0.98.4}/uk_bin_collection/uk_bin_collection/councils/StroudDistrictCouncil.py +0 -0
  180. {uk_bin_collection-0.98.2 → uk_bin_collection-0.98.4}/uk_bin_collection/uk_bin_collection/councils/SunderlandCityCouncil.py +0 -0
  181. {uk_bin_collection-0.98.2 → uk_bin_collection-0.98.4}/uk_bin_collection/uk_bin_collection/councils/SwaleBoroughCouncil.py +0 -0
  182. {uk_bin_collection-0.98.2 → uk_bin_collection-0.98.4}/uk_bin_collection/uk_bin_collection/councils/SwanseaCouncil.py +0 -0
  183. {uk_bin_collection-0.98.2 → uk_bin_collection-0.98.4}/uk_bin_collection/uk_bin_collection/councils/TamesideMBCouncil.py +0 -0
  184. {uk_bin_collection-0.98.2 → uk_bin_collection-0.98.4}/uk_bin_collection/uk_bin_collection/councils/TandridgeDistrictCouncil.py +0 -0
  185. {uk_bin_collection-0.98.2 → uk_bin_collection-0.98.4}/uk_bin_collection/uk_bin_collection/councils/TelfordAndWrekinCouncil.py +0 -0
  186. {uk_bin_collection-0.98.2 → uk_bin_collection-0.98.4}/uk_bin_collection/uk_bin_collection/councils/TendringDistrictCouncil.py +0 -0
  187. {uk_bin_collection-0.98.2 → uk_bin_collection-0.98.4}/uk_bin_collection/uk_bin_collection/councils/TestValleyBoroughCouncil.py +0 -0
  188. {uk_bin_collection-0.98.2 → uk_bin_collection-0.98.4}/uk_bin_collection/uk_bin_collection/councils/ThreeRiversDistrictCouncil.py +0 -0
  189. {uk_bin_collection-0.98.2 → uk_bin_collection-0.98.4}/uk_bin_collection/uk_bin_collection/councils/TonbridgeAndMallingBC.py +0 -0
  190. {uk_bin_collection-0.98.2 → uk_bin_collection-0.98.4}/uk_bin_collection/uk_bin_collection/councils/TorbayCouncil.py +0 -0
  191. {uk_bin_collection-0.98.2 → uk_bin_collection-0.98.4}/uk_bin_collection/uk_bin_collection/councils/TorridgeDistrictCouncil.py +0 -0
  192. {uk_bin_collection-0.98.2 → uk_bin_collection-0.98.4}/uk_bin_collection/uk_bin_collection/councils/ValeofGlamorganCouncil.py +0 -0
  193. {uk_bin_collection-0.98.2 → uk_bin_collection-0.98.4}/uk_bin_collection/uk_bin_collection/councils/WakefieldCityCouncil.py +0 -0
  194. {uk_bin_collection-0.98.2 → uk_bin_collection-0.98.4}/uk_bin_collection/uk_bin_collection/councils/WalsallCouncil.py +0 -0
  195. {uk_bin_collection-0.98.2 → uk_bin_collection-0.98.4}/uk_bin_collection/uk_bin_collection/councils/WalthamForest.py +0 -0
  196. {uk_bin_collection-0.98.2 → uk_bin_collection-0.98.4}/uk_bin_collection/uk_bin_collection/councils/WarwickDistrictCouncil.py +0 -0
  197. {uk_bin_collection-0.98.2 → uk_bin_collection-0.98.4}/uk_bin_collection/uk_bin_collection/councils/WaverleyBoroughCouncil.py +0 -0
  198. {uk_bin_collection-0.98.2 → uk_bin_collection-0.98.4}/uk_bin_collection/uk_bin_collection/councils/WealdenDistrictCouncil.py +0 -0
  199. {uk_bin_collection-0.98.2 → uk_bin_collection-0.98.4}/uk_bin_collection/uk_bin_collection/councils/WelhatCouncil.py +0 -0
  200. {uk_bin_collection-0.98.2 → uk_bin_collection-0.98.4}/uk_bin_collection/uk_bin_collection/councils/WestBerkshireCouncil.py +0 -0
  201. {uk_bin_collection-0.98.2 → uk_bin_collection-0.98.4}/uk_bin_collection/uk_bin_collection/councils/WestLindseyDistrictCouncil.py +0 -0
  202. {uk_bin_collection-0.98.2 → uk_bin_collection-0.98.4}/uk_bin_collection/uk_bin_collection/councils/WestLothianCouncil.py +0 -0
  203. {uk_bin_collection-0.98.2 → uk_bin_collection-0.98.4}/uk_bin_collection/uk_bin_collection/councils/WestMorlandAndFurness.py +0 -0
  204. {uk_bin_collection-0.98.2 → uk_bin_collection-0.98.4}/uk_bin_collection/uk_bin_collection/councils/WestNorthamptonshireCouncil.py +0 -0
  205. {uk_bin_collection-0.98.2 → uk_bin_collection-0.98.4}/uk_bin_collection/uk_bin_collection/councils/WiganBoroughCouncil.py +0 -0
  206. {uk_bin_collection-0.98.2 → uk_bin_collection-0.98.4}/uk_bin_collection/uk_bin_collection/councils/WiltshireCouncil.py +0 -0
  207. {uk_bin_collection-0.98.2 → uk_bin_collection-0.98.4}/uk_bin_collection/uk_bin_collection/councils/WinchesterCityCouncil.py +0 -0
  208. {uk_bin_collection-0.98.2 → uk_bin_collection-0.98.4}/uk_bin_collection/uk_bin_collection/councils/WindsorAndMaidenheadCouncil.py +0 -0
  209. {uk_bin_collection-0.98.2 → uk_bin_collection-0.98.4}/uk_bin_collection/uk_bin_collection/councils/WirralCouncil.py +0 -0
  210. {uk_bin_collection-0.98.2 → uk_bin_collection-0.98.4}/uk_bin_collection/uk_bin_collection/councils/WokingBoroughCouncil.py +0 -0
  211. {uk_bin_collection-0.98.2 → uk_bin_collection-0.98.4}/uk_bin_collection/uk_bin_collection/councils/WokinghamBoroughCouncil.py +0 -0
  212. {uk_bin_collection-0.98.2 → uk_bin_collection-0.98.4}/uk_bin_collection/uk_bin_collection/councils/WychavonDistrictCouncil.py +0 -0
  213. {uk_bin_collection-0.98.2 → uk_bin_collection-0.98.4}/uk_bin_collection/uk_bin_collection/councils/WyreCouncil.py +0 -0
  214. {uk_bin_collection-0.98.2 → uk_bin_collection-0.98.4}/uk_bin_collection/uk_bin_collection/councils/YorkCouncil.py +0 -0
  215. {uk_bin_collection-0.98.2 → uk_bin_collection-0.98.4}/uk_bin_collection/uk_bin_collection/councils/council_class_template/councilclasstemplate.py +0 -0
  216. {uk_bin_collection-0.98.2 → uk_bin_collection-0.98.4}/uk_bin_collection/uk_bin_collection/create_new_council.py +0 -0
  217. {uk_bin_collection-0.98.2 → uk_bin_collection-0.98.4}/uk_bin_collection/uk_bin_collection/get_bin_data.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: uk_bin_collection
3
- Version: 0.98.2
3
+ Version: 0.98.4
4
4
  Summary: Python Lib to collect UK Bin Data
5
5
  Author: Robert Bradley
6
6
  Author-email: robbrad182@gmail.com
@@ -1,6 +1,6 @@
1
1
  [tool.poetry]
2
2
  name = "uk_bin_collection"
3
- version = "0.98.2"
3
+ version = "0.98.4"
4
4
  description = "Python Lib to collect UK Bin Data"
5
5
  readme = "README.md"
6
6
  authors = ["Robert Bradley <robbrad182@gmail.com>"]
@@ -132,7 +132,7 @@
132
132
  "BradfordMDC": {
133
133
  "custom_component_show_url_field": false,
134
134
  "skip_get_url": true,
135
- "uprn": "100052235823",
135
+ "uprn": "100051146921",
136
136
  "url": "https://onlineforms.bradford.gov.uk/ufs/collectiondates.eb",
137
137
  "wiki_name": "Bradford MDC",
138
138
  "wiki_note": "To get the UPRN, you will need to use [FindMyAddress](https://www.findmyaddress.co.uk/search). Post code isn't parsed by this script, but you can pass it in double quotes."
@@ -680,7 +680,7 @@
680
680
  },
681
681
  "ManchesterCityCouncil": {
682
682
  "skip_get_url": true,
683
- "uprn": "000077048077",
683
+ "uprn": "77127089",
684
684
  "url": "https://www.manchester.gov.uk/bincollections",
685
685
  "wiki_name": "Manchester City Council"
686
686
  },
@@ -691,7 +691,7 @@
691
691
  "wiki_name": "Mansfield District Council"
692
692
  },
693
693
  "MertonCouncil": {
694
- "url": "https://myneighbourhood.merton.gov.uk/Wasteservices/WasteServices.aspx?ID=28298025",
694
+ "url": "https://myneighbourhood.merton.gov.uk/wasteservices/WasteServices.aspx?ID=25851371",
695
695
  "wiki_command_url_override": "https://myneighbourhood.merton.gov.uk/Wasteservices/WasteServices.aspx?ID=XXXXXXXX",
696
696
  "wiki_name": "Merton Council",
697
697
  "wiki_note": "Follow the instructions [here](https://myneighbourhood.merton.gov.uk/Wasteservices/WasteServicesSearch.aspx) until you get the \"Your recycling and rubbish collection days\" page then copy the URL and replace the URL in the command (the Address parameter is optional)."
@@ -1,5 +1,6 @@
1
1
  import requests
2
2
  from bs4 import BeautifulSoup
3
+
3
4
  from uk_bin_collection.uk_bin_collection.common import *
4
5
  from uk_bin_collection.uk_bin_collection.get_bin_data import AbstractGetBinDataClass
5
6
 
@@ -92,7 +93,6 @@ class CouncilClass(AbstractGetBinDataClass):
92
93
  dict_data = {
93
94
  "type": bin_type,
94
95
  "collectionDate": bin_date,
95
- "colour": bin_colour,
96
96
  }
97
97
  data["bins"].append(dict_data)
98
98
 
@@ -29,7 +29,7 @@ class CouncilClass(AbstractGetBinDataClass):
29
29
  headless = kwargs.get("headless")
30
30
 
31
31
  # Create Selenium webdriver
32
- page = f"https://www.eastriding.gov.uk/environment/bins-rubbish-recycling/bins-and-collections/bin-collection-dates/"
32
+ page = "https://www.eastriding.gov.uk/environment/bins-rubbish-recycling/bins-and-collections/bin-collection-dates/#"
33
33
 
34
34
  driver = create_webdriver(web_driver, headless, None, __name__)
35
35
  driver.get(page)
@@ -52,7 +52,7 @@ class CouncilClass(AbstractGetBinDataClass):
52
52
 
53
53
  expand_postcode_box = wait.until(
54
54
  EC.element_to_be_clickable(
55
- (By.ID, "when-and-where-should-i-put-my-bin-out")
55
+ (By.XPATH, '//a[contains(text(), "Open all")]')
56
56
  )
57
57
  )
58
58
 
@@ -1,4 +1,5 @@
1
1
  from bs4 import BeautifulSoup
2
+
2
3
  from uk_bin_collection.uk_bin_collection.common import *
3
4
  from uk_bin_collection.uk_bin_collection.get_bin_data import AbstractGetBinDataClass
4
5
 
@@ -18,36 +19,34 @@ class CouncilClass(AbstractGetBinDataClass):
18
19
  # Declare an empty dict for data, and pair icon source URLs with their respective bin type
19
20
  data = {"bins": []}
20
21
  bin_types = {
21
- "../images/bins/cal_blue.png": "Mixed recycling",
22
- "../images/bins/cal_green.png": "General waste",
23
- "../images/bins/cal_grey.png": "Food waste",
24
- "../images/bins/cal_brown.png": "Organic waste",
25
- "../images/bins/cal_purple.png": "Glass",
26
- "../images/bins/cal_ash.png": "Ash bin",
22
+ "../Images/Bins/blueBin.gif": "Mixed recycling",
23
+ "../Images/Bins/greenBin.gif": "General waste",
24
+ "../Images/Bins/greyBin.gif": "Food waste",
25
+ "../Images/Bins/brownBin.gif": "Organic waste",
26
+ "../Images/Bins/purpleBin.gif": "Glass",
27
+ "../Images/Bins/ashBin.gif": "Ash bin",
27
28
  }
28
29
 
29
30
  # Find the page body with all the calendars
30
- body = soup.find("div", {"id": "printArticle"})
31
- cal_year = datetime.strptime(soup.select("#Year")[0].text.strip(), "%Y").year
31
+ body = soup.find("div", {"id": "Application_ctl00"})
32
32
  calendars = body.find_all_next("table", {"title": "Calendar"})
33
-
34
33
  # For each calendar grid, get the month and all icons within it. We only take icons with alt text, as this
35
34
  # includes the bin type while excluding spacers
36
35
  for item in calendars:
37
- cal_month = datetime.strptime(item.find_next("td").text.strip(), "%B").month
38
- icons = item.find_all("img", alt=True)
39
-
36
+ icons = item.find_all("img")
40
37
  # For each icon, get the day box, so we can parse the correct day number and make a datetime
41
38
  for icon in icons:
42
- cal_item = icon.find_parent().find_parent().find_parent().contents
43
- cal_day = datetime.strptime(cal_item[1].text.strip(), "%d").day
44
- bin_date = datetime(cal_year, cal_month, cal_day)
39
+ cal_item = icon.find_parent().find_parent()
40
+ bin_date = datetime.strptime(
41
+ cal_item["title"],
42
+ "%A, %d %B %Y",
43
+ )
45
44
 
46
45
  # If the collection date is in the future, we want the date. Select the correct type, add the new
47
46
  # datetime, then add to the list
48
47
  if datetime.now() <= bin_date:
49
48
  dict_data = {
50
- "type": bin_types.get(icon["src"].lower()),
49
+ "type": bin_types.get(icon["src"]),
51
50
  "collectionDate": bin_date.strftime(date_format),
52
51
  }
53
52
  data["bins"].append(dict_data)
@@ -0,0 +1,90 @@
1
+ from datetime import datetime
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
+ 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
+ # Get and check UPRN
19
+ user_uprn = kwargs.get("uprn")
20
+ check_uprn(user_uprn)
21
+ bindata = {"bins": []}
22
+
23
+ COLLECTION_MAP = {
24
+ "ahtm_dates_black_bin": "Black bin",
25
+ "ahtm_dates_brown_commingled_bin": "Brown bin",
26
+ "ahtm_dates_blue_pulpable_bin": "Blue bin",
27
+ "ahtm_dates_green_organic_bin": "Green Bin",
28
+ }
29
+
30
+ API_URL = "https://manchester.form.uk.empro.verintcloudservices.com/api/custom?action=bin_checker-get_bin_col_info&actionedby=_KDF_custom&loadform=true&access=citizen&locale=en"
31
+ AUTH_URL = "https://manchester.form.uk.empro.verintcloudservices.com/api/citizen?archived=Y&preview=false&locale=en"
32
+ AUTH_KEY = "Authorization"
33
+
34
+ r = requests.get(AUTH_URL)
35
+ r.raise_for_status()
36
+ auth_token = r.headers[AUTH_KEY]
37
+
38
+ post_data = {
39
+ "name": "sr_bin_coll_day_checker",
40
+ "data": {
41
+ "uprn": user_uprn,
42
+ "nextCollectionFromDate": (datetime.now() - timedelta(days=1)).strftime(
43
+ "%Y-%m-%d"
44
+ ),
45
+ "nextCollectionToDate": (datetime.now() + timedelta(days=30)).strftime(
46
+ "%Y-%m-%d"
47
+ ),
48
+ },
49
+ "email": "",
50
+ "caseid": "",
51
+ "xref": "",
52
+ "xref1": "",
53
+ "xref2": "",
54
+ }
55
+
56
+ headers = {
57
+ "referer": "https://manchester.portal.uk.empro.verintcloudservices.com/",
58
+ "accept": "application/json",
59
+ "content-type": "application/json",
60
+ AUTH_KEY: auth_token,
61
+ }
62
+
63
+ r = requests.post(API_URL, data=json.dumps(post_data), headers=headers)
64
+ r.raise_for_status()
65
+
66
+ result = r.json()
67
+ print(result["data"])
68
+
69
+ for key, value in result["data"].items():
70
+ if key.startswith("ahtm_dates_"):
71
+ print(key)
72
+ print(value)
73
+
74
+ dates_list = [
75
+ datetime.strptime(date.strip(), "%d/%m/%Y %H:%M:%S").date()
76
+ for date in value.split(";")
77
+ if date.strip()
78
+ ]
79
+
80
+ for current_date in dates_list:
81
+ dict_data = {
82
+ "type": COLLECTION_MAP.get(key),
83
+ "collectionDate": current_date.strftime(date_format),
84
+ }
85
+ bindata["bins"].append(dict_data)
86
+
87
+ bindata["bins"].sort(
88
+ key=lambda x: datetime.strptime(x.get("collectionDate"), "%d/%m/%Y")
89
+ )
90
+ return bindata
@@ -106,6 +106,7 @@ class CouncilClass(AbstractGetBinDataClass):
106
106
  bin_date = datetime.strptime(
107
107
  date.get_text(strip=True)
108
108
  .removesuffix("(Today)")
109
+ .removesuffix("(Tomorrow)")
109
110
  .replace("&nbsp", " ")
110
111
  + " "
111
112
  + datetime.now().strftime("%Y"),
@@ -10,7 +10,6 @@ from selenium.webdriver.common.keys import Keys
10
10
  from selenium.webdriver.support import expected_conditions as EC
11
11
  from selenium.webdriver.support.ui import Select
12
12
  from selenium.webdriver.support.wait import WebDriverWait
13
- from uk_bin_collection.uk_bin_collection.common import *
14
13
 
15
14
  from uk_bin_collection.uk_bin_collection.common import *
16
15
  from uk_bin_collection.uk_bin_collection.get_bin_data import AbstractGetBinDataClass
@@ -91,9 +90,10 @@ class CouncilClass(AbstractGetBinDataClass):
91
90
  if len(cols) == 2:
92
91
  bin_types = [img["alt"] for img in cols[0].find_all("img")]
93
92
  collection_date_str = cols[1].text
94
- collection_date = datetime.strptime(
95
- collection_date_str, "%A %dth %B"
93
+ collection_date_str = remove_ordinal_indicator_from_date_string(
94
+ collection_date_str
96
95
  )
96
+ collection_date = datetime.strptime(collection_date_str, "%A %d %B")
97
97
  collection_date = collection_date.replace(
98
98
  year=2024
99
99
  ) # Assuming the year is 2024
@@ -1,5 +1,6 @@
1
1
  import requests
2
2
  from bs4 import BeautifulSoup
3
+
3
4
  from uk_bin_collection.uk_bin_collection.common import *
4
5
  from uk_bin_collection.uk_bin_collection.get_bin_data import AbstractGetBinDataClass
5
6
 
@@ -89,11 +90,7 @@ class CouncilClass(AbstractGetBinDataClass):
89
90
  raise ValueError(f"Error parsing bin data: {ex}")
90
91
 
91
92
  # Build data dict for each entry
92
- dict_data = {
93
- "type": bin_type,
94
- "collectionDate": bin_date,
95
- "colour": bin_colour,
96
- }
93
+ dict_data = {"type": bin_type, "collectionDate": bin_date}
97
94
  data["bins"].append(dict_data)
98
95
 
99
96
  data["bins"].sort(
@@ -65,7 +65,6 @@ class CouncilClass(AbstractGetBinDataClass):
65
65
 
66
66
  dict_data = {
67
67
  "type": bin_name_clean,
68
- "colour": bin_colour,
69
68
  "collectionDate": next_collection.strftime(date_format),
70
69
  }
71
70
 
@@ -1,107 +0,0 @@
1
- from datetime import datetime
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
- 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
- # Get and check UPRN
19
- user_uprn = kwargs.get("uprn")
20
- check_uprn(user_uprn)
21
-
22
- # Start a new session to walk through the form
23
- requests.packages.urllib3.disable_warnings()
24
- s = requests.Session()
25
-
26
- # There's a cookie that makes the whole thing valid when you search for a postcode,
27
- # but postcode and UPRN is a hassle imo, so this makes a request for the session to get a cookie
28
- # using a Manchester City Council postcode I hardcoded in the data payload
29
- postcode_request_header = {
30
- "authority": "www.manchester.gov.uk",
31
- "accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,"
32
- "image/webp,image/apng,*/*;q=0.8",
33
- "accept-language": "en-GB,en;q=0.6",
34
- "cache-control": "max-age=0",
35
- # Requests sorts cookies= alphabetically
36
- "origin": "https://www.manchester.gov.uk",
37
- "referer": "https://www.manchester.gov.uk/bincollections",
38
- "sec-fetch-dest": "document",
39
- "sec-fetch-mode": "navigate",
40
- "sec-fetch-site": "same-origin",
41
- "sec-fetch-user": "?1",
42
- "sec-gpc": "1",
43
- "upgrade-insecure-requests": "1",
44
- "user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, "
45
- "like Gecko) Chrome/104.0.5112.102 Safari/537.36",
46
- }
47
- postcode_request_data = {
48
- "mcc_bin_dates_search_term": "M2 5DB",
49
- "mcc_bin_dates_submit": "Go",
50
- }
51
- response = s.post(
52
- "https://www.manchester.gov.uk/bincollections",
53
- headers=postcode_request_header,
54
- data=postcode_request_data,
55
- )
56
-
57
- # Make a POST with the same cookie-fied session using the user's UPRN data
58
- uprn_request_headers = {
59
- "authority": "www.manchester.gov.uk",
60
- "accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8",
61
- "accept-language": "en-GB,en;q=0.6",
62
- "cache-control": "max-age=0",
63
- # Requests sorts cookies= alphabetically
64
- # 'cookie': 'TestCookie=Test; CookieConsent={stamp:%27D8rypjMDBJhpfMWybSMdGXP1hCZWGJYtGETiMTu1UuXTdRIKl8SU5g==%27%2Cnecessary:true%2Cpreferences:true%2Cstatistics:true%2Cmarketing:true%2Cver:6%2Cutc:1661783732090%2Cregion:%27gb%27}; PHPSESSID=kElJxYAt%2Cf-4ZWoskt0s5tn32BUQRXDYUVp3G-NsqOAOaeIcKlm2T4r7ATSgqfz6',
65
- "origin": "https://www.manchester.gov.uk",
66
- "referer": "https://www.manchester.gov.uk/bincollections",
67
- "sec-fetch-dest": "document",
68
- "sec-fetch-mode": "navigate",
69
- "sec-fetch-site": "same-origin",
70
- "sec-fetch-user": "?1",
71
- "sec-gpc": "1",
72
- "upgrade-insecure-requests": "1",
73
- "user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/104.0.5112.102 Safari/537.36",
74
- }
75
- uprn_request_data = {
76
- "mcc_bin_dates_uprn": user_uprn,
77
- "mcc_bin_dates_submit": "Go",
78
- }
79
- response = s.post(
80
- "https://www.manchester.gov.uk/bincollections",
81
- headers=uprn_request_headers,
82
- data=uprn_request_data,
83
- )
84
-
85
- # Make that BS4 object and use it to prettify the response
86
- soup = BeautifulSoup(response.content, features="html.parser")
87
- soup.prettify()
88
-
89
- # Get the collection items on the page and strip the bits of text that we don't care for
90
- collections = []
91
- for bin in soup.find_all("div", {"class": "collection"}):
92
- bin_type = bin.find_next("h3").text.replace(" DUE TODAY", "").strip()
93
- next_collection = bin.find_next("p").text.replace("Next collection ", "")
94
- next_collection = datetime.strptime(next_collection, "%A %d %b %Y")
95
- collections.append((bin_type, next_collection))
96
-
97
- # Sort the collections by date order rather than bin type, then return as a dictionary (with str date)
98
- ordered_data = sorted(collections, key=lambda x: x[1])
99
- data = {"bins": []}
100
- for item in ordered_data:
101
- dict_data = {
102
- "type": item[0],
103
- "collectionDate": item[1].strftime(date_format),
104
- }
105
- data["bins"].append(dict_data)
106
-
107
- return data