[PYTHON] [Life hack] Bot de support Anna pour femmes avec API Twitter

スクリーンショット 2020-01-02 0.21.30.png

TL;DR Créez un bot qui prend en charge la femme Anna (retweete des photos et des vidéos). Utilisez TwitterAPI et Google App Script (GAS). Je pense que vous serez heureux si vous suivez ce compte ^^

introduction

Le jour de l'An, si je déconnais ~~ Quand je regardais les informations, j'ai trouvé une belle Anna nommée Mako Tamura. Je voulais suivre Twitter, mais je n'avais ni officiel ni Bot, alors j'ai décidé de le faire moi-même.

À propos de la sélection de la langue. Mon langage principal est Python, mais je veux qu'il soit exécuté régulièrement et seul. Cette fois, j'ai décidé d'écrire en GAS.

supposition

――Je ne parlerai que de ce que j'ai fait (j'espère que vous appréciez le concept)

Ce que j'ai fait

  1. Demander l'API Twitter
  2. Intégration GAS et Twitter
  3. Rédigez un GAS à publier sur Twitter
  4. Spécifiez un déclencheur à exécuter automatiquement

Pour 1, reportez-vous à cet article 2 fait référence à cet article (merci infiniment) À ce stade, si quelque chose est approprié, je pense que vous êtes prêt à tweeter de GAS.

3 J'écrirai bien d'ici Pour l'instant

//Générer une instance pour l'authentification
var twitter = TwitterWebService.getInstance(
  'xxxx',//API Key
  'xxxx'//API secret key
);

//Lier l'authentification des applications
function authorize() {
  twitter.authorize();
}

//Annuler l'autorisation
function reset() {
  twitter.reset();
}

//Rappel après authentification
function authCallback(request) {
  return twitter.authCallback(request);
}

//Retweeter
function retweet(tweetid){
  var service  = twitter.getService();
  var response = service.fetch('https://api.twitter.com/1.1/statuses/retweet/'+tweetid+'.json', {
                               method: 'post',
                               payload: { id: tweetid}
                               });
  Logger.log(JSON.parse(response));
}

//Publier
function doPost(){
  var id = 'xxx';
  retweet(id);
}

Ça ressemble à ça. En supposant que 1.2. Est terminé Si vous spécifiez un Tweetid approprié (comme vous pouvez le voir à partir de l'URL de l'écran du tweet publié) pour «xxx» de la fonction doPost et exécutez la fonction doPost, il devrait être retweeté à merveille.

Rendons possible la récupération automatique de cette partie id. Cela ressemble à ce qui suit.


//Vérifiez si le tweet est dans les 24 heures [fonction nouvellement ajoutée]
function within24(twt){
  var oneday = 1000 * 60 * 60 * 24
  var created = twt.created_at;
  var c = new Date(created);
  var today = new Date();
  var timeDelta = (today.getTime() - c.getTime())/oneday;
  Logger.log(timeDelta);
  if (timeDelta<1){
    return true;
  }else{
    return false;}
}

//Obtenez un mot de recherche,Renvoie un tableau d'identifiants de tweet qui correspondent aux conditions [fonction nouvellement ajoutée]
function search(word){
  if (word == "") {
    return;
  }
  
  word = encodeURIComponent(word);
  
  var url, options, response, jsonString, json, tweets = [];

  //URL de l'API de recherche Twitter
  var API_URL = "https://api.twitter.com/1.1/search/tweets.json?";
  
  try {
    
    url = API_URL + "count=100" + "&q=" + word;
    
    try {
      var service  = twitter.getService();
      var response = service.fetch(url, {method: 'get'});
      var array = JSON.parse(response)['statuses'];
      var leng = array.length;
      var output = [];
      //Vérifiez si l'image existe
      for(var i=0; i<leng; i++){
        var twt = array[i];
        var ent = twt.entities;
        if ('media' in ent){
          if (within24(twt)){
            output.push(twt['id_str']);
          }
        }
      }
    } catch(e) {
      Logger.log(e);
      return;
    }
    return output;
  } catch(e){
    Logger.log(e);
  }
}

//Message [Fonction qui a été un peu falsifiée plus tôt]
//Spécifiez un mot de recherche et lancez-le à la fonction de recherche, puis lancez le tableau résultant à la fonction de retweet et exécutez
function doPost(){
  var nums = search('Mako Tamura');
  if (nums){
    nums.forEach(function(id){
      retweet(id);});
  }
}

J'ai écrit l'explication de chaque fonction dans la partie commentée!

4 À ce stade, spécifiez simplement le déclencheur! Accédez à l'écran de gestion des déclencheurs avec "Edition" -> "Déclenchement pour le projet en cours" Sélectionnez Ajouter un déclencheur. スクリーンショット 2020-01-02 3.53.29.png La condition est enregistrée de cette manière afin que la fonction doPost soit exécutée une fois par jour.

Donc, je ne sais pas vraiment à qui s'adresse le texte, alors Je compléterai les parties manquantes à l'avenir.

référence

GAS×TwitterBot searchAPI (Officiel)

Recommended Posts

[Life hack] Bot de support Anna pour femmes avec API Twitter
Soutenez-vous avec l'API Twitter
Utiliser l'API Twitter avec Python
Update_with_media réussi avec l'API Twitter
J'ai créé un bot Twitter avec Go x Qiita API x Lambda
Créez un service Twitter BOT avec GAE / P + Tweepy + RIOT API! (Partie 1)
Créez un service Twitter BOT avec GAE / P + Tweepy + RIOT API! (Partie 2)
Collecter des informations sur Twitter avec Python (API Twitter)
Publier à partir d'un autre compte avec l'API Twitter
Vivez une vie Twitter sans saisie avec Alexa
Extraire des mots populaires soudains avec l'API de streaming Twitter
Faisons un bot Twitter avec Python!
Tweetez régulièrement avec l'API Twitter Go language
Créer un bot Twitter Trend avec heroku + Python
LINE BOT avec Python + AWS Lambda + API Gateway
Étapes pour créer un bot Twitter avec Python