ڇا فرد انفرادي پيروي / ollowميل بٽن تي ڪلڪ ڪرڻ جي تڪليف کانسواءِ Twitter تي جارحاڻي انداز سان پيروي ڪرڻ يا پيروي ڪرڻ چاهيندا؟ هيٺيان ڪوڊ آهن جن کي توهان استعمال ڪري سگھوٿا ماڻهن کي وڏي پيماني تي پيروي ڪرڻ يا عمل ڪرڻ لاءِ. پر ياد رکو توهان جو پنهنجو استعمال استعمال ڪرڻ جي لاءِ / Twitter کي پيروي ڪرڻ / ختم ڪرڻ واري اسڪرپٽ توهان جي ذاتي استعمال / جانچ ۽ Twitter جي حقن جو احترام ڪرڻ.
Twitter وڏي پئماني تي اسڪرپٽ پيروي ڪريو
ٽوئٽر ماس فالو اسڪرپٽ هلائڻ لاءِ توهان کي ڪروم برائوزر استعمال ڪرڻو پوندو.
- کوليو Twitter ۽ توهان جي اڪائونٽ ۾ لاگ ان.
- ڪنهن جي پروفائيل کي کوليو.
- فالورز تي ڪلڪ ڪريو ۽ توھان انھن ماڻھن جي فهرست ڏسندا جيڪي توھان جي چونڊيل پروفائل جي پيروي ڪري رھيا آھن.
- لسٽ ۾ وڌيڪ پروفائلز لوڊ ڪرڻ لاء ڪجھ ڀيرا ھيٺ لٿو.
- پريس SHIFT + CTRL + آئي (Windows) يا سي ايم ڊي + اوپي ٽي آئي (Mac) توهان جي ڪيبورڊ تي يا برائوزر تي ڪٿي به ساڄي ڪلڪ ڪريو ۽ "انسپيڪٽ ايليمينٽ" چونڊيو يا پنهنجي برائوزر ونڊو جي مٿي ساڄي ڪنڊ ۾ ڪروم مينيو آئڪن تي ڪلڪ ڪريو ۽ پوءِ وڃو. وڌيڪ اوزار> ڊولپرر اوزار.
- منتخب ڪريو "ڪنسول" ٽئب.
- ڪنسول ڪرڻ لاءِ هيٺ ڏنل ڪوڊ ڪاپي ۽ پيسٽ ڪريو ۽ ”انٽر“ کي دٻايو.
let btns = document.querySelectorAll("[data-testid]")
let followBtns = Array.from(btns).filter(btn => {
return btn.getAttribute('data-testid').includes('follow')
})
for (let i = 1; i <= followBtns.length; i++) {
setTimeout(() => {
followBtns[i - 1].click()
}, 1000 * i);
}
Twitter وڏي پئماني تي اسڪرپٽ ختم ڪيو ويو
Twitter وڏي پئماني تي اسڪرپٽ هلائڻ لاءِ توهان کي ڪروم برائوزر استعمال ڪرڻو پوندو.
- کوليو Twitter ۽ توهان جي اڪائونٽ ۾ لاگ ان.
- پٺيان ڪلڪ ڪريو ۽ توھان انھن ماڻھن جي فهرست ڏسندا جن جي توھان پيروي ڪري رھيا آھيو.
- لسٽ ۾ وڌيڪ پروفائلز لوڊ ڪرڻ لاء ڪجھ ڀيرا ھيٺ لٿو.
- پريس SHIFT + CTRL + آئي (Windows) يا سي ايم ڊي + اوپي ٽي آئي (Mac) توهان جي ڪيبورڊ تي يا برائوزر تي ڪٿي به ساڄي ڪلڪ ڪريو ۽ "انسپيڪٽ ايليمينٽ" چونڊيو يا پنهنجي برائوزر ونڊو جي مٿي ساڄي ڪنڊ ۾ ڪروم مينيو آئڪن تي ڪلڪ ڪريو ۽ پوءِ وڃو. وڌيڪ اوزار> ڊولپرر اوزار
- منتخب ڪريو "ڪنسول" ٽئب.
هڪ. جن کي پوئتي نه چاڙهي انهن جي پيروي ڪريو
انهن سڀني ماڻهن کي ان فالو ڪرڻ لاءِ جيڪي توهان جي پٺيان نه پيا اچن، پوءِ ڪنسول ڪرڻ لاءِ هيٺ ڏنل ڪوڊ ڪاپي ۽ پيسٽ ڪريو ۽ ”انٽر“ کي دٻايو.
var LANGUAGE = "EN"; //NOTE: change it to use your language!
var WORDS =
{
//English language:
EN:
{
followsYouText: "Follows you", //Text that informs that follows you.
followingButtonText: "Following", //Text of the "Following" button.
confirmationButtonText: "Unfollow" //Text of the confirmation button. I am not totally sure.
},
//Spanish language:
ES:
{
followsYouText: "Te sigue", //Text that informs that follows you.
followingButtonText: "Siguiendo", //Text of the "Following" button.
confirmationButtonText: "Dejar de seguir" //Text of the confirmation button. I am not totally sure.
}
//NOTE: if needed, add your language here...
}
var UNFOLLOW_FOLLOWERS = false; //If set to true, it will also remove followers (unless they are skipped).
var MS_PER_CYCLE = 10; //Milliseconds per cycle (each call to 'performUnfollow').
var MAXIMUM_UNFOLLOW_ACTIONS_PER_CYCLE = null; //Maximum of unfollow actions to perform, per cycle (each call to 'performUnfollow'). Set to 'null' to have no limit.
var MAXIMUM_UNFOLLOW_ACTIONS_TOTAL = null; //Maximum of unfollow actions to perform, in total (among all calls to 'performUnfollow'). Set to 'null' to have no limit.
var SKIP_USERS = //Users that we do not want to unfollow (even if they are not following you back):
[
//Place the user names that you want to skip here (they will not be unfollowed):
"user_name_to_skip_example_1",
"user_name_to_skip_example_2",
"user_name_to_skip_example_3"
];
SKIP_USERS.forEach(function(value, index) { SKIP_USERS[index] = value.toLowerCase(); }); //Transforms all the user names to lower case as it will be case insensitive.
var _UNFOLLOWED_TOTAL = 0; //Keeps the number of total unfollow actions performed. Read-only (do not modify).
//Function that unfollows non-followers on Twitter:
var performUnfollow = function(followsYouText, followingButtonText, confirmationButtonText, unfollowFollowers, maximumUnfollowActionsPerCycle, maximumUnfollowActionsTotal)
{
var unfollowed = 0;
followsYouText = followsYouText || WORDS.EN.followsYouText; //Text that informs that follows you.
followingButtonText = followingButtonText || WORDS.EN.followingButtonText; //Text of the "Following" button.
confirmationButtonText = confirmationButtonText || WORDS.EN.confirmationButtonText; //Text of the confirmation button.
unfollowFollowers = typeof(unfollowFollowers) === "undefined" || unfollowFollowers === null ? UNFOLLOW_FOLLOWERS : unfollowFollowers;
maximumUnfollowActionsTotal = maximumUnfollowActionsTotal === null || !isNaN(parseInt(maximumUnfollowActionsTotal)) ? maximumUnfollowActionsTotal : MAXIMUM_UNFOLLOW_ACTIONS_TOTAL || null;
maximumUnfollowActionsTotal = !isNaN(parseInt(maximumUnfollowActionsTotal)) ? parseInt(maximumUnfollowActionsTotal) : null;
maximumUnfollowActionsPerCycle = maximumUnfollowActionsPerCycle === null || !isNaN(parseInt(maximumUnfollowActionsPerCycle)) ? maximumUnfollowActionsPerCycle : MAXIMUM_UNFOLLOW_ACTIONS_PER_CYCLE || null;
maximumUnfollowActionsPerCycle = !isNaN(parseInt(maximumUnfollowActionsPerCycle)) ? parseInt(maximumUnfollowActionsPerCycle) : null;
//Looks through all the containers of each user:
var totalLimitReached = false;
var localLimitReached = false;
var userContainers = document.querySelectorAll('[data-testid=UserCell]');
Array.prototype.filter.call
(
userContainers,
function(userContainer)
{
//If we have reached a limit previously, exits silently:
if (totalLimitReached || localLimitReached) { return; }
//If we have reached the maximum desired number of total unfollow actions, exits:
else if (maximumUnfollowActionsTotal !== null && _UNFOLLOWED_TOTAL >= maximumUnfollowActionsTotal) { console.log("Exiting! Limit of unfollow actions in total reached: " + maximumUnfollowActionsTotal); totalLimitReached = true; return; }
//...otherwise, if we have reached the maximum desired number of local unfollow actions, exits:
else if (maximumUnfollowActionsPerCycle !== null && unfollowed >= maximumUnfollowActionsPerCycle) { console.log("Exiting! Limit of unfollow actions per cycle reached: " + maximumUnfollowActionsPerCycle); localLimitReached = true; return; }
//Checks whether the user is following you:
if (!unfollowFollowers)
{
var followsYou = false;
Array.from(userContainer.querySelectorAll("*")).find
(
function(element)
{
if (element.textContent === followsYouText) { followsYou = true; }
}
);
}
else { followsYou = false; } //If we want to also unfollow followers, we consider it is not a follower.
//If the user is not following you (or we also want to unfollow followers):
if (!followsYou)
{
//Finds the user name and checks whether we want to skip this user or not:
var skipUser = false;
var userName = "";
Array.from(userContainer.querySelectorAll("[href^='/']")).find
(
function (element)
{
if (skipUser) { return; }
if (element.href.indexOf("search?q=") !== -1 || element.href.indexOf("/") === -1) { return; }
userName = element.href.substring(element.href.lastIndexOf("/") + 1).toLowerCase();
Array.from(element.querySelectorAll("*")).find
(
function (subElement)
{
if (subElement.textContent.toLowerCase() === "@" + userName)
{
if (SKIP_USERS.indexOf(userName) !== -1)
{
console.log("We want to skip: " + userName);
skipUser = true;
}
}
}
);
}
);
//If we do not want to skip the user:
if (!skipUser)
{
//Finds the unfollow button:
Array.from(userContainer.querySelectorAll('[role=button]')).find
(
function(element)
{
//If the unfollow button is found, clicks it:
if (element.textContent === followingButtonText)
{
console.log("* Unfollowing: " + userName);
element.click();
unfollowed++;
_UNFOLLOWED_TOTAL++;
}
}
);
}
}
}
);
//If there is a confirmation dialog, press it automatically:
Array.from(document.querySelectorAll('[role=button]')).find //Finds the confirmation button.
(
function(element)
{
//If the confirmation button is found, clicks it:
if (element.textContent === confirmationButtonText)
{
element.click();
}
}
);
return totalLimitReached ? null : unfollowed; //If the total limit has been reached, returns null. Otherwise, returns the number of unfollowed people.
}
//Scrolls and unfollows non-followers, constantly:
var scrollAndUnfollow = function()
{
window.scrollTo(0, document.body.scrollHeight);
var unfollowed = performUnfollow(WORDS[LANGUAGE].followsYouText, WORDS[LANGUAGE].followingButtonText, WORDS[LANGUAGE].confirmationButtonText, UNFOLLOW_FOLLOWERS, MAXIMUM_UNFOLLOW_ACTIONS_PER_CYCLE, MAXIMUM_UNFOLLOW_ACTIONS_TOTAL); //For English, you can try to call it without parameters.
if (unfollowed !== null) { setTimeout(scrollAndUnfollow, MS_PER_CYCLE); }
else { console.log("Total desired of unfollow actions performed!"); }
};
scrollAndUnfollow();
ب. سڀن جي تابعداري ڪريو
انهن سڀني ماڻهن کي اڻڄاڻڻ لاءِ جن جي توهان پيروي ڪري رهيا آهيو، پوءِ هيٺ ڏنل ڪوڊ کي ڪاپي ۽ پيسٽ ڪريو ڪنسول ڪرڻ لاءِ ۽ “Enter” کي دٻايو.
(() => {
const $followButtons = '[data-testid$="-unfollow"]';
const $confirmButton = '[data-testid="confirmationSheetConfirm"]';
const retry = {
count: 0,
limit: 3,
};
const scrollToTheBottom = () => window.scrollTo(0, document.body.scrollHeight);
const retryLimitReached = () => retry.count === retry.limit;
const addNewRetry = () => retry.count++;
const sleep = ({ seconds }) =>
new Promise((proceed) => {
console.log(`WAITING FOR ${seconds} SECONDS...`);
setTimeout(proceed, seconds * 1000);
});
const unfollowAll = async (followButtons) => {
console.log(`UNFOLLOWING ${followButtons.length} USERS...`);
await Promise.all(
followButtons.map(async (followButton) => {
followButton && followButton.click();
await sleep({ seconds: 1 });
const confirmButton = document.querySelector($confirmButton);
confirmButton && confirmButton.click();
})
);
};
const nextBatch = async () => {
scrollToTheBottom();
await sleep({ seconds: 1 });
const followButtons = Array.from(document.querySelectorAll($followButtons));
const followButtonsWereFound = followButtons.length > 0;
if (followButtonsWereFound) {
await unfollowAll(followButtons);
await sleep({ seconds: 2 });
return nextBatch();
} else {
addNewRetry();
}
if (retryLimitReached()) {
console.log(`NO ACCOUNTS FOUND, SO I THINK WE'RE DONE`);
console.log(`RELOAD PAGE AND RE-RUN SCRIPT IF ANY WERE MISSED`);
} else {
await sleep({ seconds: 2 });
return nextBatch();
}
};
nextBatch();
})();
مهرباني بلڪل جيڪو مون کي ڳولي رهيو هو.
هي عظيم معلومات آهي. ان فالو قاعدن جي ڀڃڪڙي ڪرڻ کان پهريان روزاني انفالو نمبر ڇا آهي.
واهه!
چڱو ٿيو وڪٽر! اهو ڪم ڪيو. Twitter تي غير فعال هينڊلز کي غير فالو ڪرڻ لاءِ ڪي صلاحون؟ منهنجو مطلب آهي هينڊلز جن ٽوئيٽ نه ڪيو آهي 2 سال يا ان کان وڌيڪ؟ مان توهان جي جواب جي ساراهه ڪندس. مان واپس چيڪ ڪندو رهندس.