Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Программирование на python с использованием API яндекс расписаний

Vizem Ученик (178), открыт 2 недели назад
 import requests
from PyQt5 import QtCore, QtGui, QtWidgets
from PyQt5.QtWidgets import QWidget
from UI import *
from datetime import date

class Rasp(QWidget, Ui_Form):
def __init__(self):
super(Rasp, self).__init__()
self.setupUi(self)
self.setFixedSize(self.size())
self.start_city = self.plainTextEdit.toplaintext()
self.pushButton.clicked.connect(self.swap)
self.pushButton_2.clicked.connect(self.get_yandex_route)
def get_route(api_key: str, from_: str, to: str, date_: date = date.today()) -> dict:
base_url = "https://api.rasp.yandex.net/v3.0/search"
params = {
"apikey": api_key,
"from": from_,
"to": to,
"transport_types": "bus",
"date": date.today(),
"format": "json",
"lang": "ru_RU" # Установка языка ответа на русский
}

response = requests.get(base_url, params=params)
response.raise_for_status()

data = response.json()
if "segments" in data:
segments = data["segments"]
if segments: # Проверяем, что есть хотя бы один сегмент
segment = segments[0] # Берем первый сегмент

departure_station = segment.get("departure_station")
arrival_station = segment.get("arrival_station")

return {
"Маршрут": segment.get("title"),
"Точка отправки": departure_station.get("title") if departure_station else "Недоступно",
"Точка прибытия": arrival_station.get("title") if arrival_station else "Недоступно",
"Время отправки": segment.get("departure_time"),
"Время прибытия": segment.get("arrival_time"),
"stops": [stop.get("title") for stop in segment.get("stops", [])] # Проверяем наличие ключа "stops"
}
else:
return None # Ничего не найдено



def swap():
pass
api_key = "API"
start_city = "c146"
end_city = "c213"
route_description = Rasp.get_route(api_key, start_city, end_city)

print(f"Описание маршрута: {route_description}")
Данный код возвращает ничего, если быть конкретнее:

Как это исправить. API в коде я заменил
1 ответ
Sergio 2.1 Оракул (67645) 2 недели назад
 import requests 
from PyQt5 import QtCore, QtGui, QtWidgets
from PyQt5.QtWidgets import QWidget
from datetime import date

class Rasp(QWidget): # Предполагаем, что у вас есть класс Ui_Form, определенный в UI.py
def __init__(self):
super(Rasp, self).__init__()
# Замените на ваш код инициализации UI из Ui_Form
self.plainTextEdit = QtWidgets.QPlainTextEdit(self)
self.plainTextEdit_2 = QtWidgets.QPlainTextEdit(self)
self.pushButton = QtWidgets.QPushButton("Поменять местами", self)
self.pushButton_2 = QtWidgets.QPushButton("Построить маршрут", self)
# ... (добавьте остальные элементы UI)

self.pushButton.clicked.connect(self.swap)
self.pushButton_2.clicked.connect(self.get_yandex_route)

def get_route(self, api_key: str, from_: str, to: str, date_: date = date.today()) -> dict:
base_url = "https://api.rasp.yandex.net/v3.0/search"
params = {
"apikey": api_key,
"from": from_,
"to": to,
"transport_types": "bus",
"date": date.today(),
"format": "json",
"lang": "ru_RU" # Установка языка ответа на русский
}

response = requests.get(base_url, params=params)
response.raise_for_status()

data = response.json()
if "segments" in data:
segments = data["segments"]
if segments: # Проверяем, что есть хотя бы один сегмент
segment = segments[0] # Берем первый сегмент

departure_station = segment.get("departure_station")
arrival_station = segment.get("arrival_station")

return {
"Маршрут": segment.get("title"),
"Точка отправки": departure_station.get("title") if departure_station else "Недоступно",
"Точка прибытия": arrival_station.get("title") if arrival_station else "Недоступно",
"Время отправки": segment.get("departure_time"),
"Время прибытия": segment.get("arrival_time"),
"stops": [stop.get("title") for stop in segment.get("stops", [])] # Проверяем наличие ключа "stops"
}
else:
return None # Ничего не найдено

def swap(self):
text1 = self.plainTextEdit.toPlainText()
text2 = self.plainTextEdit_2.toPlainText()
self.plainTextEdit.setPlainText(text2)
self.plainTextEdit_2.setPlainText(text1)

def get_yandex_route(self):
api_key = "ВАШ_API_КЛЮЧ"
start_city = self.plainTextEdit.toPlainText()
end_city = self.plainTextEdit_2.toPlainText()
route_description = self.get_route(api_key, start_city, end_city)

if route_description:
print(f"Описание маршрута: {route_description}")
else:
print("Маршрут не найден.")

if __name__ == "__main__":
import sys
app = QtWidgets.QApplication(sys.argv)
window = Rasp()
window.show()
sys.exit(app.exec_())
Похожие вопросы