יש אולי רשימה של כל קווי האוטובוסים הקיימים עם התחנות שלהם (או אולי יש API לזה)?
-
@ששא השירות הרשמי כאן למידע על קוים, תחנות, מיקומים וזמני הגעה https://www.gov.il/he/departments/general/real_time_information_siri
API של מוביט בתשלום
https://moovit.com/he/maas-solutions-he/transit-apis/אולי גם כאן יש משהו
https://data.gov.il/dataset/?tags=תחבורה+ציבורית -
תברר אצל מי שפרסם כאן (לא הכי מעודכן)
-
https://data.gov.il/dataset/bus_stops
שם מופיע הקובץ המצורף
מספרי תחנות.xlsx
הבעיה היא שהוא רק לפי נ"צ ולא לפי כתובת מדויקת -
@יוסי-מחשבים את זה כבר ראיתי-חרשתי את כל האתר שם, אבל אני צריך תחנות לפי קווים, כל קו והתחנות שלו
אני באמצע לעבוד על מה ש @אביי הביא לי, כבר קיבלתי מהם פעם גישה אבל עדיין לא השתמשתי בזה עד היום... -
@אביי כתב ביש אולי רשימה של כל קווי האוטובוסים הקיימים עם התחנות שלהם (או אולי יש API לזה)?:
@ששא השירות הרשמי כאן למידע על קוים, תחנות, מיקומים וזמני הגעה https://www.gov.il/he/departments/general/real_time_information_siri
מישהו מתמצא בזה?
בתיעוד שלהם כתוב לכאורה שלקבלת כל תחנות הקו צריך לעשות קריאה ככה/json?Key=DM1234&MonitoringRef=all&LineRef=5
זה לקבלת כל התחנות של קו 5
זה נכון?
אז ניסיתי לעשות אצלי ככה<?php $data = array( 'Key' => '***', 'MonitoringRef' => 'all', 'LineRef' => '5' ); $json_data = json_encode($data); $url = 'http://*****/2.8/json'; // הגדרת אפשרויות הבקשה $options = array( 'http' => array( 'method' => 'POST', 'header' => 'Content-Type: application/json', 'content' => $json_data ) ); $context = stream_context_create($options); $response = file_get_contents($url, false, $context); echo $response; ?>
ואני מקבל
Failed to open stream: HTTP request failed!
ניסיתי ככה
<?php $data = array( 'Key' => '***', 'MonitoringRef' => 'all', 'LineRef' => '5' ); $json_data = json_encode($data); $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, 'http://***/2.8/json'); curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_POSTFIELDS, $json_data); curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json')); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); $response = curl_exec($ch); if (curl_errno($ch)) { echo 'שגיאת cURL: ' . curl_error($ch); } curl_close($ch); echo $response; ?>
ואני מקבל
שגיאת cURL: Recv failure: Connection reset by peer
למה זה?
בעיקרון קיבלתי מהם גישה לכתובת IP של השרת שלי!יכול להיות שאם אני מריץ את הקישור של הקוד PHP הזה בדפדפן אני שולח לו את ה IP שלי ולא של השרת? או אולי נשלח לו כתובת הדומיין ולא ה IP שאותו פתחו לי?
מה הבעיה? -
א. אני לא יודע לענות לך על התיעוד שלהם שאינו פומבי, אם יש לך תיעוד תעלה אותו לכאן.
ב. אתה לדעתי לא משתמש בכלל בAPI הנכון, כי הן מהדף אליו הפנית והן מלשון הפרמטר MonitoringRef נשמע שאתה עובד מול מידע זמן אמת, בעוד שתחנות קו זה מידע סטטי ולא מידע זמן אמת. מידע סטטי מתואר פה https://www.gov.il/he/Departments/General/gtfs_general_transit_feed_specifications, גם עליו אין לי מושג מה התיעוד.
ג. גישה דרך PHP זה תמיד הכתובת IP של השרת, וגם גישה דרך מכונה עם דומיין הבקשה מתקבלת עם האייפי המורשה.
יכול להיות שגיאות של חיבור נסגר בגלל פרמטרים שגויים.
ד. סביר שהLineRef אינו ממש הקו אלא מזהה ייחודי שלו, או שיש עוד פרמטר של מפעיל, אחרת יש שפע של קווי 5 אפשריים.
ה. זה עבודה קשה לבדוק שאילתה כל הזמן בPHP, כדאי לבדוק עם כלי כמו PostMan או כל כלי אחר (אפשר עקרונית גם בדפדפן בקונסול). -
@dovid כתב ביש אולי רשימה של כל קווי האוטובוסים הקיימים עם התחנות שלהם (או אולי יש API לזה)?:
מידע סטטי מתואר פה https://www.gov.il/he/Departments/General/gtfs_general_transit_feed_specifications, גם עליו אין לי מושג מה התיעוד.
יש שם בסוף העמוד את הקובץ הזה להורדה ששם יש תיעוד
@dovid כתב ביש אולי רשימה של כל קווי האוטובוסים הקיימים עם התחנות שלהם (או אולי יש API לזה)?:
א. אני לא יודע לענות לך על התיעוד שלהם שאינו פומבי, אם יש לך תיעוד תעלה אותו לכאן.
גם זה יש שם בסוף העמוד את הקובץ הזה.
@dovid כתב ביש אולי רשימה של כל קווי האוטובוסים הקיימים עם התחנות שלהם (או אולי יש API לזה)?:
ה. זה עבודה קשה לבדוק שאילתה כל הזמן בPHP, כדאי לבדוק עם כלי כמו PostMan או כל כלי אחר (אפשר עקרונית גם בדפדפן בקונסול).
לא הבנתי
-
@dovid כתב ביש אולי רשימה של כל קווי האוטובוסים הקיימים עם התחנות שלהם (או אולי יש API לזה)?:
הקבצים זמינים להורדה פה
https://gtfs.mot.gov.il/gtfsfiles/
מתעדכנים כל לילה. -
@dovid כתב ביש אולי רשימה של כל קווי האוטובוסים הקיימים עם התחנות שלהם (או אולי יש API לזה)?:
ב. אתה לדעתי לא משתמש בכלל בAPI הנכון, כי הן מהדף אליו הפנית והן מלשון הפרמטר MonitoringRef נשמע שאתה עובד מול מידע זמן אמת, בעוד שתחנות קו זה מידע סטטי ולא מידע זמן אמת
אבל יש שם את האפשרות הזאת למעשה
-
יש שם הרבה מידע נראה לי שיש גם את המידע הזה
אבל זה ממש לא בצורה מסודרת ונורמלית.
המידע מאורגן במערך נתונים GTFS
ע"פ איזה פרויקט של גוגל בשם google Transit
https://developers.google.com/transit?hl=he
(ולענ"ד זה לא מהפרויקטים שהוסיפו כבוד לגוגל)
ובקיצור צריך להזיע הרבה בשביל לשלוף את המידע -
@ששא כתב ביש אולי רשימה של כל קווי האוטובוסים הקיימים עם התחנות שלהם (או אולי יש API לזה)?:
@אביי כתב ביש אולי רשימה של כל קווי האוטובוסים הקיימים עם התחנות שלהם (או אולי יש API לזה)?:
@ששא השירות הרשמי כאן למידע על קוים, תחנות, מיקומים וזמני הגעה https://www.gov.il/he/departments/general/real_time_information_siri
מישהו מתמצא בזה?
בתיעוד שלהם כתוב לכאורה שלקבלת כל תחנות הקו צריך לעשות קריאה ככה/json?Key=DM1234&MonitoringRef=all&LineRef=5
זה לקבלת כל התחנות של קו 5
זה נכון?
אז ניסיתי לעשות אצלי ככה<?php $data = array( 'Key' => '***', 'MonitoringRef' => 'all', 'LineRef' => '5' ); $json_data = json_encode($data); $url = 'http://*****/2.8/json'; // הגדרת אפשרויות הבקשה $options = array( 'http' => array( 'method' => 'POST', 'header' => 'Content-Type: application/json', 'content' => $json_data ) ); $context = stream_context_create($options); $response = file_get_contents($url, false, $context); echo $response; ?>
ואני מקבל
Failed to open stream: HTTP request failed!
ניסיתי ככה
<?php $data = array( 'Key' => '***', 'MonitoringRef' => 'all', 'LineRef' => '5' ); $json_data = json_encode($data); $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, 'http://***/2.8/json'); curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_POSTFIELDS, $json_data); curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json')); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); $response = curl_exec($ch); if (curl_errno($ch)) { echo 'שגיאת cURL: ' . curl_error($ch); } curl_close($ch); echo $response; ?>
ואני מקבל
שגיאת cURL: Recv failure: Connection reset by peer
למה זה?
בעיקרון קיבלתי מהם גישה לכתובת IP של השרת שלי!יכול להיות שאם אני מריץ את הקישור של הקוד PHP הזה בדפדפן אני שולח לו את ה IP שלי ולא של השרת? או אולי נשלח לו כתובת הדומיין ולא ה IP שאותו פתחו לי?
מה הבעיה?א. זה לא זה?
https://data.gov.il/api/3/action/datastore_search?resource_id=e873e6a2-66c1-494f-a677-f5e77348edb0&limit=1
ב. למה צריך אישור לכתובת ip של שרת ממני זה לא דורש?