Exemple #1
0
	return new Promise(function (resolve, reject) {
		var T = Twit({
			consumer_key: config.twitter_api_config.consumer_key,
			consumer_secret: config.twitter_api_config.consumer_secret,
			access_token: accessToken,
			access_token_secret: accessTokenSecret
		});

		var runCount = 0;

		var tweetID = '';

		var tweetCount = 0;
		var tweetSources = {};
		var dailyTweetSources = {};

		function find() {
			if (runCount > 100) {
				return resolve({
					tweetCount: tweetCount,
					tweetSources: tweetSources,
					dailyTweetSources: dailyTweetSources,
					truncated: true
				});
			}

			T.get('statuses/user_timeline', {
				screen_name: user,
				include_rts: false,
				exclude_replies: false,
				count: 200,
				max_id: bigInt(tweetID).subtract(1).toString(),
				trim_user: true
			}, function (err, data, response) {
				if (!err && !data.errors) {
					if (data.length > 1) {
						tweetCount += data.length;

						data.forEach(function (tweet) {
							var src = sourcegex.exec(tweet.source)[1];

							var date = new Date(tweet.created_at);
							date.setHours(0, 0, 0, 0);
							date = date.toISOString();

							if (typeof tweetSources[src] === 'undefined') {
								tweetSources[src] = 1;
							} else {
								tweetSources[src]++;
							}

							if (typeof dailyTweetSources[date] === 'undefined') {
								dailyTweetSources[date] = {};
								dailyTweetSources[date][src] = 1;
							} else {
								if (typeof dailyTweetSources[date][src] === 'undefined') {
									dailyTweetSources[date][src] = 1;
								} else {
									dailyTweetSources[date][src]++;
								}
							}
						});

						tweetID = data[data.length - 1].id_str;

						find();
					} else {
						return resolve({
							tweetCount: tweetCount,
							tweetSources: tweetSources,
							dailyTweetSources: dailyTweetSources,
							truncated: false
						});
					}
				} else {
					return reject({
						error: 'api_error',
						message: err
					});
				}
			});
		}

		T.get('statuses/user_timeline', {
			screen_name: user,
			include_rts: 0
		}, function(err, data, response) {
			if (!err && !data.errors) {
				console.log('Sourcing user ' + data[0].user.name + '(@' + data[0].user.screen_name + ')');

				tweetID = data[0].id_str;

				find();
			} else {
				return reject({
					error: 'user_not_found',
					message: 'User not found.'
				});
			}
		});
	});
	return new Promise(function (resolve, reject) {
		var T = Twit({
			consumer_key: config.twitter_api_config.consumer_key,
			consumer_secret: config.twitter_api_config.consumer_secret,
			access_token: accessToken,
			access_token_secret: accessTokenSecret
		});

		var runCount = 0;

		var tweetID = '';

		var tweetCount = 0;
		var untouchedTweets = 0;

		function find() {
			if (runCount > 100) {
				return resolve({
					tweetCount: tweetCount,
					untouchedTweetCount: untouchedTweets,
					truncated: true
				});
			}

			T.get('statuses/user_timeline', {
				screen_name: user,
				include_rts: false,
				exclude_replies: false,
				count: 200,
				max_id: bigInt(tweetID).subtract(1).toString(),
				trim_user: true
			}, function (err, data, response) {
				if (!err && !data.errors) {
					if (data.length > 1) {
						tweetCount += data.length;

						data.forEach(function (tweet) {
							if (tweet.retweet_count == 0 && tweet.favorite_count == 0) {
								untouchedTweets++;
							}
						});

						tweetID = data[data.length - 1].id_str;

						find();
					} else {
						return resolve({
							tweetCount: tweetCount,
							untouchedTweetCount: untouchedTweets,
							truncated: false
						});
					}
				} else {
					return reject({
						error: 'api_error',
						message: err
					});
				}
			});
		}

		T.get('statuses/user_timeline', {
			screen_name: user,
			include_rts: 0
		}, function(err, data, response) {
			if (!err && !data.errors) {
				console.log('Judging user ' + data[0].user.name + '(@' + data[0].user.screen_name + ')');

				tweetID = data[0].id_str;

				find();
			} else {
				return reject({
					error: 'user_not_found',
					message: 'User not found.'
				});
			}
		});
	});