推文扒取

扒取推文的插件

Dovrai installare un'estensione come Tampermonkey, Greasemonkey o Violentmonkey per installare questo script.

You will need to install an extension such as Tampermonkey to install this script.

Dovrai installare un'estensione come Tampermonkey o Violentmonkey per installare questo script.

Dovrai installare un'estensione come Tampermonkey o Userscripts per installare questo script.

Dovrai installare un'estensione come ad esempio Tampermonkey per installare questo script.

Dovrai installare un gestore di script utente per installare questo script.

(Ho già un gestore di script utente, lasciamelo installare!)

Dovrai installare un'estensione come ad esempio Stylus per installare questo stile.

Dovrai installare un'estensione come ad esempio Stylus per installare questo stile.

Dovrai installare un'estensione come ad esempio Stylus per installare questo stile.

Dovrai installare un'estensione per la gestione degli stili utente per installare questo stile.

Dovrai installare un'estensione per la gestione degli stili utente per installare questo stile.

Dovrai installare un'estensione per la gestione degli stili utente per installare questo stile.

(Ho già un gestore di stile utente, lasciamelo installare!)

Autore
Cierra-Runis
Installazioni giornaliere
0
Installazioni totali
73
Valutazione
0 0 0
Versione
1.2
Creato il
02/08/2022
Aggiornato il
06/03/2023
Dimensione
4,38 KB
Licenza
Non disponibile
Applica a

// ==UserScript==
// @name 推文扒取
// @namespace https://github.com/Cierra-Runis/getTweets
// @version 1.2
// @description 扒取推文的插件
// @connect raw.githubusercontent.com
// @connect github.com
// @connect cdn.jsdelivr.net
// @author https://github.com/Cierra-Runis
// @match https://twitter.com/*
// @icon https://www.google.com/s2/favicons?sz=64&domain=twitter.com
// @grant none
// ==/UserScript==

window.onload = (function () {
'use strict';

var list = [];
var times = 0;
setInterval(addButton, 1000);

function addButton() {
var div = document.createElement('div');
div.style.cssText = "width: 25px;height: 25px;color: #ffffff;text-align: center;font-size: small;line-height: 25px;margin: 5px;cursor: pointer;display: flow-root;z-index: 1";
div.innerText = "下载";
div.onclick = function () {
if (confirm("要下载推文吗?")) {
setInterval(getTweets, 5000);
}
}
if (document.querySelector('#react-root').lastChild.innerText == '下载') {
// console.log('button has existed');
} else {
document.querySelector('#react-root').appendChild(div);
}

}

function getTweets() {
var url = window.location.href;
var before = list.length;

try {

var blocks = document.evaluate('//*[@id="react-root"]/div[1]/div/div[2]/main/div/div/div/div[1]/div/div[3]/div/div/section/div/div', document).iterateNext().childNodes

for (var i = 0; i < blocks.length; i++) {
var div = blocks[i].querySelector('div>div>div>article>div>div');
if (div == null) {
// console.log('block is null');
} else {
try {
var block = div.childNodes[1];
if (block.childNodes[1].childElementCount != 3) {
console.log('This is a block has not text');
continue;
} else {
console.log('Has text!');
}
var href = block.getElementsByTagName("a")[0].href;
if (href != url) {
// console.log(href + "!=" + url);
continue;
} else {
var textContent = block.childNodes[1].childNodes[1].innerText;
var isExited = false;
for (var j = 0; j < list.length; j++) {
if (list[j].content == textContent) {
// console.log('text (' + list[j].content + ') has existed!');
isExited = true;
}
}
if (!isExited) {
console.log('text hasn\'t existed, adding to list.');
list.push({ content: textContent });
}
}
} catch (error) {
// console.log('href isn\'t exist');
}
}
// console.log(i + ". end");
}
// console.log('END');
var after = list.length;
if (after == before) {
// console.log('No new text was add!!!');
times++;
} else {
// console.log('New text was Add.');
times = 0;
}
if (times > 3) {
var jsonStr = JSON.stringify(list);
// console.log(jsonStr);
createAndDownloadFile(url.substring(20) + ".json", jsonStr);
window.location.href = "about:blank";
window.close();
}
window.scrollTo(0, document.body.scrollHeight);
} catch (error) {
console.log('error');
}

}

function createAndDownloadFile(fileName, content) {
var aTag = document.createElement('a');
var blob = new Blob([content]);
aTag.download = fileName;
aTag.href = URL.createObjectURL(blob);
aTag.click();
URL.revokeObjectURL(blob);
}

})();