Guest User

Untitled

a guest
Sep 30th, 2025
19
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. javascript:(function() {          var isXstalk = window.location.hostname.includes('xstalk.com') || window.location.hostname.includes('twstalker.com');     var tweetSelector = isXstalk ? '.tweet-container' : '.timeline-item';     var contentSelector = isXstalk ? '.tweet-body' : '.tweet-content';     var usernameSelector = isXstalk ? '.tweet-container .profile-link a span' : '.username';     var tweetLinkSelector = isXstalk ? '.tweet-container .profile-link a[href*="/status/"]' : '.tweet-link';     var authorSelector = isXstalk ? '.tweet-container .profile-link span' : '.username';     var imageSelector = isXstalk ? '.tweet-images img, .tweet-video video[poster]' : '.attachment.image img';     var videoSelector = isXstalk ? '.tweet-video video' : 'video';          var tweets = Array.from(document.querySelectorAll(tweetSelector));     if (tweets.length === 0) {         tweets = Array.from(document.querySelectorAll('.timeline-item, .tweet-container'));         if (tweets.length === 0) return;     }          var username = document.querySelector(usernameSelector);     if (!username) {         username = document.querySelector('.username, .tweet-container .profile-link span');         if (!username) return;     }     username = username.textContent.replace('@', '').trim();          var userTweets = [];     var tweetTexts = [];     var imgCounter = 0;     var outputChains = [];     var totalTweetCount = 0;     var globalTweetCount = 0;          function replaceDomain(url) {         return url.replace('nitter.poast.org', 'twitter.com').replace('xcancel.com', 'twitter.com').replace('xstalk.com', 'twitter.com').replace('twstalker.com', 'twitter.com');     }          function fixTwitterUrl(url) {         var fixedUrl = replaceDomain(url);         if (fixedUrl.includes('twitter.com/profile/')) {             fixedUrl = fixedUrl.replace('/profile/', '/');         }         return fixedUrl;     }          var currentUrl = fixTwitterUrl(window.location.href);     if (currentUrl.includes('/status/')) {         currentUrl = currentUrl.split('?')[0];         userTweets.push(currentUrl);     }          tweets.forEach(tweet => {         var tweetLink = tweet.querySelector(tweetLinkSelector);         var tweetAuthor = tweet.querySelector(authorSelector);                  if (tweetLink && tweetAuthor) {             var tweetLinkHref = new URL(tweetLink.href, window.location.href);             var newUrl = fixTwitterUrl(tweetLinkHref.href);             if (newUrl && newUrl.includes('/status/')) {                 newUrl = newUrl.split('?')[0];             }             var authorName = tweetAuthor.textContent.replace('@', '').trim();             if (newUrl && newUrl.includes('/status/') && authorName === username) {                 userTweets.push(newUrl);             }         }                  var tweetContent = tweet.querySelector(contentSelector);         if (!tweetContent && isXstalk) {             tweetContent = tweet.querySelector('.tweet-body');         }                  if (tweetContent) {             var tweetText = tweetContent.innerHTML;                          var quotedTweets = Array.from(tweet.querySelectorAll('.quote.quote-big, .quote'));             var quotedTextForThisTweet = quotedTweets.map(quotedTweet => {                 var quoteTextElement = quotedTweet.querySelector('.quote-text, .tweet-body');                 var quoteUrlElement = quotedTweet.querySelector('.quote-link, a[href*="/status/"]');                 if (quoteTextElement && quoteUrlElement) {                     var quoteText = quoteTextElement.textContent;                     var quoteUrl = quoteUrlElement.href;                     var quoteUrlObj = new URL(quoteUrl, window.location.href);                     quoteUrlObj.hostname = 'twitter.com';                     var fixedQuoteUrl = fixTwitterUrl(quoteUrlObj.href);                     return `[Quoted tweet]\n${quoteText}\n[U][URL]${fixedQuoteUrl}[/URL][/U]`;                 }                 return '';             }).filter(text => text !== '').join('\n\n');                          tweetText += `\n\n${quotedTextForThisTweet}`;             tweetText = tweetText.replace(/<a href="([^"]+)">[^<]+<\/a>/g, (match, p1) => `[U][URL]${p1}[/URL][/U]`);             tweetText = tweetText.replace(/<br[^>]*>/g, '\n');             tweetText = tweetText.replace(/<[^>]+>/g, '');             tweetText = tweetText.replace(/ /g, ' ');             tweetText = tweetText.trim();                          var images = Array.from(tweet.querySelectorAll(imageSelector));             var imageUrlsForThisTweet = images.map(img => {                 var src = decodeURIComponent(img.src || img.getAttribute('poster') || '');                 if (!src) return '';                                  var url = new URL(src, window.location.href);                                  if (url.hostname.includes('xcancel.com') && url.pathname.includes('/pic/')) {                     var pathParts = url.pathname.split('/');                     var mediaPart = pathParts[pathParts.length - 1];                     var decodedMedia = decodeURIComponent(mediaPart);                     var filename = decodedMedia.split('?')[0];                     var match = filename.match(/([^\/]+)$/);                     if (match) {                         return `[img]https://pbs.twimg.com/media/${match[1]}[/img]`;                     }                 }                                  if (src.includes('pbs.twimg.com') && (src.includes('ext_tw_video_thumb') || src.includes('media'))) {                     var posterMatch = src.match(/\/([^\/]+)\.(jpg|png|webp)/);                     if (posterMatch) {                         return `[img]https://pbs.twimg.com/media/${posterMatch[1]}.${posterMatch[2]}[/img]`;                     }                 }                                  url.hostname = 'pbs.twimg.com';                 url.pathname = url.pathname.replace('/pic/', '/media/').replace('/media/media/', '/media/');                 url.search = '';                 return `[img]${url.href}[/img]`;             }).filter(url => url !== '').join('\n');                          if (imgCounter + images.length > 20 && tweetTexts.length > 0) {                 createChain();             }                          imgCounter += images.length;             if (imageUrlsForThisTweet) {                 tweetText += `\n\n${imageUrlsForThisTweet}`;             }                          var videos = Array.from(tweet.querySelectorAll(videoSelector));             var videoUrlsForThisTweet = videos.map(video => {                 var source = video.querySelector('source');                 var src = source ? source.src : video.src;                 if (!src) return '';                                  if (src && (src.startsWith('https://video') && (src.includes('twimg.com/ext_tw_video/') || src.includes('twimg.com/amplify_video/')))) {                     src = src.split('?')[0];                     return `[U][URL]${src}[/URL][/U]`;                 }                 return '';             }).filter(url => url !== '').join('\n');                          if (videoUrlsForThisTweet) {                 tweetText += `\n\n${videoUrlsForThisTweet}`;             }                          globalTweetCount++;             totalTweetCount++;             var authorName = tweetAuthor ? tweetAuthor.textContent.replace('@', '').trim() : username;             tweetTexts.push({ text: tweetText.trim(), author: authorName, index: globalTweetCount });         }     });          if (tweetTexts.length > 0) {         createChain();     }          function createChain() {         if (userTweets.length === 0) return;                  var firstNewChainUrl = userTweets.shift();         var formattedText = `\n` + [             firstNewChainUrl,             `[SPOILER="thread continued"]\n${userTweets.map(url => fixTwitterUrl(url)).map(url => {                 return url.includes('/status/') ? url.split('?')[0] : url;             }).join('\n')}\n[/SPOILER]`,             `[SPOILER="full text & large images"]\n\n${tweetTexts.map((tweet, index) =>                  `${index + 1}/${tweetTexts.length}\n@${tweet.author}\n${tweet.text}\n`).join('\n')}\n\n` +             `[COLOR=rgb(184, 49, 47)][B][SIZE=5]To post tweets in this format, more info here: ` +             `[URL]https://www.thecoli.com/threads/tips-and-tricks-for-posting-the-coli-megathread.984734/post-52211196[/URL][/SIZE][/B][/COLOR]\n[/SPOILER]`         ].join('\n');                  formattedText = formattedText.replace(/(\d+\/\d+)\s@/g, '$1\n@');         outputChains.push(formattedText);                  imgCounter = 0;         tweetTexts = [];         totalTweetCount = 0;     }          var finalFormattedText = outputChains.join('\n\n[threads continued]\n\n');          var textArea = document.createElement('textarea');     textArea.value = finalFormattedText;     document.body.appendChild(textArea);     textArea.select();     document.execCommand('copy');     document.body.removeChild(textArea);          var notificationBox = document.createElement('div');     notificationBox.style.position = 'fixed';     notificationBox.style.bottom = '20px';     notificationBox.style.left = '20px';     notificationBox.style.padding = '10px';     notificationBox.style.backgroundColor = 'white';     notificationBox.style.border = '1px solid black';     notificationBox.innerText = `Copied: ${globalTweetCount} tweets`;     document.body.appendChild(notificationBox);          setTimeout(function() {         notificationBox.style.opacity = '0';         setTimeout(function() {             document.body.removeChild(notificationBox);         }, 1000);     }, 2000);          console.log('Tweet collection process completed and copied to clipboard.'); })();
Advertisement
Add Comment
Please, Sign In to add comment