Last active
June 7, 2026 18:41
-
-
Save roshanmirajkar/c7924d7a2ad115b8b9c3462cfb90643b to your computer and use it in GitHub Desktop.
Twitter Following List Exporter
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
| var LANGUAGE = "EN"; | |
| var WORDS = { EN: { followsYouText: "Follows you" } }; | |
| var MS_PER_CYCLE = 10; | |
| var PRINT_FOLLOW_INFORMATION = true; | |
| var SKIP_FOLLOWERS = false; | |
| var SKIP_NON_FOLLOWERS = false; | |
| var SKIP_USERS = []; | |
| SKIP_USERS = SKIP_USERS.map(function(value) { return value.toLowerCase(); }); | |
| var userData = []; | |
| function printUserNames() { | |
| var followsYouText = WORDS[LANGUAGE].followsYouText; | |
| var userContainers = document.querySelectorAll('[data-testid=UserCell]'); | |
| userContainers.forEach(function(userContainer) { | |
| var followsYou = userContainer.innerText.includes(followsYouText); | |
| if ((followsYou && SKIP_FOLLOWERS) || (!followsYou && SKIP_NON_FOLLOWERS)) return; | |
| var userNameElement = userContainer.querySelector('[href^="/"][role="link"]'); | |
| if (!userNameElement) return; | |
| var userName = userNameElement.href.split('/').pop().toLowerCase(); | |
| if (SKIP_USERS.includes(userName)) return; | |
| if (!userData.some(u => u.Username === userName)) { | |
| userData.push({ Username: userName, FollowsYou: followsYou ? "Yes" : "No" }); | |
| console.log("* " + userName + " | Follows You: " + (followsYou ? "Yes" : "No")); | |
| } | |
| }); | |
| } | |
| function scrollAndShowUsernames() { | |
| window.scrollTo(0, document.body.scrollHeight); | |
| printUserNames(); | |
| setTimeout(scrollAndShowUsernames, MS_PER_CYCLE); | |
| } | |
| function arrayToCSV(objArray) { | |
| var csv = objArray.map(row => Object.values(row).join(',')).join('\n'); | |
| return 'Username,FollowsYou\n' + csv; | |
| } | |
| function downloadCSV() { | |
| var csv = arrayToCSV(userData); | |
| var blob = new Blob([csv], { type: 'text/csv;charset=utf-8;' }); | |
| var link = document.createElement('a'); | |
| link.href = URL.createObjectURL(blob); | |
| link.download = 'twitter_following.csv'; | |
| document.body.appendChild(link); | |
| link.click(); | |
| document.body.removeChild(link); | |
| } | |
| scrollAndShowUsernames(); | |
| setInterval(downloadCSV, 80000); |
Author
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
var LANGUAGE = "EN"; var WORDS = { EN: { followsYouText: "Follows you" } }; var MS_PER_CYCLE = 10; var PRINT_FOLLOW_INFORMATION = true; var SKIP_FOLLOWERS = false; var SKIP_NON_FOLLOWERS = false; var SKIP_USERS = []; SKIP_USERS = SKIP_USERS.map(function(value) { return value.toLowerCase(); }); var userData = []; function printUserNames() { var followsYouText = WORDS[LANGUAGE].followsYouText; var userContainers = document.querySelectorAll('[data-testid=UserCell]'); userContainers.forEach(function(userContainer) { var followsYou = userContainer.innerText.includes(followsYouText); if ((followsYou && SKIP_FOLLOWERS) || (!followsYou && SKIP_NON_FOLLOWERS)) return; var userNameElement = userContainer.querySelector('[href^="/"][role="link"]'); if (!userNameElement) return; var userName = userNameElement.href.split('/').pop().toLowerCase(); if (SKIP_USERS.includes(userName)) return; if (!userData.some(u => u.Username === userName)) { userData.push({ Username: userName, FollowsYou: followsYou ? "Yes" : "No" }); console.log("* " + userName + " | Follows You: " + (followsYou ? "Yes" : "No")); } }); } function scrollAndShowUsernames() { window.scrollTo(0, document.body.scrollHeight); printUserNames(); setTimeout(scrollAndShowUsernames, MS_PER_CYCLE); } function arrayToCSV(objArray) { var csv = objArray.map(row => Object.values(row).join(',')).join('\n'); return 'Username,FollowsYou\n' + csv; } function downloadCSV() { var csv = arrayToCSV(userData); var blob = new Blob([csv], { type: 'text/csv;charset=utf-8;' }); var link = document.createElement('a'); link.href = URL.createObjectURL(blob); link.download = 'twitter_following.csv'; document.body.appendChild(link); link.click(); document.body.removeChild(link); } scrollAndShowUsernames(); setInterval(downloadCSV, 80000);