Pull to refresh

Comments 26

Текущая погода — это очень хорошо, но это можно посмотреть довольно быстро и в Google.

Есть другая задача (на мой взгляд, в чем-то более интересная): узнать типичную погоду на какую-то дату в другом городе. Например, если вы планируете отпуск, хочется понять, в каких городах / странах в нужные даты достаточно тепло. Если был бы доступ к истории фактической погоды в разных городах мира (например, за последние 10 лет), то можно было бы вычислять среднюю температуру днем / ночью, типичные осадки и прочие вещи, важные при планировании отпуска.

Спасибо! Обязательно попробую найти подходящий API

  1. Хранить токены к ресурсам в коде - такое себе занятие :)

  2. Зачем вы пишете что нужно Putty и упоминаете это приложение, если по факту - не используете и перекидываете на сервер используя bash?

  3. Код стайл обязательно стоит изучит. Начните с того, что бы называть переменные не транслитом, а по назначению, на английском и использовать вместо большых if условий, switch операторы.

  4. Зачем в тестовых целях арендовать вообще сервер? Не проще ли (и дешевле) тестовые проекты любому человеку делать на локалке... С другой стороны конечно хорошо что показали как заливать приложения на выбранный вами сервис, но урок ведь не про это. Ссылаясь на ваши собственные слова :

инструкций по созданию телеграмм-бота полно в интернете

Удачи в новых проектах!

Зачем вы пишете что нужно 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 над специально скачивать и ставить.
Впрочем, важно ли это. Кому как нравиться, то так и делает. Главное результат.

Вы с автором видимо из одного ПТУ в мухосранске

Спешу Вас огорчить, ПТУ я не оканчивал. Программированию ни где не обучался, только собственный опыт. А здесь все это написал для того чтобы получить независимые отклики от профессионалов. За что им огромное спасибо.

Спасибо за ваше уточнение :)Не знал про 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():

Дальше по коду дважды берётся значения из словаря.

Sign up to leave a comment.

Articles