[PYTHON] [Life Hack] Anna-Unterstützungsbot für Frauen mit Twitter-API

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

TL;DR Erstellen Sie einen Bot, der weibliche Anna unterstützt (retweet Fotos und Videos). Verwenden Sie TwitterAPI und Google App Script (GAS). Ich denke, Sie werden sich freuen, wenn Sie [diesem Konto] folgen (https://twitter.com/TamuraOenBot) ^^

Einführung

Am Neujahrstag, als ich herumspielte, fand ich eine schöne Anna namens Mako Tamura, als ich die Nachrichten sah. Ich wollte Twitter folgen, hatte aber keinen Beamten oder Bot, also habe ich beschlossen, es selbst zu machen.

Informationen zur Sprachauswahl. Meine Hauptsprache ist Python, aber ich möchte, dass es regelmäßig und eigenständig ausgeführt wird. Diesmal habe ich beschlossen, in GAS zu schreiben.

Annahme

――Ich werde nur darüber sprechen, was ich getan habe (ich hoffe, Ihnen gefällt das Konzept)

Was ich getan habe

  1. Beantragen Sie die Twitter API
  2. Integration von GAS und Twitter
  3. Schreiben Sie ein GAS, um es auf Twitter zu veröffentlichen
  4. Geben Sie einen Trigger an, der automatisch ausgeführt werden soll

Für 1 siehe diesen Artikel 2 bezieht sich auf diesen Artikel (überwältigender Dank) In diesem Stadium, wenn etwas angemessen ist, denke ich, dass Sie von GAS twittern können.

3 Ich werde von hier aus schön schreiben Zur Zeit

//Generieren einer Instanz zur Authentifizierung
var twitter = TwitterWebService.getInstance(
  'xxxx',//API Key
  'xxxx'//API secret key
);

//Linkauthentifizierung von Apps
function authorize() {
  twitter.authorize();
}

//Deauthorisieren
function reset() {
  twitter.reset();
}

//Rückruf nach Authentifizierung
function authCallback(request) {
  return twitter.authCallback(request);
}

//Retweet
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));
}

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

Es sieht aus wie das. Angenommen, 1.2. Wurde abgeschlossen Wenn Sie die entsprechende Tweet-ID (wie Sie der URL des veröffentlichten Tweet-Bildschirms entnehmen können) für 'xxx' der doPost-Funktion angeben und die doPost-Funktion ausführen, sollte sie wunderbar retweetet werden.

Machen wir es möglich, diesen ID-Teil automatisch abzurufen. Es sieht wie folgt aus.


//Überprüfen Sie, ob der Tweet innerhalb von 24 Stunden ist [Neu hinzugefügte Funktion]
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;}
}

//Holen Sie sich ein Suchwort,Gibt ein Array von Tweet-IDs zurück, die den Bedingungen entsprechen [Neu hinzugefügte Funktion]
function search(word){
  if (word == "") {
    return;
  }
  
  word = encodeURIComponent(word);
  
  var url, options, response, jsonString, json, tweets = [];

  //URL der Twitter-Such-API
  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 = [];
      //Überprüfen Sie, ob das Bild vorhanden ist
      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);
  }
}

//Post [Funktion, die früher etwas manipuliert wurde]
//Geben Sie ein Suchwort an und werfen Sie es in die Suchfunktion. Dann werfen Sie das resultierende Array in die Retweet-Funktion und führen es aus
function doPost(){
  var nums = search('Mako Tamura');
  if (nums){
    nums.forEach(function(id){
      retweet(id);});
  }
}

Ich habe die Erklärung jeder Funktion im auskommentierten Teil geschrieben!

4 Geben Sie an dieser Stelle einfach den Auslöser an! Gehen Sie zum Trigger-Management-Bildschirm mit "Bearbeiten" -> "Trigger für aktuelles Projekt". Wählen Sie Add Trigger. スクリーンショット 2020-01-02 3.53.29.png Die Bedingung wird auf diese Weise gespeichert, so dass die doPost-Funktion einmal täglich ausgeführt wird.

Ich weiß also nicht wirklich, für wen der Text ist Ich werde die fehlenden Teile in Zukunft ergänzen.

Referenz

GAS×TwitterBot searchAPI (Official)

Recommended Posts

[Life Hack] Anna-Unterstützungsbot für Frauen mit Twitter-API
Unterstützen Sie sich mit der Twitter API
Verwenden Sie die Twitter-API mit Python
Erfolgreiches update_with_media mit Twitter API
Ich habe einen Twitter-Bot mit Go x Qiita API x Lambda erstellt
Erstellen Sie einen Twitter-BOT-Dienst mit der GAE / P + Tweepy + RIOT-API! (Teil 1)
Erstellen Sie einen Twitter-BOT-Dienst mit der GAE / P + Tweepy + RIOT-API! (Teil 2)
Sammeln von Informationen von Twitter mit Python (Twitter API)
Poste von einem anderen Konto mit Twitter API
Lebe ein typenloses Twitter-Leben mit Alexa
Extrahieren Sie plötzliche beliebte Wörter mit der Twitter-Streaming-API
Machen wir einen Twitter-Bot mit Python!
Twittern Sie regelmäßig mit der Twitter-API in Go-Sprache
Machen Sie Twitter Trend Bot mit Heroku + Python
LINE BOT mit Python + AWS Lambda + API Gateway
Schritte zum Erstellen eines Twitter-Bots mit Python