트위터로 자동 검색하고 자동 패보하는 스크립트
10615 단어 트위터자바스크립트TwitterAPINode.js
트위터로 자동 검색하고 자동 패보하는 스크립트
이쪽, Node.js에서 Twitter 검색에서 100 개가 넘는 트윗을 얻고 싶습니다. 를 참고로 개조했습니다. @ 료 감사합니다.
var twitter = require('twitter');
//変更すべき設定
var client = new twitter({
consumer_key: '',
consumer_secret: '',
access_token_key: '',
access_token_secret: ''
});
searchTweet('検索するワード');
function searchTweet(queryArg, nextResultsMaxIdArg = null) {
client.get('search/tweets', { q: queryArg, count: 10, max_id: nextResultsMaxIdArg }, (error, searchData, response) => {
for (item in searchData.statuses) {
let tweet = searchData.statuses[item];
console.log('@' + tweet.user.screen_name+' : '+tweet.text);
// ここからファボするスクリプト
let param = ({id: tweet.id_str})
client.post('favorites/create', param, (err, response) => {
if(err) {
console.log(err[0].message);
} else {
console.log('■ いいねしました!')
const username = response.user.screen_name;
const favoritedTweetId = response.id_str;
console.log(`■ Favorited: https://twitter.com/${username}/status/${favoritedTweetId}`);
}
});
// ここまで
}
if (searchData.search_metadata == undefined) {
console.log('---- Complete (no metadata) ----');
return 0;
}
else if (searchData.search_metadata.next_results) {
let maxId = searchData.search_metadata.next_results.match(/\?max_id=(\d*)/);
if (maxId[1] == null) {
return 0;
}
console.log('---- next:' + maxId[1] + ' ----');
searchTweet(queryArg, maxId[1]);
}
else {
console.log('---- Complete ----');
return 0;
}
});
}
maxId라고 하는 것이 무엇을 위해서 있을까, 왜 그것을 searchTweet()의 속성에 넣고 있는지 모르겠다. 아마 count수에 도달하면 끝으로 하도록(듯이) 이용하고 있는 것 같습니다. 누군가 말해주세요
추가
주의
이 스크립트를 속삭여 사용하고 있다면, 화보하는 코드에서 console.log(err[0].message
로 에러가 나오게 되었다. 에러 내용을 조사하고 싶지만 어쩌면 트위터 측의 걸림(기능 락) 되었을지도 모른다. 더 이상 흘리면 아카 BAN 될 것 같아 매우 요로식하지 않기 때문에 포기하고 다른 방법을 찾기로 한다.
계속
계속
분명히이 오류처럼 보입니다.
오류: HTTP 오류: 429 Too Many Requests
콘솔을 바라보고 에러가 나기 시작하자마자 Ctrl+C로 멈추는 것이 좋다. 별로 내고 있으면 페널티가 있는지 확실하지 않다.
"API v1.1에서 리소스별로 결정된 애플리케이션 속도 제한이 부족하여 요청을 처리할 수 없는 경우 반환됩니다. API v1.1 속도 제한을 참조하십시오."
Twitter 개발자 문서 일본어 번역
WebAPI를 설계하기 위한 이용 제한(Rate Limit)에 대해 조사했다
Reference
이 문제에 관하여(트위터로 자동 검색하고 자동 패보하는 스크립트), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/atomyah/items/5c4c5b1a331e217e87a5
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
var twitter = require('twitter');
//変更すべき設定
var client = new twitter({
consumer_key: '',
consumer_secret: '',
access_token_key: '',
access_token_secret: ''
});
searchTweet('検索するワード');
function searchTweet(queryArg, nextResultsMaxIdArg = null) {
client.get('search/tweets', { q: queryArg, count: 10, max_id: nextResultsMaxIdArg }, (error, searchData, response) => {
for (item in searchData.statuses) {
let tweet = searchData.statuses[item];
console.log('@' + tweet.user.screen_name+' : '+tweet.text);
// ここからファボするスクリプト
let param = ({id: tweet.id_str})
client.post('favorites/create', param, (err, response) => {
if(err) {
console.log(err[0].message);
} else {
console.log('■ いいねしました!')
const username = response.user.screen_name;
const favoritedTweetId = response.id_str;
console.log(`■ Favorited: https://twitter.com/${username}/status/${favoritedTweetId}`);
}
});
// ここまで
}
if (searchData.search_metadata == undefined) {
console.log('---- Complete (no metadata) ----');
return 0;
}
else if (searchData.search_metadata.next_results) {
let maxId = searchData.search_metadata.next_results.match(/\?max_id=(\d*)/);
if (maxId[1] == null) {
return 0;
}
console.log('---- next:' + maxId[1] + ' ----');
searchTweet(queryArg, maxId[1]);
}
else {
console.log('---- Complete ----');
return 0;
}
});
}
Reference
이 문제에 관하여(트위터로 자동 검색하고 자동 패보하는 스크립트), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/atomyah/items/5c4c5b1a331e217e87a5텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)