Skip to content

Commit

Permalink
fix: add quote type to filter options, serialize
Browse files Browse the repository at this point in the history
  • Loading branch information
sky3d authored and AVVS committed Dec 12, 2022
1 parent 54aff15 commit 79ae8ab
Show file tree
Hide file tree
Showing 3 changed files with 20 additions and 7 deletions.
1 change: 1 addition & 0 deletions src/configs/twitter.js
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ module.exports = {
stream_filters: {
replies: false,
retweets: false,
quotes: false,
userMentions: false,
hashTags: false,
skipValidAccounts: false,
Expand Down
1 change: 1 addition & 0 deletions src/services/twitter.js
Original file line number Diff line number Diff line change
Expand Up @@ -96,6 +96,7 @@ class Twitter {
entities: data.entities,
extended_entities: data.extended_entities,
retweeted_status: data.retweeted_status && Twitter.serializeTweet(data.retweeted_status, true),
quoted_status: data.quoted_status && Twitter.serializeTweet(data.quoted_status, true),
retweet_count: data.retweet_count,
favorite_count: data.favorite_count,
};
Expand Down
25 changes: 18 additions & 7 deletions src/utils/twitter/filter.js
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ const { TweetType, hasHashTags, hasUserMentions } = require('./twitter');
const STREAM_FILTERS_DEFAULTS = {
replies: false,
retweets: false,
quotes: false,
userMentions: false,
hashTags: false,
skipValidAccounts: false,
Expand All @@ -21,6 +22,10 @@ class StatusFilter {
this.logger = logger;
}

debug(message, data) {
this.logger.debug({ id: data.id, user: data.user.screen_name }, message);
}

/**
* Apply filter before saving statuses to database
* @param {object} data - fetched tweet
Expand All @@ -31,45 +36,51 @@ class StatusFilter {
const {
replies,
retweets,
quotes,
userMentions,
hashTags,
skipValidAccounts,
} = this.filterOptions;

// Don't filter retweets posted by the valid users
if (skipValidAccounts && this.accountIds[data.user.id] !== undefined) {
this.logger.debug({ id: data.id, user: data.user.screen_name }, 'filter skipped by valid acc');
this.debug('filter skipped by valid acc', data);
return false;
}

if (replies && tweetType === TweetType.REPLY) {
// Keep the tweets which are replied by the user
if (data.in_reply_to_user_id === data.user.id) {
this.logger.debug({ id: data.id, user: data.user.screen_name }, 'keep own reply');
this.debug('keep own reply', data);
return false;
}
this.logger.debug({ id: data.id, user: data.user.screen_name }, 'reply filtered');
this.debug('reply filtered', data);
return data.id;
}

if (retweets && tweetType === TweetType.RETWEET) {
// Keep the tweets which are retweeted by the user
if (get(data.retweet, 'user.id') === data.user.id) {
this.logger.debug({ id: data.id, user: data.user.screen_name }, 'keep own retweet');
this.debug('keep own retweet', data);
return false;
}

this.logger.debug({ id: data.id, user: data.user.screen_name }, 'retweet filtered');
this.debug('retweet filtered', data);
return data.id;
}

if (quotes && tweetType === TweetType.QUOTE) {
this.debug('quote filtered', data);
return data.id;
}

if (userMentions && hasUserMentions(data)) {
this.logger.debug({ id: data.id, user: data.user.screen_name }, 'mentions filtered');
this.debug('mentions filtered', data);
return data.id;
}

if (hashTags && hasHashTags(data)) {
this.logger.debug({ id: data.id, user: data.user.screen_name }, 'hashtag filtered');
this.debug('hashtag filtered', data);
return data.id;
}

Expand Down

0 comments on commit 79ae8ab

Please sign in to comment.