このプロジェクトは、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
を検索します。市区町村のテキストから Bin Type の色を設定するのは難しいことを認識しており、一般的な統合を維持するために、市議会から色を取得せず (すべての市区町村がこれをフィールドとして提供しているわけではありません)、Bin Type と次回収集日のみを使用します。
最初の画面でコンポーネントを構成するときに、JSON 文字列を設定して、ビンのタイプを色とアイコンにマッピングできます。
ここでは、タイプ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
フォルダーにあります。
一部のスクリプトでは、たとえば UPRN が URL で渡されない場合や、スクリプトが Web ページをスクレイピングしない場合など、追加のパラメーターが必要になります。たとえば、リーズ市議会のスクリプトには、郵便番号と番地という 2 つの追加パラメータが必要です。これは次のように行われます。
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
を使用して渡すことができます。評議会のスクリプトに必要なパラメータを確認するには、プロジェクト Wiki で詳細を確認してください。
一部のスクリプトは機能するために外部パッケージに依存します。開発と実行の両方に必要なスクリプトのリストは、プロジェクトの PROJECT_TOML にあります。インストールは、リポジトリのルート内からpoetry install
を介して実行できます。
一部の自治体では、UPRN (固有の不動産参照番号) を使用して不動産を識別します。ここまたはここであなたのものを見つけることができます。
一部の議会では、Home Assistant に代わってスクレイピングを実行するために Selenium が必要です。これを行う最も簡単な方法は、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
Selenium サーバーの URL:
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/
API ドキュメントには、Swagger UI からアクセスできます。 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
) のベースとして使用してください。