uk_bin_collection 0.84.1__tar.gz → 0.84.2__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 (189) hide show
  1. {uk_bin_collection-0.84.1 → uk_bin_collection-0.84.2}/PKG-INFO +1 -1
  2. {uk_bin_collection-0.84.1 → uk_bin_collection-0.84.2}/pyproject.toml +1 -1
  3. uk_bin_collection-0.84.2/uk_bin_collection/uk_bin_collection/councils/NorthTynesideCouncil.py +143 -0
  4. uk_bin_collection-0.84.1/uk_bin_collection/uk_bin_collection/councils/NorthTynesideCouncil.py +0 -221
  5. {uk_bin_collection-0.84.1 → uk_bin_collection-0.84.2}/LICENSE +0 -0
  6. {uk_bin_collection-0.84.1 → uk_bin_collection-0.84.2}/README.md +0 -0
  7. {uk_bin_collection-0.84.1 → uk_bin_collection-0.84.2}/uk_bin_collection/README.rst +0 -0
  8. {uk_bin_collection-0.84.1 → uk_bin_collection-0.84.2}/uk_bin_collection/tests/council_feature_input_parity.py +0 -0
  9. {uk_bin_collection-0.84.1 → uk_bin_collection-0.84.2}/uk_bin_collection/tests/features/environment.py +0 -0
  10. {uk_bin_collection-0.84.1 → uk_bin_collection-0.84.2}/uk_bin_collection/tests/features/validate_council_outputs.feature +0 -0
  11. {uk_bin_collection-0.84.1 → uk_bin_collection-0.84.2}/uk_bin_collection/tests/input.json +0 -0
  12. {uk_bin_collection-0.84.1 → uk_bin_collection-0.84.2}/uk_bin_collection/tests/output.schema +0 -0
  13. {uk_bin_collection-0.84.1 → uk_bin_collection-0.84.2}/uk_bin_collection/tests/step_defs/step_helpers/file_handler.py +0 -0
  14. {uk_bin_collection-0.84.1 → uk_bin_collection-0.84.2}/uk_bin_collection/tests/step_defs/test_validate_council.py +0 -0
  15. {uk_bin_collection-0.84.1 → uk_bin_collection-0.84.2}/uk_bin_collection/tests/test_collect_data.py +0 -0
  16. {uk_bin_collection-0.84.1 → uk_bin_collection-0.84.2}/uk_bin_collection/tests/test_common_functions.py +0 -0
  17. {uk_bin_collection-0.84.1 → uk_bin_collection-0.84.2}/uk_bin_collection/uk_bin_collection/collect_data.py +0 -0
  18. {uk_bin_collection-0.84.1 → uk_bin_collection-0.84.2}/uk_bin_collection/uk_bin_collection/common.py +0 -0
  19. {uk_bin_collection-0.84.1 → uk_bin_collection-0.84.2}/uk_bin_collection/uk_bin_collection/councils/AdurAndWorthingCouncils.py +0 -0
  20. {uk_bin_collection-0.84.1 → uk_bin_collection-0.84.2}/uk_bin_collection/uk_bin_collection/councils/ArunCouncil.py +0 -0
  21. {uk_bin_collection-0.84.1 → uk_bin_collection-0.84.2}/uk_bin_collection/uk_bin_collection/councils/AylesburyValeCouncil.py +0 -0
  22. {uk_bin_collection-0.84.1 → uk_bin_collection-0.84.2}/uk_bin_collection/uk_bin_collection/councils/BCPCouncil.py +0 -0
  23. {uk_bin_collection-0.84.1 → uk_bin_collection-0.84.2}/uk_bin_collection/uk_bin_collection/councils/BarnetCouncil.py +0 -0
  24. {uk_bin_collection-0.84.1 → uk_bin_collection-0.84.2}/uk_bin_collection/uk_bin_collection/councils/BarnsleyMBCouncil.py +0 -0
  25. {uk_bin_collection-0.84.1 → uk_bin_collection-0.84.2}/uk_bin_collection/uk_bin_collection/councils/BasingstokeCouncil.py +0 -0
  26. {uk_bin_collection-0.84.1 → uk_bin_collection-0.84.2}/uk_bin_collection/uk_bin_collection/councils/BathAndNorthEastSomersetCouncil.py +0 -0
  27. {uk_bin_collection-0.84.1 → uk_bin_collection-0.84.2}/uk_bin_collection/uk_bin_collection/councils/BedfordBoroughCouncil.py +0 -0
  28. {uk_bin_collection-0.84.1 → uk_bin_collection-0.84.2}/uk_bin_collection/uk_bin_collection/councils/BedfordshireCouncil.py +0 -0
  29. {uk_bin_collection-0.84.1 → uk_bin_collection-0.84.2}/uk_bin_collection/uk_bin_collection/councils/BexleyCouncil.py +0 -0
  30. {uk_bin_collection-0.84.1 → uk_bin_collection-0.84.2}/uk_bin_collection/uk_bin_collection/councils/BirminghamCityCouncil.py +0 -0
  31. {uk_bin_collection-0.84.1 → uk_bin_collection-0.84.2}/uk_bin_collection/uk_bin_collection/councils/BlackburnCouncil.py +0 -0
  32. {uk_bin_collection-0.84.1 → uk_bin_collection-0.84.2}/uk_bin_collection/uk_bin_collection/councils/BoltonCouncil.py +0 -0
  33. {uk_bin_collection-0.84.1 → uk_bin_collection-0.84.2}/uk_bin_collection/uk_bin_collection/councils/BracknellForestCouncil.py +0 -0
  34. {uk_bin_collection-0.84.1 → uk_bin_collection-0.84.2}/uk_bin_collection/uk_bin_collection/councils/BradfordMDC.py +0 -0
  35. {uk_bin_collection-0.84.1 → uk_bin_collection-0.84.2}/uk_bin_collection/uk_bin_collection/councils/BrightonandHoveCityCouncil.py +0 -0
  36. {uk_bin_collection-0.84.1 → uk_bin_collection-0.84.2}/uk_bin_collection/uk_bin_collection/councils/BristolCityCouncil.py +0 -0
  37. {uk_bin_collection-0.84.1 → uk_bin_collection-0.84.2}/uk_bin_collection/uk_bin_collection/councils/BromleyBoroughCouncil.py +0 -0
  38. {uk_bin_collection-0.84.1 → uk_bin_collection-0.84.2}/uk_bin_collection/uk_bin_collection/councils/BroxtoweBoroughCouncil.py +0 -0
  39. {uk_bin_collection-0.84.1 → uk_bin_collection-0.84.2}/uk_bin_collection/uk_bin_collection/councils/BuckinghamshireCouncil.py +0 -0
  40. {uk_bin_collection-0.84.1 → uk_bin_collection-0.84.2}/uk_bin_collection/uk_bin_collection/councils/BuryCouncil.py +0 -0
  41. {uk_bin_collection-0.84.1 → uk_bin_collection-0.84.2}/uk_bin_collection/uk_bin_collection/councils/CalderdaleCouncil.py +0 -0
  42. {uk_bin_collection-0.84.1 → uk_bin_collection-0.84.2}/uk_bin_collection/uk_bin_collection/councils/CannockChaseDistrictCouncil.py +0 -0
  43. {uk_bin_collection-0.84.1 → uk_bin_collection-0.84.2}/uk_bin_collection/uk_bin_collection/councils/CardiffCouncil.py +0 -0
  44. {uk_bin_collection-0.84.1 → uk_bin_collection-0.84.2}/uk_bin_collection/uk_bin_collection/councils/CastlepointDistrictCouncil.py +0 -0
  45. {uk_bin_collection-0.84.1 → uk_bin_collection-0.84.2}/uk_bin_collection/uk_bin_collection/councils/CharnwoodBoroughCouncil.py +0 -0
  46. {uk_bin_collection-0.84.1 → uk_bin_collection-0.84.2}/uk_bin_collection/uk_bin_collection/councils/ChelmsfordCityCouncil.py +0 -0
  47. {uk_bin_collection-0.84.1 → uk_bin_collection-0.84.2}/uk_bin_collection/uk_bin_collection/councils/CheshireEastCouncil.py +0 -0
  48. {uk_bin_collection-0.84.1 → uk_bin_collection-0.84.2}/uk_bin_collection/uk_bin_collection/councils/CheshireWestAndChesterCouncil.py +0 -0
  49. {uk_bin_collection-0.84.1 → uk_bin_collection-0.84.2}/uk_bin_collection/uk_bin_collection/councils/ChichesterDistrictCouncil.py +0 -0
  50. {uk_bin_collection-0.84.1 → uk_bin_collection-0.84.2}/uk_bin_collection/uk_bin_collection/councils/ChorleyCouncil.py +0 -0
  51. {uk_bin_collection-0.84.1 → uk_bin_collection-0.84.2}/uk_bin_collection/uk_bin_collection/councils/ConwyCountyBorough.py +0 -0
  52. {uk_bin_collection-0.84.1 → uk_bin_collection-0.84.2}/uk_bin_collection/uk_bin_collection/councils/CornwallCouncil.py +0 -0
  53. {uk_bin_collection-0.84.1 → uk_bin_collection-0.84.2}/uk_bin_collection/uk_bin_collection/councils/CrawleyBoroughCouncil.py +0 -0
  54. {uk_bin_collection-0.84.1 → uk_bin_collection-0.84.2}/uk_bin_collection/uk_bin_collection/councils/CroydonCouncil.py +0 -0
  55. {uk_bin_collection-0.84.1 → uk_bin_collection-0.84.2}/uk_bin_collection/uk_bin_collection/councils/DartfordBoroughCouncil.py +0 -0
  56. {uk_bin_collection-0.84.1 → uk_bin_collection-0.84.2}/uk_bin_collection/uk_bin_collection/councils/DerbyshireDalesDistrictCouncil.py +0 -0
  57. {uk_bin_collection-0.84.1 → uk_bin_collection-0.84.2}/uk_bin_collection/uk_bin_collection/councils/DoncasterCouncil.py +0 -0
  58. {uk_bin_collection-0.84.1 → uk_bin_collection-0.84.2}/uk_bin_collection/uk_bin_collection/councils/DorsetCouncil.py +0 -0
  59. {uk_bin_collection-0.84.1 → uk_bin_collection-0.84.2}/uk_bin_collection/uk_bin_collection/councils/DoverDistrictCouncil.py +0 -0
  60. {uk_bin_collection-0.84.1 → uk_bin_collection-0.84.2}/uk_bin_collection/uk_bin_collection/councils/DurhamCouncil.py +0 -0
  61. {uk_bin_collection-0.84.1 → uk_bin_collection-0.84.2}/uk_bin_collection/uk_bin_collection/councils/EastCambridgeshireCouncil.py +0 -0
  62. {uk_bin_collection-0.84.1 → uk_bin_collection-0.84.2}/uk_bin_collection/uk_bin_collection/councils/EastDevonDC.py +0 -0
  63. {uk_bin_collection-0.84.1 → uk_bin_collection-0.84.2}/uk_bin_collection/uk_bin_collection/councils/EastLindseyDistrictCouncil.py +0 -0
  64. {uk_bin_collection-0.84.1 → uk_bin_collection-0.84.2}/uk_bin_collection/uk_bin_collection/councils/EastRidingCouncil.py +0 -0
  65. {uk_bin_collection-0.84.1 → uk_bin_collection-0.84.2}/uk_bin_collection/uk_bin_collection/councils/EastSuffolkCouncil.py +0 -0
  66. {uk_bin_collection-0.84.1 → uk_bin_collection-0.84.2}/uk_bin_collection/uk_bin_collection/councils/EastleighBoroughCouncil.py +0 -0
  67. {uk_bin_collection-0.84.1 → uk_bin_collection-0.84.2}/uk_bin_collection/uk_bin_collection/councils/EnvironmentFirst.py +0 -0
  68. {uk_bin_collection-0.84.1 → uk_bin_collection-0.84.2}/uk_bin_collection/uk_bin_collection/councils/EppingForestDistrictCouncil.py +0 -0
  69. {uk_bin_collection-0.84.1 → uk_bin_collection-0.84.2}/uk_bin_collection/uk_bin_collection/councils/ErewashBoroughCouncil.py +0 -0
  70. {uk_bin_collection-0.84.1 → uk_bin_collection-0.84.2}/uk_bin_collection/uk_bin_collection/councils/FarehamBoroughCouncil.py +0 -0
  71. {uk_bin_collection-0.84.1 → uk_bin_collection-0.84.2}/uk_bin_collection/uk_bin_collection/councils/FenlandDistrictCouncil.py +0 -0
  72. {uk_bin_collection-0.84.1 → uk_bin_collection-0.84.2}/uk_bin_collection/uk_bin_collection/councils/ForestOfDeanDistrictCouncil.py +0 -0
  73. {uk_bin_collection-0.84.1 → uk_bin_collection-0.84.2}/uk_bin_collection/uk_bin_collection/councils/GatesheadCouncil.py +0 -0
  74. {uk_bin_collection-0.84.1 → uk_bin_collection-0.84.2}/uk_bin_collection/uk_bin_collection/councils/GedlingBoroughCouncil.py +0 -0
  75. {uk_bin_collection-0.84.1 → uk_bin_collection-0.84.2}/uk_bin_collection/uk_bin_collection/councils/GlasgowCityCouncil.py +0 -0
  76. {uk_bin_collection-0.84.1 → uk_bin_collection-0.84.2}/uk_bin_collection/uk_bin_collection/councils/GuildfordCouncil.py +0 -0
  77. {uk_bin_collection-0.84.1 → uk_bin_collection-0.84.2}/uk_bin_collection/uk_bin_collection/councils/HaltonBoroughCouncil.py +0 -0
  78. {uk_bin_collection-0.84.1 → uk_bin_collection-0.84.2}/uk_bin_collection/uk_bin_collection/councils/HaringeyCouncil.py +0 -0
  79. {uk_bin_collection-0.84.1 → uk_bin_collection-0.84.2}/uk_bin_collection/uk_bin_collection/councils/HarrogateBoroughCouncil.py +0 -0
  80. {uk_bin_collection-0.84.1 → uk_bin_collection-0.84.2}/uk_bin_collection/uk_bin_collection/councils/HighPeakCouncil.py +0 -0
  81. {uk_bin_collection-0.84.1 → uk_bin_collection-0.84.2}/uk_bin_collection/uk_bin_collection/councils/HounslowCouncil.py +0 -0
  82. {uk_bin_collection-0.84.1 → uk_bin_collection-0.84.2}/uk_bin_collection/uk_bin_collection/councils/HullCityCouncil.py +0 -0
  83. {uk_bin_collection-0.84.1 → uk_bin_collection-0.84.2}/uk_bin_collection/uk_bin_collection/councils/HuntingdonDistrictCouncil.py +0 -0
  84. {uk_bin_collection-0.84.1 → uk_bin_collection-0.84.2}/uk_bin_collection/uk_bin_collection/councils/KingstonUponThamesCouncil.py +0 -0
  85. {uk_bin_collection-0.84.1 → uk_bin_collection-0.84.2}/uk_bin_collection/uk_bin_collection/councils/KirkleesCouncil.py +0 -0
  86. {uk_bin_collection-0.84.1 → uk_bin_collection-0.84.2}/uk_bin_collection/uk_bin_collection/councils/KnowsleyMBCouncil.py +0 -0
  87. {uk_bin_collection-0.84.1 → uk_bin_collection-0.84.2}/uk_bin_collection/uk_bin_collection/councils/LancasterCityCouncil.py +0 -0
  88. {uk_bin_collection-0.84.1 → uk_bin_collection-0.84.2}/uk_bin_collection/uk_bin_collection/councils/LeedsCityCouncil.py +0 -0
  89. {uk_bin_collection-0.84.1 → uk_bin_collection-0.84.2}/uk_bin_collection/uk_bin_collection/councils/LisburnCastlereaghCityCouncil.py +0 -0
  90. {uk_bin_collection-0.84.1 → uk_bin_collection-0.84.2}/uk_bin_collection/uk_bin_collection/councils/LiverpoolCityCouncil.py +0 -0
  91. {uk_bin_collection-0.84.1 → uk_bin_collection-0.84.2}/uk_bin_collection/uk_bin_collection/councils/LondonBoroughHounslow.py +0 -0
  92. {uk_bin_collection-0.84.1 → uk_bin_collection-0.84.2}/uk_bin_collection/uk_bin_collection/councils/LondonBoroughRedbridge.py +0 -0
  93. {uk_bin_collection-0.84.1 → uk_bin_collection-0.84.2}/uk_bin_collection/uk_bin_collection/councils/MaldonDistrictCouncil.py +0 -0
  94. {uk_bin_collection-0.84.1 → uk_bin_collection-0.84.2}/uk_bin_collection/uk_bin_collection/councils/MalvernHillsDC.py +0 -0
  95. {uk_bin_collection-0.84.1 → uk_bin_collection-0.84.2}/uk_bin_collection/uk_bin_collection/councils/ManchesterCityCouncil.py +0 -0
  96. {uk_bin_collection-0.84.1 → uk_bin_collection-0.84.2}/uk_bin_collection/uk_bin_collection/councils/MansfieldDistrictCouncil.py +0 -0
  97. {uk_bin_collection-0.84.1 → uk_bin_collection-0.84.2}/uk_bin_collection/uk_bin_collection/councils/MertonCouncil.py +0 -0
  98. {uk_bin_collection-0.84.1 → uk_bin_collection-0.84.2}/uk_bin_collection/uk_bin_collection/councils/MidAndEastAntrimBoroughCouncil.py +0 -0
  99. {uk_bin_collection-0.84.1 → uk_bin_collection-0.84.2}/uk_bin_collection/uk_bin_collection/councils/MidSussexDistrictCouncil.py +0 -0
  100. {uk_bin_collection-0.84.1 → uk_bin_collection-0.84.2}/uk_bin_collection/uk_bin_collection/councils/MiltonKeynesCityCouncil.py +0 -0
  101. {uk_bin_collection-0.84.1 → uk_bin_collection-0.84.2}/uk_bin_collection/uk_bin_collection/councils/MoleValleyDistrictCouncil.py +0 -0
  102. {uk_bin_collection-0.84.1 → uk_bin_collection-0.84.2}/uk_bin_collection/uk_bin_collection/councils/NeathPortTalbotCouncil.py +0 -0
  103. {uk_bin_collection-0.84.1 → uk_bin_collection-0.84.2}/uk_bin_collection/uk_bin_collection/councils/NewForestCouncil.py +0 -0
  104. {uk_bin_collection-0.84.1 → uk_bin_collection-0.84.2}/uk_bin_collection/uk_bin_collection/councils/NewarkAndSherwoodDC.py +0 -0
  105. {uk_bin_collection-0.84.1 → uk_bin_collection-0.84.2}/uk_bin_collection/uk_bin_collection/councils/NewcastleCityCouncil.py +0 -0
  106. {uk_bin_collection-0.84.1 → uk_bin_collection-0.84.2}/uk_bin_collection/uk_bin_collection/councils/NewhamCouncil.py +0 -0
  107. {uk_bin_collection-0.84.1 → uk_bin_collection-0.84.2}/uk_bin_collection/uk_bin_collection/councils/NewportCityCouncil.py +0 -0
  108. {uk_bin_collection-0.84.1 → uk_bin_collection-0.84.2}/uk_bin_collection/uk_bin_collection/councils/NorthEastDerbyshireDistrictCouncil.py +0 -0
  109. {uk_bin_collection-0.84.1 → uk_bin_collection-0.84.2}/uk_bin_collection/uk_bin_collection/councils/NorthEastLincs.py +0 -0
  110. {uk_bin_collection-0.84.1 → uk_bin_collection-0.84.2}/uk_bin_collection/uk_bin_collection/councils/NorthKestevenDistrictCouncil.py +0 -0
  111. {uk_bin_collection-0.84.1 → uk_bin_collection-0.84.2}/uk_bin_collection/uk_bin_collection/councils/NorthLanarkshireCouncil.py +0 -0
  112. {uk_bin_collection-0.84.1 → uk_bin_collection-0.84.2}/uk_bin_collection/uk_bin_collection/councils/NorthLincolnshireCouncil.py +0 -0
  113. {uk_bin_collection-0.84.1 → uk_bin_collection-0.84.2}/uk_bin_collection/uk_bin_collection/councils/NorthNorfolkDistrictCouncil.py +0 -0
  114. {uk_bin_collection-0.84.1 → uk_bin_collection-0.84.2}/uk_bin_collection/uk_bin_collection/councils/NorthNorthamptonshireCouncil.py +0 -0
  115. {uk_bin_collection-0.84.1 → uk_bin_collection-0.84.2}/uk_bin_collection/uk_bin_collection/councils/NorthSomersetCouncil.py +0 -0
  116. {uk_bin_collection-0.84.1 → uk_bin_collection-0.84.2}/uk_bin_collection/uk_bin_collection/councils/NorthWestLeicestershire.py +0 -0
  117. {uk_bin_collection-0.84.1 → uk_bin_collection-0.84.2}/uk_bin_collection/uk_bin_collection/councils/NorthYorkshire.py +0 -0
  118. {uk_bin_collection-0.84.1 → uk_bin_collection-0.84.2}/uk_bin_collection/uk_bin_collection/councils/NorthumberlandCouncil.py +0 -0
  119. {uk_bin_collection-0.84.1 → uk_bin_collection-0.84.2}/uk_bin_collection/uk_bin_collection/councils/NottinghamCityCouncil.py +0 -0
  120. {uk_bin_collection-0.84.1 → uk_bin_collection-0.84.2}/uk_bin_collection/uk_bin_collection/councils/OldhamCouncil.py +0 -0
  121. {uk_bin_collection-0.84.1 → uk_bin_collection-0.84.2}/uk_bin_collection/uk_bin_collection/councils/PortsmouthCityCouncil.py +0 -0
  122. {uk_bin_collection-0.84.1 → uk_bin_collection-0.84.2}/uk_bin_collection/uk_bin_collection/councils/PrestonCityCouncil.py +0 -0
  123. {uk_bin_collection-0.84.1 → uk_bin_collection-0.84.2}/uk_bin_collection/uk_bin_collection/councils/ReadingBoroughCouncil.py +0 -0
  124. {uk_bin_collection-0.84.1 → uk_bin_collection-0.84.2}/uk_bin_collection/uk_bin_collection/councils/ReigateAndBansteadBoroughCouncil.py +0 -0
  125. {uk_bin_collection-0.84.1 → uk_bin_collection-0.84.2}/uk_bin_collection/uk_bin_collection/councils/RenfrewshireCouncil.py +0 -0
  126. {uk_bin_collection-0.84.1 → uk_bin_collection-0.84.2}/uk_bin_collection/uk_bin_collection/councils/RhonddaCynonTaffCouncil.py +0 -0
  127. {uk_bin_collection-0.84.1 → uk_bin_collection-0.84.2}/uk_bin_collection/uk_bin_collection/councils/RochdaleCouncil.py +0 -0
  128. {uk_bin_collection-0.84.1 → uk_bin_collection-0.84.2}/uk_bin_collection/uk_bin_collection/councils/RochfordCouncil.py +0 -0
  129. {uk_bin_collection-0.84.1 → uk_bin_collection-0.84.2}/uk_bin_collection/uk_bin_collection/councils/RugbyBoroughCouncil.py +0 -0
  130. {uk_bin_collection-0.84.1 → uk_bin_collection-0.84.2}/uk_bin_collection/uk_bin_collection/councils/RushcliffeBoroughCouncil.py +0 -0
  131. {uk_bin_collection-0.84.1 → uk_bin_collection-0.84.2}/uk_bin_collection/uk_bin_collection/councils/RushmoorCouncil.py +0 -0
  132. {uk_bin_collection-0.84.1 → uk_bin_collection-0.84.2}/uk_bin_collection/uk_bin_collection/councils/SalfordCityCouncil.py +0 -0
  133. {uk_bin_collection-0.84.1 → uk_bin_collection-0.84.2}/uk_bin_collection/uk_bin_collection/councils/SevenoaksDistrictCouncil.py +0 -0
  134. {uk_bin_collection-0.84.1 → uk_bin_collection-0.84.2}/uk_bin_collection/uk_bin_collection/councils/SheffieldCityCouncil.py +0 -0
  135. {uk_bin_collection-0.84.1 → uk_bin_collection-0.84.2}/uk_bin_collection/uk_bin_collection/councils/ShropshireCouncil.py +0 -0
  136. {uk_bin_collection-0.84.1 → uk_bin_collection-0.84.2}/uk_bin_collection/uk_bin_collection/councils/SolihullCouncil.py +0 -0
  137. {uk_bin_collection-0.84.1 → uk_bin_collection-0.84.2}/uk_bin_collection/uk_bin_collection/councils/SomersetCouncil.py +0 -0
  138. {uk_bin_collection-0.84.1 → uk_bin_collection-0.84.2}/uk_bin_collection/uk_bin_collection/councils/SouthAyrshireCouncil.py +0 -0
  139. {uk_bin_collection-0.84.1 → uk_bin_collection-0.84.2}/uk_bin_collection/uk_bin_collection/councils/SouthCambridgeshireCouncil.py +0 -0
  140. {uk_bin_collection-0.84.1 → uk_bin_collection-0.84.2}/uk_bin_collection/uk_bin_collection/councils/SouthGloucestershireCouncil.py +0 -0
  141. {uk_bin_collection-0.84.1 → uk_bin_collection-0.84.2}/uk_bin_collection/uk_bin_collection/councils/SouthKestevenDistrictCouncil.py +0 -0
  142. {uk_bin_collection-0.84.1 → uk_bin_collection-0.84.2}/uk_bin_collection/uk_bin_collection/councils/SouthLanarkshireCouncil.py +0 -0
  143. {uk_bin_collection-0.84.1 → uk_bin_collection-0.84.2}/uk_bin_collection/uk_bin_collection/councils/SouthNorfolkCouncil.py +0 -0
  144. {uk_bin_collection-0.84.1 → uk_bin_collection-0.84.2}/uk_bin_collection/uk_bin_collection/councils/SouthOxfordshireCouncil.py +0 -0
  145. {uk_bin_collection-0.84.1 → uk_bin_collection-0.84.2}/uk_bin_collection/uk_bin_collection/councils/SouthTynesideCouncil.py +0 -0
  146. {uk_bin_collection-0.84.1 → uk_bin_collection-0.84.2}/uk_bin_collection/uk_bin_collection/councils/StAlbansCityAndDistrictCouncil.py +0 -0
  147. {uk_bin_collection-0.84.1 → uk_bin_collection-0.84.2}/uk_bin_collection/uk_bin_collection/councils/StHelensBC.py +0 -0
  148. {uk_bin_collection-0.84.1 → uk_bin_collection-0.84.2}/uk_bin_collection/uk_bin_collection/councils/StaffordBoroughCouncil.py +0 -0
  149. {uk_bin_collection-0.84.1 → uk_bin_collection-0.84.2}/uk_bin_collection/uk_bin_collection/councils/StaffordshireMoorlandsDistrictCouncil.py +0 -0
  150. {uk_bin_collection-0.84.1 → uk_bin_collection-0.84.2}/uk_bin_collection/uk_bin_collection/councils/StockportBoroughCouncil.py +0 -0
  151. {uk_bin_collection-0.84.1 → uk_bin_collection-0.84.2}/uk_bin_collection/uk_bin_collection/councils/StokeOnTrentCityCouncil.py +0 -0
  152. {uk_bin_collection-0.84.1 → uk_bin_collection-0.84.2}/uk_bin_collection/uk_bin_collection/councils/StratfordUponAvonCouncil.py +0 -0
  153. {uk_bin_collection-0.84.1 → uk_bin_collection-0.84.2}/uk_bin_collection/uk_bin_collection/councils/StroudDistrictCouncil.py +0 -0
  154. {uk_bin_collection-0.84.1 → uk_bin_collection-0.84.2}/uk_bin_collection/uk_bin_collection/councils/SunderlandCityCouncil.py +0 -0
  155. {uk_bin_collection-0.84.1 → uk_bin_collection-0.84.2}/uk_bin_collection/uk_bin_collection/councils/SwaleBoroughCouncil.py +0 -0
  156. {uk_bin_collection-0.84.1 → uk_bin_collection-0.84.2}/uk_bin_collection/uk_bin_collection/councils/SwanseaCouncil.py +0 -0
  157. {uk_bin_collection-0.84.1 → uk_bin_collection-0.84.2}/uk_bin_collection/uk_bin_collection/councils/TamesideMBCouncil.py +0 -0
  158. {uk_bin_collection-0.84.1 → uk_bin_collection-0.84.2}/uk_bin_collection/uk_bin_collection/councils/TandridgeDistrictCouncil.py +0 -0
  159. {uk_bin_collection-0.84.1 → uk_bin_collection-0.84.2}/uk_bin_collection/uk_bin_collection/councils/TelfordAndWrekinCouncil.py +0 -0
  160. {uk_bin_collection-0.84.1 → uk_bin_collection-0.84.2}/uk_bin_collection/uk_bin_collection/councils/TendringDistrictCouncil.py +0 -0
  161. {uk_bin_collection-0.84.1 → uk_bin_collection-0.84.2}/uk_bin_collection/uk_bin_collection/councils/TestValleyBoroughCouncil.py +0 -0
  162. {uk_bin_collection-0.84.1 → uk_bin_collection-0.84.2}/uk_bin_collection/uk_bin_collection/councils/ThreeRiversDistrictCouncil.py +0 -0
  163. {uk_bin_collection-0.84.1 → uk_bin_collection-0.84.2}/uk_bin_collection/uk_bin_collection/councils/TonbridgeAndMallingBC.py +0 -0
  164. {uk_bin_collection-0.84.1 → uk_bin_collection-0.84.2}/uk_bin_collection/uk_bin_collection/councils/TorbayCouncil.py +0 -0
  165. {uk_bin_collection-0.84.1 → uk_bin_collection-0.84.2}/uk_bin_collection/uk_bin_collection/councils/TorridgeDistrictCouncil.py +0 -0
  166. {uk_bin_collection-0.84.1 → uk_bin_collection-0.84.2}/uk_bin_collection/uk_bin_collection/councils/UttlesfordDistrictCouncil.py +0 -0
  167. {uk_bin_collection-0.84.1 → uk_bin_collection-0.84.2}/uk_bin_collection/uk_bin_collection/councils/ValeofGlamorganCouncil.py +0 -0
  168. {uk_bin_collection-0.84.1 → uk_bin_collection-0.84.2}/uk_bin_collection/uk_bin_collection/councils/ValeofWhiteHorseCouncil.py +0 -0
  169. {uk_bin_collection-0.84.1 → uk_bin_collection-0.84.2}/uk_bin_collection/uk_bin_collection/councils/WakefieldCityCouncil.py +0 -0
  170. {uk_bin_collection-0.84.1 → uk_bin_collection-0.84.2}/uk_bin_collection/uk_bin_collection/councils/WalthamForest.py +0 -0
  171. {uk_bin_collection-0.84.1 → uk_bin_collection-0.84.2}/uk_bin_collection/uk_bin_collection/councils/WarwickDistrictCouncil.py +0 -0
  172. {uk_bin_collection-0.84.1 → uk_bin_collection-0.84.2}/uk_bin_collection/uk_bin_collection/councils/WaverleyBoroughCouncil.py +0 -0
  173. {uk_bin_collection-0.84.1 → uk_bin_collection-0.84.2}/uk_bin_collection/uk_bin_collection/councils/WealdenDistrictCouncil.py +0 -0
  174. {uk_bin_collection-0.84.1 → uk_bin_collection-0.84.2}/uk_bin_collection/uk_bin_collection/councils/WelhatCouncil.py +0 -0
  175. {uk_bin_collection-0.84.1 → uk_bin_collection-0.84.2}/uk_bin_collection/uk_bin_collection/councils/WestBerkshireCouncil.py +0 -0
  176. {uk_bin_collection-0.84.1 → uk_bin_collection-0.84.2}/uk_bin_collection/uk_bin_collection/councils/WestLindseyDistrictCouncil.py +0 -0
  177. {uk_bin_collection-0.84.1 → uk_bin_collection-0.84.2}/uk_bin_collection/uk_bin_collection/councils/WestLothianCouncil.py +0 -0
  178. {uk_bin_collection-0.84.1 → uk_bin_collection-0.84.2}/uk_bin_collection/uk_bin_collection/councils/WestNorthamptonshireCouncil.py +0 -0
  179. {uk_bin_collection-0.84.1 → uk_bin_collection-0.84.2}/uk_bin_collection/uk_bin_collection/councils/WestSuffolkCouncil.py +0 -0
  180. {uk_bin_collection-0.84.1 → uk_bin_collection-0.84.2}/uk_bin_collection/uk_bin_collection/councils/WiganBoroughCouncil.py +0 -0
  181. {uk_bin_collection-0.84.1 → uk_bin_collection-0.84.2}/uk_bin_collection/uk_bin_collection/councils/WiltshireCouncil.py +0 -0
  182. {uk_bin_collection-0.84.1 → uk_bin_collection-0.84.2}/uk_bin_collection/uk_bin_collection/councils/WindsorAndMaidenheadCouncil.py +0 -0
  183. {uk_bin_collection-0.84.1 → uk_bin_collection-0.84.2}/uk_bin_collection/uk_bin_collection/councils/WokingBoroughCouncil.py +0 -0
  184. {uk_bin_collection-0.84.1 → uk_bin_collection-0.84.2}/uk_bin_collection/uk_bin_collection/councils/WychavonDistrictCouncil.py +0 -0
  185. {uk_bin_collection-0.84.1 → uk_bin_collection-0.84.2}/uk_bin_collection/uk_bin_collection/councils/WyreCouncil.py +0 -0
  186. {uk_bin_collection-0.84.1 → uk_bin_collection-0.84.2}/uk_bin_collection/uk_bin_collection/councils/YorkCouncil.py +0 -0
  187. {uk_bin_collection-0.84.1 → uk_bin_collection-0.84.2}/uk_bin_collection/uk_bin_collection/councils/council_class_template/councilclasstemplate.py +0 -0
  188. {uk_bin_collection-0.84.1 → uk_bin_collection-0.84.2}/uk_bin_collection/uk_bin_collection/create_new_council.py +0 -0
  189. {uk_bin_collection-0.84.1 → uk_bin_collection-0.84.2}/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.84.1
3
+ Version: 0.84.2
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.84.1"
3
+ version = "0.84.2"
4
4
  description = "Python Lib to collect UK Bin Data"
5
5
  readme = "README.md"
6
6
  authors = ["Robert Bradley <robbrad182@gmail.com>"]
@@ -0,0 +1,143 @@
1
+ import math
2
+ from datetime import *
3
+
4
+ import requests
5
+ from bs4 import BeautifulSoup
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
+ def parse_data(self, page: str, **kwargs) -> dict:
14
+
15
+ user_uprn = kwargs.get("uprn")
16
+ user_postcode = kwargs.get("postcode")
17
+ check_uprn(user_uprn)
18
+ check_postcode(user_postcode)
19
+
20
+ requests.packages.urllib3.disable_warnings()
21
+ s = requests.Session()
22
+
23
+ # Get the first form
24
+ response = s.get(
25
+ "https://my.northtyneside.gov.uk/category/81/bin-collection-dates",
26
+ verify = False,
27
+ )
28
+
29
+ # Find the form ID and submit with a postcode
30
+ soup = BeautifulSoup(response.text, features="html.parser")
31
+ form_build_id = soup.find("input", {"name": "form_build_id"})["value"]
32
+ response = s.post(
33
+ "https://my.northtyneside.gov.uk/category/81/bin-collection-dates",
34
+ data = {
35
+ "postcode": user_postcode,
36
+ "op": "Find",
37
+ "form_build_id": form_build_id,
38
+ "form_id": "ntc_address_wizard",
39
+ },
40
+ verify = False,
41
+ )
42
+
43
+ # Find the form ID and submit with the UPRN
44
+ soup = BeautifulSoup(response.text, features="html.parser")
45
+ form_build_id = soup.find("input", {"name": "form_build_id"})["value"]
46
+ response = s.post(
47
+ "https://my.northtyneside.gov.uk/category/81/bin-collection-dates",
48
+ data = {
49
+ "house_number": f"0000{user_uprn}",
50
+ "op": "Use",
51
+ "form_build_id": form_build_id,
52
+ "form_id": "ntc_address_wizard",
53
+ },
54
+ verify = False,
55
+ )
56
+
57
+ # Parse form page and get the day of week and week offsets
58
+ soup = BeautifulSoup(response.text, features="html.parser")
59
+ info_section = soup.find("section", {"class": "block block-ntc-bins clearfix"})
60
+
61
+ regular_day, garden_day, special_day = None, None, None
62
+ # Get day of week and week label for refuse, garden and special collections.
63
+ # Week label is A or B. Convert that to an int to use as an offset.
64
+ for anchor in info_section.findAll("a"):
65
+ if anchor.text.startswith("Refuse and Recycling"):
66
+ regular_day = anchor.text.strip().split()[-3]
67
+ if anchor.text.strip().split()[-1] == "A":
68
+ regular_week = 0
69
+ else:
70
+ regular_week = 1
71
+ elif anchor.text.startswith("Garden Waste"):
72
+ garden_day = anchor.text.strip().split()[-3]
73
+ if anchor.text.strip().split()[-1] == "A":
74
+ garden_week = 0
75
+ else:
76
+ garden_week = 1
77
+ for para in info_section.findAll("p"):
78
+ if para.text.startswith("Your special collections day"):
79
+ special_day = para.find("strong").text.strip()
80
+
81
+ # The regular calendar only shows until end of March 2026, work out how many weeks that is
82
+ weeks_total = math.floor((datetime(2026, 4, 1) - datetime.now()).days / 7)
83
+
84
+ # The garden calendar only shows until end of November 2024, work out how many weeks that is
85
+ garden_weeks_total = math.floor((datetime(2024, 12, 1) - datetime.now()).days / 7)
86
+
87
+ regular_collections, garden_collections, special_collections = [], [], []
88
+ # Convert day text to series of dates using previous calculation
89
+ if regular_day is not None:
90
+ regular_collections = get_weekday_dates_in_period(
91
+ datetime.today(),
92
+ days_of_week.get(regular_day.capitalize()),
93
+ amount=weeks_total,
94
+ )
95
+ if garden_day is not None:
96
+ garden_collections = get_weekday_dates_in_period(
97
+ datetime.today(),
98
+ days_of_week.get(garden_day.capitalize()),
99
+ amount=garden_weeks_total,
100
+ )
101
+ if special_day is not None:
102
+ special_collections = get_weekday_dates_in_period(
103
+ datetime.today(),
104
+ days_of_week.get(special_day.capitalize()),
105
+ amount=weeks_total,
106
+ )
107
+
108
+ collections = []
109
+
110
+ # Add regular collections, and differentiate between regular and recycling bins
111
+ for item in regular_collections:
112
+ item_as_date = datetime.strptime(item, date_format)
113
+ # Check if holiday (calendar only has one day that's a holiday, and it's moved to the next day)
114
+ if is_holiday(item_as_date, Region.ENG):
115
+ item_as_date += timedelta(days=1)
116
+ # Use the isoweek number to separate collections based on week label.
117
+ if (item_as_date.date().isocalendar()[1] % 2) == regular_week:
118
+ collections.append(("Refuse (green)", item_as_date))
119
+ else:
120
+ collections.append(("Recycling (grey)", item_as_date))
121
+
122
+ # Add garden collections
123
+ for item in garden_collections:
124
+ item_as_date = datetime.strptime(item, date_format)
125
+ # Garden collections do not move for bank holidays
126
+ if (item_as_date.date().isocalendar()[1] % 2) == garden_week:
127
+ collections.append(("Garden Waste (brown)", item_as_date))
128
+
129
+ # Add special collections
130
+ collections += [
131
+ ("Special Collection (bookable)", datetime.strptime(item, date_format))
132
+ for item in special_collections
133
+ ]
134
+
135
+ return {
136
+ "bins": [
137
+ {
138
+ "type": item[0],
139
+ "collectionDate": item[1].strftime(date_format),
140
+ }
141
+ for item in sorted(collections, key=lambda x: x[1])
142
+ ]
143
+ }
@@ -1,221 +0,0 @@
1
- import math
2
- from datetime import *
3
-
4
- import requests
5
- from bs4 import BeautifulSoup
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
- # import the wonderful Beautiful Soup and the URL grabber
12
- class CouncilClass(AbstractGetBinDataClass):
13
- """
14
- Concrete classes have to implement all abstract operations of the
15
- base class. They can also override some operations with a default
16
- implementation.
17
- """
18
-
19
- def parse_data(self, page: str, **kwargs) -> dict:
20
- requests.packages.urllib3.disable_warnings()
21
- data = {"bins": []}
22
- user_uprn = kwargs.get("uprn")
23
- user_postcode = kwargs.get("postcode")
24
- check_uprn(user_uprn)
25
- check_postcode(user_postcode)
26
-
27
- # Get form data
28
- s = requests.Session()
29
- cookies = {
30
- "ntc-cookie-policy": "1",
31
- "SSESS6ec6d5d2d471c0357053d5993a839bce": "qBdR7XhmSMd5_PDBIqG0It2R0Fq67igrejRY-WOcskE",
32
- "has_js": "1",
33
- }
34
- headers = {
35
- "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8",
36
- "Accept-Language": "en-GB,en;q=0.7",
37
- "Cache-Control": "max-age=0",
38
- "Connection": "keep-alive",
39
- "Origin": "https://my.northtyneside.gov.uk",
40
- "Referer": "https://my.northtyneside.gov.uk/category/81/bin-collection-dates",
41
- "Sec-Fetch-Dest": "document",
42
- "Sec-Fetch-Mode": "navigate",
43
- "Sec-Fetch-Site": "same-origin",
44
- "Sec-Fetch-User": "?1",
45
- "Sec-GPC": "1",
46
- "Upgrade-Insecure-Requests": "1",
47
- "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/108.0.0.0 Safari/537.36",
48
- "sec-ch-ua": '"Not?A_Brand";v="8", "Chromium";v="108", "Brave";v="108"',
49
- "sec-ch-ua-mobile": "?0",
50
- "sec-ch-ua-platform": '"Windows"',
51
- }
52
- ajax_data = {
53
- "postcode": user_postcode,
54
- "form_build_id": "form-BQ47tM0NKADE0s8toYkdSef3QBn6lDM-yBseqIOho80",
55
- "form_id": "ntc_address_wizard",
56
- "_triggering_element_name": "op",
57
- "_triggering_element_value": "Find",
58
- "ajax_html_ids[]": [
59
- "ntc-web-my",
60
- "skip-link",
61
- "navbar",
62
- "navbar-collapse",
63
- "search-block-form",
64
- "ntc-web-search-input-label",
65
- "ntc-web-search-input",
66
- "ui-id-1",
67
- "ntc-web-main",
68
- "main-content",
69
- "block-system-main",
70
- "web-drupal-content",
71
- "web-drupal-content-main",
72
- "node-4024",
73
- "block-ntc-address-ntc-address-finder",
74
- "wizard-form-wrapper",
75
- "ntc-address-wizard",
76
- "edit-postcode",
77
- "edit-find",
78
- "backtotop",
79
- ],
80
- "ajax_page_state[theme]": "ntc_bootstrap",
81
- "ajax_page_state[theme_token]": "LN05JIzI6rocWDiBpDyVeywYveuS4jlxD_N0_hhp2Ko",
82
- "ajax_page_state[css][0]": "1",
83
- "ajax_page_state[css][modules/system/system.base.css]": "1",
84
- "ajax_page_state[css][misc/ui/jquery.ui.core.css]": "1",
85
- "ajax_page_state[css][misc/ui/jquery.ui.theme.css]": "1",
86
- "ajax_page_state[css][misc/ui/jquery.ui.menu.css]": "1",
87
- "ajax_page_state[css][misc/ui/jquery.ui.autocomplete.css]": "1",
88
- "ajax_page_state[css][sites/all/modules/calendar/css/calendar_multiday.css]": "1",
89
- "ajax_page_state[css][sites/all/modules/date/date_repeat_field/date_repeat_field.css]": "1",
90
- "ajax_page_state[css][modules/field/theme/field.css]": "1",
91
- "ajax_page_state[css][modules/node/node.css]": "1",
92
- "ajax_page_state[css][sites/all/modules/youtube/css/youtube.css]": "1",
93
- "ajax_page_state[css][sites/all/modules/views/css/views.css]": "1",
94
- "ajax_page_state[css][sites/all/modules/back_to_top/css/back_to_top.css]": "1",
95
- "ajax_page_state[css][sites/all/modules/ckeditor/css/ckeditor.css]": "1",
96
- "ajax_page_state[css][sites/all/modules/ctools/css/ctools.css]": "1",
97
- "ajax_page_state[css][sites/all/modules/panels/css/panels.css]": "1",
98
- "ajax_page_state[css][sites/all/modules/taxonomy_access/taxonomy_access.css]": "1",
99
- "ajax_page_state[css][sites/all/modules/search_autocomplete/css/themes/minimal.css]": "1",
100
- "ajax_page_state[css][sites/all/themes/ntc_bootstrap/css/bootstrap.css]": "1",
101
- "ajax_page_state[css][sites/all/themes/ntc_bootstrap/css/generic.css]": "1",
102
- "ajax_page_state[css][sites/all/themes/ntc_bootstrap/css/custom.css]": "1",
103
- "ajax_page_state[css][sites/all/themes/ntc_bootstrap/css/components.css]": "1",
104
- "ajax_page_state[css][sites/all/themes/ntc_bootstrap/css/modules.css]": "1",
105
- "ajax_page_state[css][sites/all/themes/ntc_bootstrap/css/fostering.css]": "1",
106
- "ajax_page_state[css][sites/all/themes/ntc_bootstrap/css/responsive.css]": "1",
107
- "ajax_page_state[css][sites/all/themes/ntc_bootstrap/css/ie10.css]": "1",
108
- "ajax_page_state[css][sites/all/themes/ntc_bootstrap/css/ie.css]": "1",
109
- "ajax_page_state[js][0]": "1",
110
- "ajax_page_state[js][1]": "1",
111
- "ajax_page_state[js][sites/all/themes/bootstrap/js/bootstrap.js]": "1",
112
- "ajax_page_state[js][//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js]": "1",
113
- "ajax_page_state[js][misc/jquery-extend-3.4.0.js]": "1",
114
- "ajax_page_state[js][misc/jquery-html-prefilter-3.5.0-backport.js]": "1",
115
- "ajax_page_state[js][misc/jquery.once.js]": "1",
116
- "ajax_page_state[js][misc/drupal.js]": "1",
117
- "ajax_page_state[js][//ajax.googleapis.com/ajax/libs/jqueryui/1.10.2/jquery-ui.min.js]": "1",
118
- "ajax_page_state[js][sites/all/modules/jquery_update/replace/ui/external/jquery.cookie.js]": "1",
119
- "ajax_page_state[js][sites/all/modules/jquery_update/replace/misc/jquery.form.min.js]": "1",
120
- "ajax_page_state[js][misc/ajax.js]": "1",
121
- "ajax_page_state[js][sites/all/modules/jquery_update/js/jquery_update.js]": "1",
122
- "ajax_page_state[js][sites/all/modules/back_to_top/js/back_to_top.js]": "1",
123
- "ajax_page_state[js][sites/all/themes/bootstrap/js/misc/_progress.js]": "1",
124
- "ajax_page_state[js][sites/all/modules/field_group/field_group.js]": "1",
125
- "ajax_page_state[js][sites/all/modules/search_autocomplete/js/jquery.autocomplete.js]": "1",
126
- "ajax_page_state[js][sites/all/themes/ntc_bootstrap/scripts/NTC.jquery.contentMenuScroller.js]": "1",
127
- "ajax_page_state[js][sites/all/themes/ntc_bootstrap/scripts/NTC.jquery.alertClose.js]": "1",
128
- "ajax_page_state[js][sites/all/themes/ntc_bootstrap/scripts/NTC.jquery.activeTrail.js]": "1",
129
- "ajax_page_state[js][sites/all/themes/ntc_bootstrap/scripts/NTC.jquery.expandLinkToDiv.js]": "1",
130
- "ajax_page_state[js][sites/all/themes/ntc_bootstrap/scripts/NTC.jquery.events.js]": "1",
131
- "ajax_page_state[js][sites/all/themes/ntc_bootstrap/scripts/cookieconsent.js]": "1",
132
- "ajax_page_state[js][sites/all/themes/ntc_bootstrap/scripts/google-analytics.js]": "1",
133
- "ajax_page_state[js][sites/all/themes/ntc_bootstrap/scripts/ios-orientationchange-fix.js]": "1",
134
- "ajax_page_state[js][sites/all/themes/bootstrap/js/misc/ajax.js]": "1",
135
- "ajax_page_state[jquery_version]": "1.10",
136
- }
137
- uprn_data = {
138
- "house_number": "0000" + f"{user_uprn}",
139
- "op": "Use",
140
- "form_build_id": "form-BQ47tM0NKADE0s8toYkdSef3QBn6lDM-yBseqIOho80",
141
- "form_id": "ntc_address_wizard",
142
- }
143
- collections = []
144
-
145
- response = s.post(
146
- "https://my.northtyneside.gov.uk/system/ajax",
147
- # cookies=cookies,
148
- headers=headers,
149
- data=ajax_data,
150
- verify=False,
151
- )
152
- response = s.post(
153
- "https://my.northtyneside.gov.uk/category/81/bin-collection-dates",
154
- # cookies=cookies,
155
- headers=headers,
156
- data=uprn_data,
157
- verify=False,
158
- )
159
- response = s.get(
160
- "https://my.northtyneside.gov.uk/category/81/bin-collection-dates",
161
- # cookies=cookies,
162
- headers=headers,
163
- data=uprn_data,
164
- verify=False,
165
- )
166
-
167
- # Parse form page and get the day of week text
168
- soup = BeautifulSoup(response.text, features="html.parser")
169
- soup.prettify()
170
- bin_text = soup.find("section", {"class": "block block-ntc-bins clearfix"})
171
- regular_text = bin_text.select("p:nth-child(2) > strong")[0].text.strip()
172
- x = bin_text.select("p:nth-child(4) > strong")
173
- if len(bin_text.select("p:nth-child(4) > strong")) == 1:
174
- special_text = bin_text.select("p:nth-child(4) > strong")[0].text.strip()
175
- else:
176
- special_text = bin_text.select("p:nth-child(5) > strong")[0].text.strip()
177
-
178
- # Since calendar only shows until end of March 2024, work out how many weeks that is
179
- weeks_total = math.floor((datetime(2024, 4, 1) - datetime.now()).days / 7)
180
-
181
- # Convert day text to series of dates using previous calculation
182
- regular_collections = get_weekday_dates_in_period(
183
- datetime.today(),
184
- days_of_week.get(regular_text.capitalize()),
185
- amount=weeks_total,
186
- )
187
- special_collections = get_weekday_dates_in_period(
188
- datetime.today(), days_of_week.get(special_text.capitalize())
189
- )
190
-
191
- # Differentiate between regular and recycling bins
192
- for item in regular_collections:
193
- item_as_date = datetime.strptime(item, date_format)
194
- # Check if holiday (calendar only has one day that's a holiday, and it's moved to the next day)
195
- if is_holiday(item_as_date, Region.ENG):
196
- item_as_date += timedelta(days=1)
197
- # Use the isoweek number to separate collections - at the time of writing 11th Jan is week 2, which
198
- # is for the grey bin
199
- if (item_as_date.date().isocalendar()[1] % 2) == 0:
200
- collections.append(("Regular bin (green)", item_as_date))
201
-
202
- else:
203
- collections.append(("Recycling bin (grey)", item_as_date))
204
-
205
- # Add the special collection dates to the collection tuple
206
- collections += [
207
- ("Special collection (bookable)", datetime.strptime(item, date_format))
208
- for item in special_collections
209
- ]
210
-
211
- # Sort the collections tuple by date, the add to dictionary and return
212
- ordered_data = sorted(collections, key=lambda x: x[1])
213
- data = {"bins": []}
214
- for item in ordered_data:
215
- dict_data = {
216
- "type": item[0],
217
- "collectionDate": item[1].strftime(date_format),
218
- }
219
- data["bins"].append(dict_data)
220
-
221
- return data