Переносим проект на хостинг
Итак, после того как мы закончили с написанием кода по превращению аватарки Telegram в часы, следующим логическим шагом было бы развёртывание проекта на сервере. Наверняка у вас его нет, да и покупать как-то не хочется... Hо это и необязательно, поскольку сейчас существует множество бесплатных облачных решений, например Heroku.
Подготавливаем инструменты
Сперва давай зарегистрируем тебя на GitHub. Необходимо создать аккаунт (рано или поздно он точно может пригодиться) и установить Git. После создания аккаунта жмем "New repository". Называем его TimeChanger, можем добавить какое-либо описание, и жмем "Create repository".
Теперь установим Git. На Linux это можно сделать с помощью следующей команды:
$ sudo apt-get install git-all
На MacOS и Windows его нужно будет скачать и установить.
Ссылка для скачивания на MacOS
Ссылка для скачивания на Windows
Скачиваем Git по ссылкам выше и устанавливаем, это несложно.
Да, и не забудь конечно же зарегистрироваться на Heroku.
Командная строка
Есть много различных способов использования Git. Помимо оригинального клиента, имеющего интерфейс командной строки, существует множество клиентов с графическим интерфейсом, в той или иной степени реализующих функциональность Git.
В рамках данной статьи мы будем использовать Git в командной строке. Кроме того, с виртуальными средами можно работать только в контексте командной строки.
Поэтому, предполагается, что ты хотя бы в общих чертах знаешь, как открыть терминал в Mac или командную строку, или Powershell в Windows. Если это непонятно, возможно придётся ненадолго прерваться и изучить эти вопросы.
Виртуальные среды
Мы будем работать с виртуальной средой virtualenv
. Сначала установим ее, выполнив команду в терминале Windows:
$ pip install virtualenv
Для MacOS или Linux будем использовать:
$ pip3 install virtualenv
Теперь давай наведем порядок в файлах. Создай новую папку и перейди в неё в терминале или командной строке. Нам нужно инициализировать в ней virtualenv
:
$ virtualenv my_env
Имя среды my_env
в принципе не имеет особого значения, но лучше сделать его интуитивно понятным.
Переходим в папку my_env
. Здесь, в принципе и на Windows и на Linux/MacOS синтаксис одинаковый, используем команду cd
. Теперь нужно клонировать git-репозиторий.
Вводим следующую команду:
$ git clone https://github.com/adreex/TimeChanger
Таким образом мы скопировали в папку проект отсюда: https://github.com/adreex/TimeChanger
В той же папке my_env
запустим virtualenv
:
- На Windows:
$ scripts\\activate.bat
- На Linux/MacOS:
$ source bin/activate
Если virtualenv
был успешно запущен, приглашение командной строки должно начинаться с (my_env).
Установка зависимостей
Вообще говоря, в скопированном нами репозитории уже есть файл requirements.txt. Но далее нам понадобится рабочий интерпретатор на нашей локальной машине, для создания файла сессии. И кроме того, вдруг когда-нибудь понадобится деплоить собственный код?
Из терминала переходим в папку репозитория (мы клонировали ее под именем TimeChanger), и устанавливаем все необходимые зависимости:
$ pip install Pillow==6.0.0 pyaes==1.6.1 pyasn1==0.4.5 pytz==2019.1 rsa==4.0 Telethon==1.8.0
Обрати внимание, если ты деплоишь своего бота, то тут должны быть те зависимости, которые необходимы для твоего проекта.
Теперь нужно создать список зависимостей Heroku. Это несложно:
$ pip freeze > requirements.txt
Финальные шаги
В папке с проектом создадим Procfile
. В этом файле необходимо разместить инструкции по работе с нашим скриптом. Имя файла обязательно должно быть Procfile
(Procfile.windows
в случае с Windows). У него не должно быть других расширений.
Содержимое файла должно быть таким:
worker: python main.py
Добавим файл __init__.py
в папку с проектом. Он может быть пустым (просто оставь там закомменченную строку вида # test), но он должен там быть.
Добавим все файлы проекта и сделаем коммит в репозиторий:
$ git init $ git add . $ git commit -m 'initial commit' $ git push --set-upstream <https://github.com/имя_вашего_профиля/TimeChanger> master
Теперь развернём проект на Heroku. Можно использовать и панель управления на сайте, но мы потренируемся делать всё через консоль.
Для MacOS или Windows, необходимо установить интерфейс командной строки. Переходим по ссылке и устанавливаем.
Для установки на Linux достаточно ввести команду:
sudo snap install heroku --classic
Помнишь мы ставили виртуальную среду и необходимые пакеты? Выполним на локальной машине следующий код:
python3 main.py
После этого вводим телефон, и создаем новую сессию в Telegram. Нам понадобится файл session.session
, который мы зальем (вместе с остальным кодом) с помощью Git на Heroku
$ git add . $ git commit -m 'initial commit'
Логинимся в Heroku, создаем приложение, и делаем пуш кода:
$ heroku login $ heroku create $ git push heroku master $ heroku ps:scale worker=1
С этого момента приложение должно работать на сервере Heroku. Если что-то пойдёт не так, проверить логи можно следующим образом:
$ heroku logs --tail
Коды ошибок можно найти на сайте Heroku.
Итог
Безусловно, бесплатный аккаунт накладывает некоторые ограничения. Тем не менее, теперь код с часами полностью автоматизирован. Поздравляем!
Материал подготовлен образовательной организацией Python Academy.