123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152 |
- // ==UserScript==
- // @name DexScreen-GetNewPair
- // @namespace http://tampermonkey.net/
- // @version 0.1
- // @description try to take over the world!
- // @author You
- // @match https://dexscreener.com/new-pairs*
- // @icon https://www.google.com/s2/favicons?sz=64&domain=dexscreener.com
- // @grant none
- // ==/UserScript==
- // maker 降序
- // https://dexscreener.com/new-pairs?rankBy=pairAge&order=asc&chainIds=solana&dexIds=raydium&minLiq=2000&minAge=4&maxAge=48&min24HTxns=900&min24HBuys=800&min24HSells=800&min24HChg=100
- function funcDownload(content, filename) {
- console.log('begin download');
- // 创建隐藏的可下载链接
- var eleLink = document.createElement('a');
- eleLink.download = filename;
- eleLink.style.display = 'none';
- // 字符内容转变成blob地址
- var blob = new Blob([content]);
- eleLink.href = URL.createObjectURL(blob);
- // 触发点击
- document.body.appendChild(eleLink);
- eleLink.click();
- // 然后移除
- document.body.removeChild(eleLink);
- }
- function sleep(sleepdelay) {
- return new Promise((resolve, reject) => {
- setTimeout(() => {
- resolve(sleepdelay);
- }, sleepdelay);
- })
- }
- function getCurrentTime() {
- const zeroFill = (i) => {
- if (i >= 0 && i <= 9) {
- return "0" + i;
- } else {
- return '' + i;
- }
- }
- let date = new Date();//当前时间
- let year = date.getFullYear();
- let month = zeroFill(date.getMonth() + 1);//月
- let day = zeroFill(date.getDate());//日
- let hour = zeroFill(date.getHours());//时
- let minute = zeroFill(date.getMinutes());//分
- let second = zeroFill(date.getSeconds());//秒
- //当前时间
- var curTime = year + month + day + '_' + hour + minute + second;
- return curTime;
- }
- (async function () {
- await sleep(4000);
- console.log("enter ")
- var res = [];
- var mydivbox = document.createElement("div");
- //var input = document.createElement("input")
- var button = document.createElement("button");//创建一个按钮
- //mydivbox.appendChild(input);
- mydivbox.appendChild(button);
- //input.value = "350";
- //input.className = "tam-myinput"
- //input.type = "number"
- button.className = "tam-mybutton"
- button.textContent = "upstep"; //按钮内容
- button.style.width = "100px"; //按钮宽度
- button.style.height = "30px"; //按钮高度
- button.style.align = "center"; //文本居中
- button.style.color = "blue"; //按钮文字颜色
- button.style.background = "#e33e33"; //按钮底色
- button.style.border = "1px solid #e33e33"; //边框属性
- //button.style.borderRadius = "4px"; //按钮四个角弧度
- mydivbox.style.position = "fixed";
- mydivbox.style.top = "60px";
- mydivbox.style.right = "60px";
- // var main_div = document.getElementsByTagName("main")[0];
- // chakra-button__group custom-1itqpek
- // var parent_div = main_div.getElementsByClassName("custom-12szi09")[0];
- // console.log("parent_div.getElementsByClassName", parent_div.getElementsByClassName("custom-1itqpek")[0])
- // parent_div.insertBefore(mydivbox, parent_div.getElementsByClassName("chakra-button__group")[0]);
- // parent_div.appendChild(mydivbox);
- document.body.appendChild(mydivbox)
- button.addEventListener("click", clickBotton); //监听按钮点击事件
- function clickBotton() {
- console.log("entere clickBotton");
- res = [];
- let table_div = document.querySelector('.ds-dex-table.ds-dex-table-new');
- // let theadtitles = table_div.querySelector('.ds-dex-table-th');
- // let titlearr = theadtitles.innerText.trim().split(/\r?\n/);
- let titlearr = ["TokenIdx", 'PairAddress', 'TokenName', 'QuoteToken', 'Age', "Buys", "Sells", "Makers", 'Liquidity', 'Fdv']
- res.push(titlearr);
- let tbodytrs_arr = table_div.getElementsByTagName('a');
- for (let i = 0; i < tbodytrs_arr.length; i++) {
- let tdtexts = []
- let tbodytr = tbodytrs_arr[i];
- let tds_arr = tbodytr.querySelectorAll('.ds-table-data-cell');
- let token_address = tbodytr.href.trim().split('/').pop();
- let token_idx = tbodytr.getElementsByClassName("ds-dex-table-row-badge-pair-no")[0].innerText.trim().replace(/#/g, '');
- let token_name = tbodytr.getElementsByClassName('ds-dex-table-row-base-token-symbol')[0].innerText.trim();
- let quote_token = tbodytr.getElementsByClassName('ds-dex-table-row-quote-token-symbol')[0].innerText.trim();
- let pair_age = tbodytr.getElementsByClassName('ds-dex-table-row-col-pair-age')[0].innerText.trim();
- let pair_buys = tds_arr[3].innerText.trim().replace(/,/g, '');
- let pair_sells = tds_arr[4].innerText.trim().replace(/,/g, '');
- let pair_makers = tds_arr[6].innerText.trim().replace(/,/g, '');
- let pair_liquidity = tds_arr[tds_arr.length - 2].innerText.trim().replace(/[$]/, '');
- let pair_fdv = tds_arr[tds_arr.length - 1].innerText.trim().replace(/[$]/g, '');
- tdtexts = [token_idx, token_address, token_name, quote_token, pair_age, pair_buys, pair_sells, pair_makers, pair_liquidity, pair_fdv];
- res.push(tdtexts);
- }
- res.forEach((val, index, arr) => { arr[index] = val.join() + "\n" });
- let curTime = getCurrentTime();
- let urlpathname = window.location.pathname.slice(1).split('/').pop();
- urlpathname = urlpathname.replaceAll('-', "_");
- funcDownload(res.join(""), "sol_" + curTime + urlpathname + ".csv");
- }
- })();
|