該計畫旨在提供一種簡潔、標準的方式,從沒有 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 以獲取更多資訊。
有些腳本依賴外部套件來運作。開發和poetry install
所需的腳本清單可以在專案的 PROJECT_TOML 中找到。
一些議會使用 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
)。