Created
August 2, 2017 14:04
-
-
Save gc373/8584cb1de2866b74937a13e644e20526 to your computer and use it in GitHub Desktop.
twitterの画像を検索して全部保存するやつ
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| const Twitter = require('twitter'), | |
| req = require('request'), | |
| fs = require('fs'), | |
| client = new Twitter({ | |
| consumer_key: '', | |
| consumer_secret: '', | |
| access_token_key: '', | |
| access_token_secret: '' | |
| }), | |
| moment = require('moment'), | |
| jst = +9; | |
| let max_id = "999999999999999999"; | |
| let max_id_old; | |
| let cursor = ''; | |
| let yesterday = moment().add(-1, 'days').format('YYYY-MM-DD') | |
| fs.mkdir("./media/", function (err) { | |
| if (err) { | |
| console.log(err); | |
| return 1; | |
| } | |
| }); | |
| let getTime = 0; | |
| let imgCount = 0; | |
| getImage(); | |
| function getImage() { | |
| let query = '#ドッツ -スラッシュ since:2016-09-05 filter:images max_id:' + max_id; | |
| // let query = '#dotstokyo since:2016-09-05 filter:images max_id:' + max_id; | |
| //let query = 'from:@dotstokyo ' + "since:2016-08-03 until:" + yesterday + "_23:59:59_JST" + ' filter:images max_id:' + max_id; | |
| //let query = '#ドッツ -スラッシュ ' + "since:" + yesterday + "_00:00:00_JST" + "until:" + yesterday + "_23:59:59_JST" + ' filter:images max_id:' + max_id; | |
| //let query = '#dotstokyo ' + "since:" + yesterday + "_00:00:00_JST" + "until:" + yesterday + "_23:59:59_JST" + ' filter:images max_id:' + max_id; | |
| //let query = 'from:@dotstokyo ' + "since:" + yesterday + "_00:00:00_JST" + "until:" + yesterday + "_23:59:59_JST" + ' filter:images max_id:' + max_id; | |
| let params = { | |
| "q": query, | |
| "count": 100, | |
| "result_type": "recent", | |
| "modules": "status", | |
| }; | |
| console.log(params); | |
| // ちなみに search/universal は公式のキーを使わないと叩けない | |
| client.get('search/universal', params, (error, tweets, response) => { | |
| if (!error) { | |
| console.log("=====================", getTime++, "=====================") | |
| tweets.modules.forEach((element) => { | |
| let date = new Date(element.status.data.created_at), | |
| yyyy_mm_dd = moment(date).format('YYYY-MM-DD'); | |
| max_id = element.status.data.id; | |
| if (element.status.data.extended_entities) { | |
| element.status.data.extended_entities.media.forEach((img) => { | |
| let url = img.media_url_https + ":orig"; | |
| let file_name = yyyy_mm_dd + " " + img.media_url_https.slice(28); | |
| console.log(imgCount++, " :image ulr -> ", url, " : ", file_name); | |
| req( | |
| { method: 'GET', url: url, encoding: null }, | |
| function (error, response, body) { | |
| if (!error && response.statusCode === 200) { | |
| let filePath = "./media/" + file_name; | |
| fs.writeFile(filePath, body, (err) => { | |
| if (err) { console.log(err); return } | |
| fs.utimes(filePath, Math.floor(date.getTime() / 1000), Math.floor(date.getTime() / 1000), function (err) { | |
| }); | |
| }); | |
| } | |
| } | |
| ); | |
| }) | |
| } | |
| }); | |
| console.log("next_max_id", max_id, " / max_id_old", max_id_old); | |
| if (max_id != max_id_old) { | |
| max_id_old = max_id; | |
| setTimeout(() => { getImage() }, (1000 * 60 * 15) / 150); // 検索APIのリミットは 180 / 15min | |
| } | |
| } else { | |
| console.log(error) | |
| } | |
| }); | |
| } |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment