[RUBY] Marketing Twitter? Et si je l'automatise?

C'est Abe qui a publié le service à cette époque. Bien que je lui ai donné un titre excessif, je me bats car je ne comprends pas le marketing. Pour le moment, j'ai commencé à utiliser Twitter sur Ruby, je vais donc décrire les connaissances. (Ce n'est que le début et le résultat est inconnu.)

Le fonctionnement de Twitter est gênant. .. Je suis un ingénieur Ruby et non un Twitter (en colère) Existe-t-il un moyen simple de le faire fonctionner? Ceci est un article pour les gens.

L'exemple est écrit en Ruby.

ordre du jour

――Comment l'avez-vous automatisé?

Comment l'avez-vous automatisé?

Je l'ai automatisé en utilisant Twitter API Rest.

Qu'est-ce que l'API Twitter Rest?

Comme son nom l'indique, il s'agit d'une API fournie par Twitter. En appelant cette API Vous pouvez effectuer un traitement par programme sur Twitter, comme des tweets et des retweets.

Ruby a un bijou qui facilite l'appel de cette API Twitter Rest, Profitons-en. https://github.com/sferik/twitter

Si vous souhaitez connaître le contour et les paramètres de chaque API, veuillez vous référer à la référence ci-dessous. Il est organisé de manière simple à comprendre. https://rdoc.info/gems/twitter/Twitter/REST

Comment installer l'API REST Twitter

Créer un compte

Tout d'abord, créez un compte de développeur Twitter. J'ai fait référence à cet article. https://qiita.com/kngsym2018/items/2524d21455aac111cdee

C'est un peu compliqué car je dois vous contacter en anglais, Veuillez surmonter cela avec un esprit.

la mise en oeuvre

Implémentons la classe qui crée le client. Le client dispose de chaque méthode qui appelle l'API Twitter. Si vous créez un client et appelez une méthode, Il est possible d'appeler des traitements tels que des tweets et des retweets à partir du programme.

twitter-wrapper.rb


require 'twitter'
class TwitterWrapper
  attr_accessor :client

  def initialize
    @client = Twitter::REST::Client.new do |config|
      config.consumer_key = ENV["TWITTER_API_KEY"]
      config.consumer_secret = ENV["TWITTER_API_SECRET"]
      config.access_token = ENV["TWITTER_ACCESS_TOKEN"]
      config.access_token_secret = ENV["TWITTER_ACCESS_TOKEN_SECRET"]
    end
  end

  def tweet(content:, option: {})
    @client.update(content, option)
  end

  def tweet_with_media(content:, images: , option: {})
    @client.update_with_media(content, images, option)
  end

  def retweets(tweet_id: nil)
    @client.retweet(tweet_id)
  end

end

Cette fois, j'ai placé les paramètres dans config / twitter.yml, mais veuillez le placer où vous le souhaitez. Lorsque vous New Twitter :: REST :: Client, il n'y a aucun problème si vous pouvez entrer chaque valeur correctement. twitter-wrapper.rb ne décrit que la méthode expliquée cette fois, Il existe de nombreuses autres méthodes, il serait donc intéressant de les vérifier dans Documentation.

Quel type d'opération est réellement effectué

Je fais les opérations suivantes.

--Tweet lorsque le contenu est publié --Retweetez vos tweets à intervalles réguliers

Tweet lorsque le contenu est publié

Lorsque le contenu est publié, nous appelons tweet. J'exécute juste la méthode wrap update_with_media (tweet_with_media) qui appelle l'API Tweet. Cette fois, je voulais tweeter l'image ensemble, donc j'utilise update_with_media. Si vous n'avez pas besoin de l'image, vous pouvez utiliser la méthode de mise à jour.

tweet.rb


  class Tweet < Twitters::Application
    def tweet(content)
      tweet_wrapper = TwitterWrapper.new
      content = content #Contenu du Tweet
      images  =【image】# Array<File>
      tweet_wrapper.tweet_wrapper.tweet_with_media(content: content, images: images)
    end
  end

Retweetez-vous à intervalles réguliers

Le processus suivant est appelé par cron. Cependant, si vous essayez de retweeter un tweet que vous avez déjà retweeté, vous obtiendrez une erreur. Je pense que c'est plus gentil d'ajouter du traitement.

retweet.rb


tweet_wrapper = TwitterWrapper.new

tweet_wrapper.search('nom du compte').each do |tweet|
  user_name = tweet.user.screen_name

  return false if !user_name.include?('nom du compte')

  tweet_wrapper.retweets(tweet_id: tweet_id)
end

Résumé

Ce qui précède est la façon dont j'y ai pensé, donc je pense qu'il peut être raffiné. Si vous avez cette façon d'écrire, je vous serais reconnaissant de bien vouloir commenter!

Bonne vie sur Twitter!

Recommended Posts

Marketing Twitter? Et si je l'automatise?
Ce que j'ai appris
Ce que j'ai appris ② ~ Mock ~
Ce que j'ai appris ① ~ DJUnit ~