Я не знаю, как выглядит ваша база данных, но так я бы ее настроил.
CREATE TABLE twitter_users (
user_id INTEGER PRIMARY KEY NOT NULL,
screen_name VARCHAR(20) NOT NULL
);
CREATE TABLE friends (
friend_id INTEGER PRIMARY KEY NOT NULL
);
CREATE TABLE followers (
follower_id INTEGER PRIMARY KEY NOT NULL
);
Тогда вы можете использовать этот SQL, чтобы получить друзей, которые не являются подписчиками.
SELECT friend_id, screen_name
FROM friends
LEFT JOIN followers ON follower_id = friend_id
LEFT JOIN twitter_users ON user_id = friend_id
WHERE follower_id IS NULL
Если отображаемое имя NULL
, это означает, что их нет в вашей таблице twitter_users
. Вы можете найти пропавших пользователей и сохранить их на потом. Имена экранов могут изменяться, поэтому вам может потребоваться периодически обновлять таблицу.
Используйте API друзей / идентификаторов и подписчиков / идентификаторов , чтобы получить список идентификаторов друзей и подписчиков по 5000 одновременно. Используйте API users / lookup , чтобы получить до 100 имен экранов. Если у пользователя 2 000 000 друзей, для получения списка идентификаторов потребуется 400 вызовов API, поэтому вы все равно должны кэшировать этот список, по крайней мере, для популярных пользователей.