Comments 26
Текущая погода — это очень хорошо, но это можно посмотреть довольно быстро и в Google.
Есть другая задача (на мой взгляд, в чем-то более интересная): узнать типичную погоду на какую-то дату в другом городе. Например, если вы планируете отпуск, хочется понять, в каких городах / странах в нужные даты достаточно тепло. Если был бы доступ к истории фактической погоды в разных городах мира (например, за последние 10 лет), то можно было бы вычислять среднюю температуру днем / ночью, типичные осадки и прочие вещи, важные при планировании отпуска.
Хранить токены к ресурсам в коде - такое себе занятие :)
Зачем вы пишете что нужно Putty и упоминаете это приложение, если по факту - не используете и перекидываете на сервер используя bash?
Код стайл обязательно стоит изучит. Начните с того, что бы называть переменные не транслитом, а по назначению, на английском и использовать вместо большых if условий, switch операторы.
Зачем в тестовых целях арендовать вообще сервер? Не проще ли (и дешевле) тестовые проекты любому человеку делать на локалке... С другой стороны конечно хорошо что показали как заливать приложения на выбранный вами сервис, но урок ведь не про это. Ссылаясь на ваши собственные слова :
инструкций по созданию телеграмм-бота полно в интернете
Удачи в новых проектах!
Зачем вы пишете что нужно Putty и упоминаете это приложение, если по факту — не используете и перекидываете на сервер используя bash?
Э-э-э, а как вы попадёте на сервер, чтобы этот самый bash использовать, без использования ssh-клиента?
Введу пароль в консоли…
Если вы имеете в виду веб-интерфейс — то да, так тоже можно (наверное), хотя тут уже можно задать встречный вопрос — зачем пользоваться веб-интерфейсом когда Putty есть.
И да, файл вы так не скопируете.
Если вы имеете в виду веб-интерфейс
Нет, я имею в виду что предоставлю username, hostname, password в консоли для того что бы попасть через ssh тунель на сервер.
И да, файл вы так не скопируете.
Не соглашусь, файл отлично копируется через ssh соеденение на сервер и с сервера, да и автор статьи использует терминал команду scp
для копирования файлов через терминал (консоль). Там же вводить пароль.
Открываем командную строку в виндовс
pscp -P (здесь указываем порт джино) C:\(путь к проекту)\ root@"указываем имя сервера":/usr/bin/telebot/
Он попросит ввести пароль, вводим пароль от root.
Вы вообще читали статью?
UPD.:
зачем пользоваться веб-интерфейсом когда Putty есть
Putty может как файловый менеджер и более наглядная штука, но задеплоить проект на сервер проще через одну команду в терминале, не нужно ничего открывать, устанавливать И так далее. Своими ручками нужно уметь.
Нет, я имею в виду что предоставлю username, hostname, password в консоли для того что бы попасть через ssh тунель на сервер.
Какой программе вы их предоставляете? Подсказка: эта программа называется не "bash".
Не соглашусь, файл отлично копируется через ssh соеденение на сервер и с сервера, да и автор статьи использует терминал команду scp для копирования файлов через терминал (консоль).
Вы вообще читали статью?
Я-то её читал, а вот вы — нет, иначе бы вы заметили, что для копирования файла используется pscp.exe из комплекта Putty.
Putty может как файловый менеджер и более наглядная штука, но задеплоить проект на сервер проще через одну команду в терминале, не нужно ничего открывать, устанавливать
Putty ни разу не является файловым менеджером.
PS Кстати, мне вот интересно даже стало. А какой браузер вы используете?
Прямо в консоли пишем ssh -i ключ имя_на_сервере@адрес_сервера
Если в виндах, то в папках Git где то есть ssh.exe
А Putty над специально скачивать и ставить.
Впрочем, важно ли это. Кому как нравиться, то так и делает. Главное результат.
Вы с автором видимо из одного ПТУ в мухосранске
по п.3
case statement в питоне завезли только в 3.10, т.е. 2 недели назад
https://www.python.org/downloads/release/python-3100/ PEP 636
Спасибо за ваше уточнение :)Не знал про case в Python вообще, говорил с точки зрения большинства так сказать :)
P.S. в пункте 3 хотел суть передать в лаконичном сообщении, туда же по-хорошему DRY, KISS. Абстракция тоже пригодилась бы, а то получается автор обращается к некоторым ключам используя выражения типа :
json_data[0]['MobileLink']
Когда такая запись имеет место быть в том случае, если массив больше не содержит полезной нагрузки и в будущем будет использоваться только ради этого одного ключа (если мы говорим, о том, что внешний ресурс не имеет конечных точек для конкретно этого параметра). В коде автора же, буквально несколькими строками ниже, используется выражения типа :
json_data[0]['Temperature']['Value']
P.P.S. Я хотел аргументировать свои предложение фактическими кейсами, а не придираться к вырванному из всего кода обращению к массиву.
В таком виде
json_data[0]['MobileLink']
отдает accuweather. Я же создаю свой массив, чтобы было удобнее обращаться.
чтобы было удобнее обращаться.
Удобней в рамках небольшого функционала, когда вы знаете какие наверняка ключи содержит массив (по памяти). По опыту скажу что когда изначально используешь хранения в массивах и допустим, не заходишь в приложение больше недели, то нужно напрягаться и вспоминать какие там ключи есть в массиве. Это если не затрагивать тему совместной разработки или OpenSource.
Думать о будущем стоит на начальных этапах проектировки, люди же не строят дом без утепления только потому что строят летом и не холодно. Стараются утеплять на зиму, тоесть заблаговременно.
И я обращал ваше внимание не на тот массив который вы создаете, а тот который получаете. Про парсинг входящей строки, если вы интегрируетесь с API и знаете что будете использовать именно эту API, то представьте какие бы вы получили возможности создав по крайней мере один класс в котором реализовали бы функции например toArray и toStd и каждый раз когда получили бы ответ от сервера, этот ответ бы превращался в класс с которым удобно работать и с которого можно получать данные путем обращения к свойствам класса. Кроме того какой то начальные парсинг входящих строк, json blob и так далее можно реализовать прямо там, таким образом детально декомпозировав логику.
По токенам спасибо за замечание, уже исправил в переменные среды перенес.
pscp устанавливается вместе с putty. Я использую и то и то.
По код стайл обязательно изучу. Переменные транслитом это мой недостаток. Работаю над этим.
У меня на этом серевере ещё бот крутится. который с видео из ютуба достает аудиодорожки и отправляет запрашиваемому. Да и 100 р в месяц это не большие деньги на развлечение и обучение. Урок про весь процесс.
Спасибо за Ваш комментарий.
Код стайл обязательно стоит изучит. Начните с того, что бы называть переменные не транслитом, а по назначению, на английском и использовать вместо большых if условий, switch операторы
В Python нет switch оператора
Можно было бы разделить на 3 статьи: как зарегистрироваться на 3 погодных сервисах, как запустить виртуальный сервер, как установить putty как написать простыню кода на python.
:D
PS Google://telegram weather bot что-то знает.
Это все понятно, а у вас pyTelegramBotAPI не отваливается со временем? У меня дома при разработке отваливается, если постоит (может конечно проблемы с сетью). Читал что у многих такая беда.
Что делать если бот упадет? Каждый раз заходить на сервер и запускатьpython3 main.py
?
А мне понравилось. Для нуба самое то.
Я вот хочу сделать телеграм бота, который будет самостоятельно заполнять страницу на SharePoint. Как думаете, это не очень сложно? :)
Может кто подскажет направление?))
Зачем весь код писать в одном файле?
В чем смысл деплоя синхронного бота?
Изучи библиотеку aiogram и посмотри что такое иерархия в проектах ;)
А с API Openweather работать сильно проще. Я кстати ролик снял по этой теме:
https://youtu.be/JUzo-Z6XlAg
Не реклама.
1.
resp_loc = req.get(url_location_key, headers={"APIKey": token_accu})
json_data = json.loads(resp_loc.text)
->
json_data = req.get(url_location_key, headers={"APIKey": token_accu}).json()
2.
for i in dict_weather_yandex.keys(): -> for k, v in dict_weather_yandex.items():
Дальше по коду дважды берётся значения из словаря.
Погода бот на python