3
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

node.js で社会性フィルター

Last updated at Posted at 2017-02-01

はじめまして

@albno273 と申します。
以前からはてなブログの方でちょっとした備忘録を日記と混ぜて投稿していたのですが、今後は Qiita に備忘録、はてなブログに日記を書くことにしました。
ウケがよかったものについてはブログからこちらに移植しようと考えています。
ちなみに Twitter もあります。
よろしくお願いします。

社会性フィルター

Qiita で最初の記事を書くにあたってネタを探していたところ、
【にゃーん】社会性フィルターをPython3で実装する / Qiita
というのがあり、ついでに今自分が置かれている状況が死ぬほどつらいので写経代わりに node.js で作ってみました。

つくった

ソース: GitHub
follow: --- は適宜自分の ID に書き換えてください。

var twitter = require('twitter');
var confu = require('confu');

var conf = confu('.', 'config', 'key.json');
var client = new twitter({
	consumer_key: conf.test.cons_key,
	consumer_secret: conf.test.cons_sec,
	access_token_key: conf.test.acc_token,
	access_token_secret: conf.test.acc_token_sec
});

var filter = ['つらい', '死にたい', '死ね', '殺す', '疲れた'];
var count = 1;

console.log('Sociality filter activated.');
client.stream('statuses/filter', { follow: --- }, function (stream) {

	stream.on('data', function (tweet) {
		var text = tweet.text;
		var id = tweet.id_str;
		var i = filter.length;

		while (i--) {
			if (text.indexOf(filter[i]) !== -1) {

				console.log('Negative word(s) detected!')
				console.log('catch: ' + filter[i]);
				setTimeout(function () {
					client.post('statuses/destroy/' + id, function (err, rep) {
						if (!err) {
							console.log('Delete succeeded.');
							setTimeout(function () {
								var tweet_body = 'にゃーん (通算' + count + '回目)';
								client.post('statuses/update',
									{ status: tweet_body },
									function (err, rep) {
										if (!err) {
											console.log('Tweet succeeded. Meow!');
											count++;
										} else {
											console.log('Tweet failed...');
											console.log(err);
										}
									});
							}, 1000);
						} else {
							console.log('Delete failed...');
							console.log(err);
						}
					});
				}, 1000);

				break;
			}
		}
	});

	stream.on('error', function (error) {
		console.log(error);
	});

});

ネストが綺麗ですね(すっとぼけ)。

実行してみる

meow.gif

考察

  • 企業の人事に見られても恥ずかしくない Twitter が実現
  • フィルタリングする語句をどのように選ぶか考える必要がある
    • ひたすらデータベースを増やしていく
    • ネガポジ判定
    • みんなから募るとか

感想

にゃーん(早く合否知らせてくれ)

3
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?