Рубрики
Без рубрики

Счета социальных сетей не должны быть статичными! 💃🏽.

Вдохновлен другими сообщениями через Интернет Это видео имеет 15 608 459 просмотров – YouTube T … Теги с Twitter, API, начинающими, Python.

Вдохновлен другими сообщениями через Интернет

Это видео имеет 15 608 459 просмотров – YouTube

Этот пост имеет 2233 просмотров, 154 реакции и 23 комментария – dev

Я решил попытаться осуществить то же самое в Twitter с моим именем пользователя и количество последователей у меня есть.

Процесс довольно прямой вперед, давайте обписать это

1. Connect to twitter API
2. Get my current number of followers
3. Update my username field
4. Repeat every 10 minutes

Теперь, когда мы изложили процесс, давайте распадаем код и инфраструктуру

Для этого проекта я решил использовать Python3. Мне очень нравится использовать его для быстрых сценариев над Node.js, потому что я не хочу иметь дело с асинхронным кодом; Приятно иметь код, который запускает одну строку, после следующего, без прерываний.

Вам понадобится учетные данные API Twitter для этого проекта, если у вас их еще нет, вам придется подать заявку на них на https://developers.twitter.com. .

Для подключения к API Twitter я буду использовать Tweepy. Это здорово, он легко работает и встроил в поддержку ограничения скорости скорости API Twitter.

Для хостинга и планирования я люблю использовать Heroku. Heroku позволяет вам запустить код и иметь открытую веб-службу, способную обработать веб-запросы и обслуживание контента. В этом проекте мы не будем обращаться с любым внешним запросом, ни отбывать данные, но нам все равно надо удостовериться, что наш код хорошо воспроизводится с Heroku, поэтому мы будем легко добавить веб-сервер, в этом случае заполняет пробел.

Для нашего кода для запуска по расписанию или каждые x минут, мы включим дополнение Heroku для нашего проекта, Heroku планировщик который когда-то настроил наш скрипт в нашем определенном графике.

Потрясающе, давайте погрузимся в код!

import tweepy
from flask import Flask

Сначала у нас есть наш Импорт Заявления, эти утверждения позволяют нам использовать функциональные возможности, предоставленные 3-го библиотеками сторонников.

ОС Библиотека дает нам доступ к базовой операционной системе и позволяет нам запустить команды непосредственно на хосте.

Tweepy собирается позволить нам подключиться и общаться с API Twitter.

Колбу Является ли Micro Web Framework, что позволяет нам обрабатывать HTTP-запросы и многие другие функции, для этого проекта мы используем его для удовлетворения потребностей героических развертываний.

Далее – аутентификация

# Authenticate to Twitter
auth = tweepy.OAuthHandler("consumer_key", "consumer_secret")
auth.set_access_token("token_key", "token_secret")

Нам нужны два набора ключей для аутентификации, оба можно найти на странице разработчиков Twitter в вашем приложении, похоже на скриншот ниже.

После того, как вы добавили эти клавиши, следующий шаг подключается к серверу API и получает некоторые данные.

# Create API object
api = tweepy.API(auth)

#get my user object
iam = api.me()
followers_count = iam.followers_count

я () Метод Tweepy Объект подключается к API Twitter и выдвигает текущие аутентифицированные пользовательские данные пользователя.

Объект пользовательских данных, которые возвращаются нам, могут обращаться с помощью Dot Отказ Оператор, в этом случае мы хотим Подписчики_count атрибут.

Если вы не знаете атрибуты объекта, вы можете использовать эти встроенные:

dir(object)
vars(object)
__dict(object)__

Объедините это с PrinePrint для некоторого разборчивости:

Снаппин бонусного кода

import pprint
pp = pprint.PrettyPrinter(indent=4)
pp.pprint(vars(object))

Теперь, когда мы закончили с этим маленьким объездом, давайте вернемся на трек.

Следующая часть кода должна обновлять наше имя пользователя

 api.update_profile(name="Jason Alvarez is {} new friends away from 10k".format(10000 - int(followers_count)))

Tweepy предоставляет нам функцию под названием update_profile Что будет обновлять наш профиль в зависимости от параметров, прилагаемых к нему. В этом случае мы проезжаем Имя параметр и давая ему следующую строку

” Джейсон Альварес {} Новые друзья вдали от 10k “.Format (10000 – INT (Chickers_Count)))

Вместо того, чтобы вставить только номер, я решил использовать пространство в качестве обратного отсчета до определенной цели.

Формат принимает строку с заполнителями {} и вставляет значения, поставляемые (значение1, значение2 ...)

string.format (значение1, значение2 …)

Эта же методика может быть применена для любого редактируемого поля в профиле и любых данных, которые API не откажется от ввода; Пожалуйста, обратитесь к Документы – Разработчики Twitter Для более подробной информации о действительных и недопустимых символах.

Последний сегмент кода необходим для скрипта, направленного на инфраструктуру Heroku. Несмотря на то, что не специфично для этого проекта, давайте перейдем на то, что это делает и то, что он не делает.

app = Flask(__name__)
app.run()

Флэка Как уже упоминалось выше, это Micro Web Framework, обычно используются для создания серверов, которые обрабатывают запросы HTTP (S) и другие действительно аккуратные вещи. В этом случае нам нужно запустить сервер, чтобы Heroku знает, что наше развертывание было успешным.

Одно из больших целей для Flask, состоит в том, чтобы создать свои собственные микросистемы API, где вы можете определить свои собственные HTTP-маршруты, функция, которую мы не используем в этом случае, и находится за пределами объема этой записи, но я настоятельно рекомендую вам посмотреть Это!

ЛАДНО Код сделан!

Здорово! Мы закончили писать наш скрипт, а это значит, что мы все сделали и можем развернуть, верно? ПОЧТИ!

Чтобы успешно развернуть в Heroku, нам нужно еще два файла: требования .txt ProCFile

требования .txt Отложены библиотеки, необходимые для нашего кода, чтобы успешно запустить, и это не то, что вам нужно создавать вручную.

Генерировать свой требования .txt Запустите эту команду в своем каталоге проекта PIP3 Freeze> требования. atxt

Из документации Heroku

Приложения Heroku включают Procfile, которая указывает команды, выполняемые приложением при запуске.

Наш собирается быть настоящим простым и просто запустить этот веб-сервер, который мы объявили в нашем сценарии.

Отредактируйте свой ProCFile так что у него есть следующее содержимое Веб: .py Flask Run - порт $ Port --host 0.0.0.0

$ Порт Будут предоставлять нам среду оболочки операционной системы, и будет случайным, поэтому не пытайтесь настроить все здесь.

Отлично, если вы сделали это далеко, ваш каталог должен выглядеть как следующее

.
├── Procfile
├── requirements.txt
└── update_username.py

Теперь мы можем наконец-то развернуть!

Создайте новый проект на Heroku.com и следуйте инструкциям на экране, это очень похоже на настройку репо GitHub. * Создать проект * init * Добавить * Нажмите (следуйте инструкциям для более подробной информации)

Если ваш толчок и развертывание были успешными, вы должны увидеть что-то вроде следующего в вашем терминале

app[scheduler.5678]: * Running on http://0.0.0.0:48547/ (Press CTRL+C to quit)
heroku[scheduler.5678]: State changed from starting to up
heroku[scheduler.5678]: Cycling
heroku[scheduler.5678]: State changed from up to complete

На данный момент ваше имя пользователя Twitter теперь должно быть обновлено со строкой, которую вы использовали в скрипте. В случае моего использования я хочу, чтобы мое имя пользователя было довольно синконом с количеством подписчиков, которые у меня есть, поэтому давайте настроим его для запуска по расписанию.

Для достижения этого мы собираемся использовать надстройку проекта Heroku под названием «Планировщик Heroku», это бесплатно и не следует поднять стоимость вашего Dyno, добавить его в проект, затем нажмите на него, чтобы настроить задания.

Чтобы оставаться в синхронизации, так как я могу выбрать «каждые 10 минут» работу и для команды запуска я использовал тот же контент, который в ProcfileFLASK_APP = UPDATE_USERNAME_NUM_FOLLOWERS.PY FLOSK ROB -OND $ PORT -HOST 0.0.0.0

Сохраните работу, и вы все сделаете.

Давайте перейдем на то, что мы достигли.

1. We have a script that will update our Twitter username
2. It communicates with Twitter API for data
3. Our code project is deployed on a managed service

Это не плохо для забавного сценария!

Наслаждался постом? Дай мне знать! 💛🦄🔖.

Оригинал: “https://dev.to/0xbanana/social-media-accounts-shouldn-t-be-static-5327”