يهدف هذا المشروع إلى توفير طريقة أنيقة ومعيارية لتوفير بيانات مجموعة الحاويات بتنسيق JSON من مجالس المملكة المتحدة التي ليس لديها واجهة برمجة التطبيقات (API) للقيام بذلك.
لماذا تفعل هذا؟ قد ترغب في استخدام هذا في أتمتة المنزل - على سبيل المثال، لنفترض أن لديك شريط LED يضيء في يوم جمع الصناديق بلون الحاوية التي تريد إخراجها، فإن هذا الريبو يوفر البيانات الخاصة بذلك.
يرجى احترام البنية التحتية للمجلس / سياسة الاستخدام وجمع البيانات فقط لاستخدامك الشخصي على وتيرة مناسبة لجدول التجميع الخاص بك.
تستخدم معظم البرامج النصية برنامج Beautiful Soup 4 لاستخراج البيانات، على الرغم من أن البعض الآخر يستخدم أساليب مختلفة، مثل محاكاة سلوك متصفح الويب، أو قراءة البيانات من ملفات CSV.
️ يرجى التأكد من عدم تقديم طلب للمجلس الخاص بك بالفعل. يمكنك القيام بذلك من خلال البحث في صفحة المشكلات.
إذا كانت هناك مشكلة موجودة بالفعل، فيرجى التعليق على هذه المشكلة للتعبير عن اهتمامك. يرجى عدم فتح موضوع جديد لأنه سيتم إغلاقه كنسخة مكررة.
إذا لم تكن المشكلة موجودة بالفعل، فيرجى ملء نموذج طلب المجلس الجديد، بما في ذلك أكبر قدر ممكن من المعلومات، بما في ذلك:
يرجى العلم أن هذا المشروع تتم إدارته من قبل مساهمين متطوعين وأن إكماله يعتمد على عوامل عديدة - حتى مع الطلب، لا يمكننا ضمان ما إذا كان/متى سيتم إضافة مجلسك.
يمكن تثبيت هذا التكامل مباشرة عبر HACS. للتثبيت:
Download
HACS
> Integrations
> ⋮
> Custom repositories
.https://github.com/robbrad/UKBinCollectionData
في حقل Repository
.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 لتعيين نوع الحاوية إلى اللون والرمز
فيما يلي مثال لتعيين اللون والأيقونة للنوع 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، أو عندما لا يقوم البرنامج النصي باستخراج صفحة ويب. على سبيل المثال، يحتاج البرنامج النصي لمجلس مدينة ليدز إلى معلمتين إضافيتين - الرمز البريدي ورقم المنزل. ويتم ذلك على النحو التالي:
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 (الرقم المرجعي الفريد للملكية) لتحديد الممتلكات الخاصة بك. يمكنك أن تجد لك هنا أو هنا.
تحتاج بعض المجالس إلى السيلينيوم لإجراء عملية الكشط نيابة عن Home Assistant. أسهل طريقة للقيام بذلك هي تشغيل السيلينيوم كما هو الحال في حاوية Docker. ومع ذلك، عند القيام بذلك، يجب أن يكون خادم Home Assistant قادرًا على الوصول إلى خادم Selenium
تنزيل Docker Desktop لنظام التشغيل Windows:
تشغيل دوكر سطح المكتب:
تثبيت عامل الميناء:
افتح المحطة وقم بتشغيل الأوامر التالية:
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
تنزيل Docker Desktop لنظام التشغيل Mac:
تشغيل دوكر سطح المكتب:
افتح محطة أو موجه الأوامر:
اسحب صورة Selenium Standalone Chrome:
docker pull selenium/standalone-chrome
قم بتشغيل حاوية Selenium Standalone Chrome:
docker run -d -p 4444:4444 --name selenium-chrome selenium/standalone-chrome
http://localhost:4444
ابحث عن مشروع UKBinCollectionData
:
قم بتوفير عنوان URL لخادم السيلينيوم:
http://localhost:4444/wd/hub
ويندوز/لينكس/ماك:
docker pull selenium/standalone-chrome docker run -d -p 4444:4444 --name selenium-chrome selenium/standalone-chrome
عنوان 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 Base URL: http://localhost:8080/api
Swagger UI: http://localhost:8080/api/ui/
يمكن الوصول إلى وثائق API عبر Swagger UI. استخدم واجهة مستخدم Swagger لاستكشاف نقاط النهاية المتاحة واختبار الطلبات المختلفة وفهم وظائف واجهة برمجة التطبيقات.
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 "
وهذا يشمل الكروم المستقل للسيلينيوم للمجالس القائمة على السيلينيوم
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
).