该项目旨在提供一种简洁、标准的方式,从没有 API 的英国议会提供 JSON 格式的垃圾箱收集数据。
为什么要这样做?您可能想在家庭自动化中使用它 - 例如,假设您有一个 LED 条,在垃圾箱收集当天会根据您想要取出的垃圾箱的颜色亮起,然后此存储库会提供相应的数据。
请尊重议会的基础设施/使用政策,并且仅按照您的收集计划的适当频率收集供您个人使用的数据。
大多数脚本都使用 Beautiful Soup 4 来抓取数据,尽管其他脚本使用不同的方法,例如模拟 Web 浏览器行为或从 CSV 文件读取数据。
️ 请检查是否尚未向您的理事会提出请求。您可以通过在“问题”页面上搜索来完成此操作。
如果问题已经存在,请对该问题发表评论以表达您的兴趣。请不要打开新问题,因为该问题将作为重复问题被关闭。
如果问题尚不存在,请填写新的理事会申请表,包括尽可能多的信息,包括:
请注意,该项目由志愿者贡献者运行,完成情况取决于许多因素 - 即使有请求,我们也无法保证是否/何时添加您的理事会。
该集成可以直接通过 HACS 安装。安装:
Download
HACS
> Integrations
> ⋮
> Custom repositories
。Repository
字段中输入https://github.com/robbrad/UKBinCollectionData
。Integration
作为类别,然后单击ADD
。+ Add Integration
并搜索并选择UK Bin Collection Data
,然后单击Download
。Settings
> Devices & Services
单击+ Add Integration
并搜索UK Bin Collection Data
。configuration.yaml
)。custom_components
文件夹,则需要创建它。custom_components/uk_bin_collection
复制到您在上一步中找到/创建的custom_components
文件夹中。Settings
> Devices & Services
单击+ Add Integration
并搜索UK Bin Collection Data
。我们意识到很难从理事会文本中为垃圾箱类型设置颜色,并且为了保持集成的通用性,我们不从理事会捕获颜色(并非所有理事会都将其作为字段提供),仅捕获垃圾箱类型和下一个收集日期。
在第一个屏幕上配置组件时,您可以设置 JSON 字符串以将 bin 类型映射到颜色和图标
以下是为Empty Standard General Waste
类型设置颜色和图标的示例。此类型是从理事会返回的垃圾箱类型。您可以对多个垃圾箱执行此操作。
如果您在第一次设置时错过了这一点,您可以重新配置它。
{
"Empty Standard General Waste":
{
"icon": "mdi:trash-can",
"color": "blue"
}
}
---
## Standalone Usage
```commandline
PS G:ProjectsPythonUKBinCollectionDatauk_bin_collectioncollect_data.py
usage: collect_data.py [-h] [-p POSTCODE] [-n NUMBER] [-u UPRN] module URL
positional arguments:
module Name of council module to use (required)
URL URL to parse (required)
options:
-h, --help show this help message (optional)
-p POSTCODE, --postcode POSTCODE Postcode to parse - should include (optional)
a space and be wrapped in double
quotes
-n NUMBER, --number NUMBER House number to parse (optional)
-u UPRN, --uprn UPRN UPRN to parse (optional)
执行脚本的基本命令是:
python collect_data.py <council_name> "<collection_url>"
其中council_name
是理事会 .py 脚本的名称(不带 .py), collection_url
是要抓取的 URL。帮助文档将它们分别称为“模块”和“URL”。支持的理事会脚本可以在uk_bin_collection/uk_bin_collection/councils
文件夹中找到。
有些脚本需要额外的参数,例如,当 URL 中未传递 UPRN 时,或者脚本不抓取网页时。例如,利兹市议会脚本需要两个附加参数 - 邮政编码和门牌号。这样做是这样的:
python collect_data.py LeedsCityCouncil https://www.leeds.gov.uk/residents/bins-and-recycling/check-your-bin-day -p "LS1 2JG" -n 41
-p "postcode"
或--postcode "postcode"
传递邮政编码。邮政编码必须始终在中间包含一个空格并用双引号引起来(由于命令行参数的处理方式)。-n number
或--number number
传递。-u uprn
或--uprn uprn
传递UPRN 引用。要检查您的委员会脚本所需的参数,请查看项目 wiki 以获取更多信息。
有些脚本依赖外部包来运行。开发和执行所需的脚本列表可以在项目的 PROJECT_TOML 中找到。安装可以通过存储库根目录中的poetry install
来完成。
一些议会使用 UPRN(唯一财产参考号)来识别您的财产。您可以在这里或这里找到您的。
一些议会需要 Selenium 代表 Home Assistant 进行清理工作。最简单的方法是像在 Docker 容器中一样运行 Selenium。但是,您执行此操作时,Home Assistant 服务器必须能够访问 Selenium 服务器
下载适用于 Windows 的 Docker 桌面:
运行 Docker 桌面:
安装 Docker:
打开终端并运行以下命令:
sudo apt-get update
sudo apt-get install
apt-transport-https
ca-certificates
curl
gnupg
lsb-release
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
echo
" deb [arch= $( dpkg --print-architecture ) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu
$( lsb_release -cs ) stable " | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io
启动 Docker:
运行以下命令启动 Docker:
sudo systemctl start docker
启用 Docker 在启动时启动:
巴什
复制代码
sudo systemctl enable docker
下载适用于 Mac 的 Docker 桌面:
运行 Docker 桌面:
打开终端或命令提示符:
拉取 Selenium 独立 Chrome 镜像:
docker pull selenium/standalone-chrome
运行 Selenium 独立 Chrome 容器:
docker run -d -p 4444:4444 --name selenium-chrome selenium/standalone-chrome
http://localhost:4444
找到UKBinCollectionData
项目:
提供 Selenium 服务器 URL:
http://localhost:4444/wd/hub
Windows/Linux/Mac:
docker pull selenium/standalone-chrome docker run -d -p 4444:4444 --name selenium-chrome selenium/standalone-chrome
硒服务器网址:
http://localhost:4444/wd/hub
我们为此创建了一个 API,位于 uk_bin_collection_api_server 下
docker build -t ukbc_api_server .
docker run -p 8080:8080 ukbc_api_server
Docker 容器运行后,您可以访问 API 端点:
API Base URL: http://localhost:8080/api
Swagger UI: http://localhost:8080/api/ui/
可以通过 Swagger UI 访问 API 文档。使用 Swagger UI 探索可用端点、测试不同请求并了解 API 功能。
GET /bin_collection/{council}
描述:检索有关指定议会的垃圾箱收集的信息。
参数:
council (required): Name of the council.
Other optional parameters: [Specify optional parameters if any]
请求示例:
curl -X GET " http://localhost:8080/api/bin_collection/{council} " -H " accept: application/json "
这包括基于 Selenium 的委员会的 Selenium 独立铬
version: '3'
services:
ukbc_api_server:
build:
context: .
dockerfile: Dockerfile
ports:
- "8080:8080" # Adjust the ports as needed
depends_on:
- selenium
selenium:
image: selenium/standalone-chrome:latest
ports:
- "4444:4444"
sudo apt-get update
sudo apt-get install docker-compose
docker-compose up
请在 HomeAssistant 帖子中发帖或提出新的(非市议会请求)问题。
随时欢迎您的贡献!请参阅CONTRIBUTING.md
以开始使用。请遵守项目的行为准则。
councilclasstemplate.py
)。