【라이프 해크】여성 아나운서 응원bot을 TwitterAPI로
14820 단어 TwitterAPI파이썬OAuthGoogleAppsScript
TL;DR
여자 아나운서를 응원하는(사진, 동영상을 리트윗한다)bot을 만듭니다.
TwitterAPI, Google App Script(이하 GAS)를 사용합니다.
이 계정 를 팔로우하면 행복할 수 있다고 생각합니다^^
소개
설날, 뻔뻔하고 있으면 뉴스를 보고 있으면 타무라 마코씨라는 미녀 아나운서를 발견했습니다.
Twitter 팔로우하려고 생각했는데 공식도 Bot도 없었기 때문에 스스로 만들기로 했습니다.
언어 선정에 대해.
내 주요 언어는 파이썬이지만 정기적으로 그리고 마음대로 실행하기를 원하기 때문에
이번에는 GAS로 쓰기로 결정했습니다.
전제
했던 일
1은 이 기사
2 는, 이 기사 를 참고로 합니다(압도적 감사)
이 단계에서, 뭔가 적당한 것이라면, GAS로부터 트윗 할 수 있는 상태가 되어 있다고 생각합니다.
3 여기에서 좋은 느낌으로 써 갑니다
지금
//認証用インスタンスの生成
var twitter = TwitterWebService.getInstance(
'xxxx',//API Key
'xxxx'//API secret key
);
//アプリを連携認証する
function authorize() {
twitter.authorize();
}
//認証を解除する
function reset() {
twitter.reset();
}
//認証後のコールバック
function authCallback(request) {
return twitter.authCallback(request);
}
//リツイートする
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));
}
//ポストする
function doPost(){
var id = 'xxx';
retweet(id);
}
이런 느낌이 되고 있습니다.
1.2.를 마친 전제로,
doPost 함수의 'xxx'에 적당한 Twitter(투고된 트윗 화면의 URL로부터 알 수 있다)를 지정해, doPost 함수를 실행하면 훌륭하게 리트윗 되어야 합니다.
이 id 부분도 자동으로 가져올 수 있도록 합시다.
다음과 같은 느낌이 듭니다.
//24時間以内のツイートか確認【新規で追加した関数】
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;}
}
// 検索wordをもらい, 条件に一致するツイートidを配列で返す【新規で追加した関数】
function search(word){
if (word == "") {
return;
}
word = encodeURIComponent(word);
var url, options, response, jsonString, json, tweets = [];
// Twitter Search APIのURL
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 = [];
//画像が存在するか確認
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);
}
}
//ポストする【先ほどもあったが少しいじった関数】
//検索ワードを指定してsearch関数に投げ、結果の配列をretweet関数に投げて実行
function doPost(){
var nums = search('田村真子');
if (nums){
nums.forEach(function(id){
retweet(id);});
}
}
각 함수의 설명은 코멘트 아웃하는 부분에 썼습니다!
4 여기까지 할 수 있으면 트리거를 지정하기만 하면 됩니다!
"편집"-> "현재 프로젝트 트리거"에서 트리거 관리 화면으로 건너 뛰고,
트리거 추가를 선택합니다.
조건은 이러한 형태로 하루에 한 번 doPost 함수가 실행되도록하고 저장합니다.
그래서 누구를위한 문장인지 잘 모르기 때문에,
앞으로 부족한 부분을 보충해 나가려고 생각합니다.
추가 1(20210313)
전혀 유지하지 않지만 여전히 움직이고 있습니다.
팔로워가 700명이 넘었습니다. 현재의 문제는, 필터링 등 전혀 하고 있지 않기 때문에, 워드마저 포함되어 있으면, 스팸 같은 계정의 것도 리트윗 하게 되어 버린 것입니다. 마음이 맞으면 대책합니다.
참고
GAS×TwitterBot
searchAPI(공식)
Reference
이 문제에 관하여(【라이프 해크】여성 아나운서 응원bot을 TwitterAPI로), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/yadgg/items/746e656969c9ea68596d텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)