Este proyecto tiene como objetivo proporcionar una forma clara y estándar de proporcionar datos de recolección de contenedores en formato JSON de los ayuntamientos del Reino Unido que no tienen API para hacerlo.
¿Por qué hacer esto? Es posible que desee usar esto en una automatización del hogar; por ejemplo, digamos que tiene una barra de LED que se ilumina el día de la recolección del contenedor con el color del contenedor que desea sacar, luego este repositorio proporciona los datos para eso.
POR FAVOR, respete la política de uso/infraestructura del ayuntamiento y solo recopile datos para su uso personal con una frecuencia adecuada a su cronograma de recolección.
La mayoría de los scripts utilizan Beautiful Soup 4 para extraer datos, aunque otros utilizan enfoques diferentes, como emular el comportamiento del navegador web o leer datos de archivos CSV.
️ Por favor verifique que aún no se haya realizado una solicitud para su consejo. Puede hacerlo buscando en la página de Problemas.
Si ya existe un problema, comente sobre ese problema para expresar su interés. No abra un número nuevo, ya que se cerrará como duplicado.
Si aún no existe un problema, complete un nuevo formulario de Solicitud del Consejo, que incluya la mayor cantidad de información posible, que incluya:
Tenga en cuenta que este proyecto está dirigido por contribuyentes voluntarios y su finalización depende de numerosos factores; incluso con una solicitud, no podemos garantizar si se agregará su consejo y cuándo.
Esta integración se puede instalar directamente a través de HACS. Para instalar:
Download
HACS
> Integrations
> ⋮
> Custom repositories
.https://github.com/robbrad/UKBinCollectionData
en el campo Repository
.Integration
como categoría y luego haga clic en ADD
.+ Add Integration
, busque y seleccione UK Bin Collection Data
y luego haga clic en Download
.Settings
> Devices & Services
haga clic en + Add Integration
y busque UK Bin Collection Data
.configuration.yaml
).custom_components
allí, debe crearla.custom_components/uk_bin_collection
en la carpeta custom_components
que encontró/creó en el paso anterior.Settings
> Devices & Services
haga clic en + Add Integration
y busque UK Bin Collection Data
.Nos damos cuenta de que es difícil establecer un color del texto de los consejos para el tipo de contenedor y, para mantener la integración genérica, no capturamos el color de un consejo (no todos los consejos proporcionan esto como un campo), solo el tipo de contenedor y la próxima fecha de recolección.
Cuando configura el componente en la primera pantalla, puede configurar una cadena JSON para asignar el tipo de contenedor al color y al icono.
A continuación se muestra un ejemplo para configurar el color y el ícono para el tipo Empty Standard General Waste
. Este tipo es el tipo devuelto por el ayuntamiento para la papelera. Puede hacer esto para varios contenedores.
Si omite esto en la primera configuración, puede reconfigurarlo.
{
"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)
El comando básico para ejecutar un script es:
python collect_data.py <council_name> "<collection_url>"
donde council_name
es el nombre del script .py del consejo (sin .py) y collection_url
es la URL que se va a extraer. La documentación de ayuda se refiere a estos como "módulo" y "URL", respectivamente. Los scripts de consejo admitidos se pueden encontrar en la carpeta uk_bin_collection/uk_bin_collection/councils
.
Algunas secuencias de comandos requieren parámetros adicionales, por ejemplo, cuando no se pasa un UPRN en una URL o cuando la secuencia de comandos no está raspando una página web. Por ejemplo, el script del Ayuntamiento de Leeds necesita dos parámetros adicionales: un código postal y un número de casa. Esto se hace así:
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"
o --postcode "postcode"
. El código postal siempre debe incluir un espacio en el medio y estar entre comillas dobles (debido a cómo se manejan los argumentos de la línea de comando).-n number
o --number number
.-u uprn
o --uprn uprn
.Para verificar los parámetros necesarios para el script de su consejo, consulte la wiki del proyecto para obtener más información.
Algunos scripts dependen de paquetes externos para funcionar. Puede encontrar una lista de scripts necesarios para el desarrollo y la ejecución en PROJECT_TOML del proyecto. La instalación se puede realizar mediante poetry install
desde la raíz del repositorio.
Algunos ayuntamientos hacen uso del UPRN (Número Único de Referencia de Propiedad) para identificar su propiedad. Puedes encontrar el tuyo aquí o aquí.
Algunos consejos necesitan que Selenium realice la tarea en nombre de Home Assistant. La forma más sencilla de hacerlo es ejecutar Selenium como en un contenedor Docker. Independientemente de cómo haga esto, el servidor Home Assistant debe poder comunicarse con el servidor Selenium.
Descargue Docker Desktop para Windows:
Ejecute el escritorio Docker:
Instalar Docker:
Abra una terminal y ejecute los siguientes comandos:
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
Iniciar ventana acoplable:
Ejecute el siguiente comando para iniciar Docker:
sudo systemctl start docker
Habilite Docker para que se inicie al arrancar:
intento
Copiar código
sudo systemctl enable docker
Descargue Docker Desktop para Mac:
Ejecute el escritorio Docker:
Abra una terminal o símbolo del sistema:
Extraiga la imagen de Selenium Standalone Chrome:
docker pull selenium/standalone-chrome
Ejecute el contenedor Selenium Standalone Chrome:
docker run -d -p 4444:4444 --name selenium-chrome selenium/standalone-chrome
http://localhost:4444
Encuentre el proyecto UKBinCollectionData
:
Proporcione la URL del servidor Selenium:
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
URL del servidor de selenio:
http://localhost:4444/wd/hub
Hemos creado una API para esto ubicada en uk_bin_collection_api_server
docker build -t ukbc_api_server .
docker run -p 8080:8080 ukbc_api_server
Una vez que el contenedor Docker se esté ejecutando, puede acceder a los puntos finales de la API:
API Base URL: http://localhost:8080/api
Swagger UI: http://localhost:8080/api/ui/
Se puede acceder a la documentación de la API a través de la interfaz de usuario de Swagger. Utilice la interfaz de usuario de Swagger para explorar los puntos finales disponibles, probar diferentes solicitudes y comprender las funcionalidades de la API.
GET /bin_collection/{council}
Descripción: recupera información sobre la recolección de contenedores para el consejo especificado.
Parámetros:
council (required): Name of the council.
Other optional parameters: [Specify optional parameters if any]
Solicitud de ejemplo:
curl -X GET " http://localhost:8080/api/bin_collection/{council} " -H " accept: application/json "
Esto incluye Selenium standalone-chrome para consejos basados en 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
Publique en el hilo de HomeAssistant o plantee un problema nuevo (que no sea una solicitud del consejo).
¡Las contribuciones siempre son bienvenidas! Consulte CONTRIBUTING.md
para comenzar. Siga el código de conducta del proyecto.
councilclasstemplate.py
).