이 프로젝트는 API가 없는 영국 의회에서 JSON 형식으로 쓰레기통 수집 데이터를 제공하는 깔끔하고 표준적인 방법을 제공하는 것을 목표로 합니다.
왜 이런 일을 하는가? 홈 오토메이션에서 이것을 사용하고 싶을 수도 있습니다. 예를 들어 쓰레기통 수집일에 꺼내고 싶은 쓰레기통의 색상에 따라 불이 들어오는 LED 막대가 있다고 가정하면 이 저장소가 이에 대한 데이터를 제공합니다.
의회 인프라/사용 정책을 존중하고 수집 일정에 따라 적절한 빈도로 개인적인 용도로만 데이터를 수집하십시오.
대부분의 스크립트는 Beautiful Soup 4를 사용하여 데이터를 긁어내지만 다른 스크립트는 웹 브라우저 동작을 에뮬레이션하거나 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 유형과 다음 수집 날짜만 캡처합니다.
첫 번째 화면에서 구성 요소를 구성할 때 저장소 유형을 색상 및 아이콘에 매핑하는 JSON 문자열을 설정할 수 있습니다.
다음은 Empty Standard General Waste
유형에 대한 색상과 아이콘을 설정하는 예입니다. 이 유형은 bin에 대한 협의회에서 반환된 유형입니다. 여러 저장소에 대해 이 작업을 수행할 수 있습니다.
첫 번째 설정에서 이를 놓친 경우 재구성할 수 있습니다.
{
"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로 전달되지 않거나 스크립트가 웹 페이지를 스크래핑하지 않는 경우). 예를 들어, 리즈 시의회 스크립트에는 우편번호와 집 번호라는 두 개의 추가 매개변수가 필요합니다. 이는 다음과 같이 수행됩니다.
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
사용하여 전달할 수 있습니다.의회 스크립트에 필요한 매개변수를 확인하려면 프로젝트 위키에서 자세한 내용을 확인하세요.
일부 스크립트는 외부 패키지에 의존하여 작동합니다. 개발 및 실행에 필요한 스크립트 목록은 프로젝트의 PROJECT_TOML에서 찾을 수 있습니다. 설치는 저장소 루트 내에서 poetry install
통해 수행할 수 있습니다.
일부 시의회에서는 귀하의 부동산을 식별하기 위해 UPRN(고유 부동산 참조 번호)을 사용합니다. 여기 또는 여기에서 귀하의 것을 찾을 수 있습니다.
일부 협의회에서는 홈어시스턴트를 대신하여 스크랩을 실행하기 위해 Selenium이 필요합니다. 이를 수행하는 가장 쉬운 방법은 Docker 컨테이너에서처럼 Selenium을 실행하는 것입니다. 그러나 이렇게 하면 홈어시스턴트 서버가 Selenium 서버에 도달할 수 있어야 합니다.
Windows용 Docker Desktop 다운로드:
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를 시작하려면 다음 명령을 실행하십시오.
sudo systemctl start docker
부팅 시 Docker가 시작되도록 활성화합니다.
세게 때리다
코드 복사
sudo systemctl enable docker
Mac용 Docker Desktop 다운로드:
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
입니다.윈도우/리눅스/맥:
docker pull selenium/standalone-chrome docker run -d -p 4444:4444 --name selenium-chrome selenium/standalone-chrome
Selenium 서버 URL:
http://localhost:4444/wd/hub
uk_bin_collection_api_server 아래에 이에 대한 API를 만들었습니다.
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
)의 기반으로 사용하세요.