Skip to content

Instantly share code, notes, and snippets.

@Nielk1
Last active August 6, 2017 05:54
Show Gist options
  • Save Nielk1/12f3f6478d799e856684695d6a91bb56 to your computer and use it in GitHub Desktop.
Save Nielk1/12f3f6478d799e856684695d6a91bb56 to your computer and use it in GitHub Desktop.
// ==UserScript==
// @name Twitter Verified Detector
// @namespace http://nielk1.com/
// @version 0.1
// @description Find twitter verified accounts and log them to the console as errors (as twitter kills console.log())
// @author Nielk1
// @match https://twitter.com/*
// @exclude https://twitter.com/i/*
// @grant unsafeWindow
// @grant GM_setValue
// @grant GM_getValue
// @grant GM_deleteValue
// ==/UserScript==
(function() {
'use strict';
// wipe memory
//GM_deleteValue('__twitter_verified_scraper.user.js__TwitterVerifiedSent'); return;
function startup() {
jQuery(document).ready(function() {
function ProcVerifiedOnPage() {
var wasVerified = GM_getValue('__twitter_verified_scraper.user.js__TwitterVerifiedSent');
if(typeof wasVerified === 'string') {
wasVerified = wasVerified.split(',');
}else{
wasVerified = [];
}
var VerifiedCandidates = jQuery.unique(jQuery.merge(jQuery.map(jQuery('span.FullNameGroup').filter(':has(span.UserBadges > span.Icon.Icon--verified)').parents('.tweet'), function (attr) {return jQuery(attr).data('user-id').toString();}) || [],
jQuery.merge(jQuery.map(jQuery('div.ProfileNameTruncated').filter(':has(span.UserBadges > span.Icon.Icon--verified)').parents('.ProfileCard'),function(attr){return jQuery(attr).data('user-id').toString();}) || [],
jQuery.merge(jQuery.map(jQuery('a.account-group').filter(':has(span.UserBadges > span.Icon.Icon--verified)').parents('.account'), function (attr) {return jQuery(attr).data('user-id').toString();}) || [],
jQuery.map(jQuery('span.account-group-inner').filter(':has(span.UserBadges > span.Icon.Icon--verified)').parents('.UserSmallListItem'), function (attr) {return jQuery(attr).data('user-id').toString();}) || []))));
VerifiedCandidates = VerifiedCandidates.filter(function( el ) {
return !wasVerified.includes( el );
});
if (VerifiedCandidates.length > 0) {
//console.log('new verified candidates: ' + VerifiedCandidates.join(','));
//var ajaxSubmitWorked = true; // dummied
//if(ajaxSubmitWorked) {
wasVerified = wasVerified.concat(VerifiedCandidates);
GM_setValue('__twitter_verified_scraper.user.js__TwitterVerifiedSent', wasVerified.join(','));
//}
}
setTimeout(function(){ProcVerifiedOnPage();}, 1000);
}
jQuery(
'<div id="PossibleVerifiedAccountModal-dialog" class="modal-container" style="z-index: 8002; display: hidden;">'+
' <div class="modal draggable" id="PossibleVerifiedAccountModal-dialog-dialog" role="alertdialog" aria-labelledby="PossibleVerifiedAccountModal-dialog-header" aria-describedby="PossibleVerifiedAccountModal-dialog-body" style="top: 20%; left: 254px;"><div class="js-first-tabstop" tabindex="0"></div>'+
' <div class="modal-content" role="document">'+
' <div class="modal-header">'+
' <h3 class="modal-title" id="PossibleVerifiedAccountModal-dialog-header">Possible Verified Accounts</h3>'+
' <button type="button" class="modal-btn modal-close" aria-controls="PossibleVerifiedAccountModal-dialog-dialog" aria-describedby="PossibleVerifiedAccountModal-dialog-body">'+
' <span class="Icon Icon--close Icon--medium">'+
' <span class="visuallyhidden">Close</span>'+
' </span>'+
' </button>'+
' </div>'+
' <div id="PossibleVerifiedAccountModal-dialog-body" class="modal-body" id="keyboard-shortcut-dialog-body" style="word-wrap:break-word;"></div>'+
' </div>'+
' </div>'+
' <div class="js-last-tabstop" tabindex="0"></div>'+
'</div>').appendTo(document.body);
jQuery('#PossibleVerifiedAccountModal-dialog').find('.modal-close').on('click', function() { jQuery('#PossibleVerifiedAccountModal-dialog').hide(); });
jQuery(document).on('click', '#CustomVerifiedAccountList', function() {
var elem = jQuery('#PossibleVerifiedAccountModal-dialog-body');
elem.empty().append(GM_getValue('__twitter_verified_scraper.user.js__TwitterVerifiedSent'));
jQuery('#PossibleVerifiedAccountModal-dialog').show();
});
jQuery('<li class="dropdown-divider" role="presentation"></li>'+
'<li role="presentation">'+
' <button type="button" id="CustomVerifiedAccountList" class="dropdown-link" role="menuitem">Possible Verified</button>'+
'</li>').insertAfter('li.DashUserDropdown-userInfo');
ProcVerifiedOnPage();
});
}
var check = function() {
console.log("waiting for dependancies to load: jQuery");
if(typeof jQuery == 'undefined') {
//console.log("missed jQuery");
setTimeout(check, 500);
} else {
//console.log("found jQuery");
jQuery = unsafeWindow.jQuery;
startup();
}
};
check();
})();
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment