您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Downloading the queries csv export for free subscription users
当前为
- // ==UserScript==
- // @name Dune Csv Export
- // @namespace http://tampermonkey.net/
- // @version 0.1.1
- // @description Downloading the queries csv export for free subscription users
- // @author Rv
- // @match https://dune.com/queries*
- // @icon https://www.google.com/s2/favicons?sz=64&domain=dune.com
- // @grant none
- // @require https://ajax.googleapis.com/ajax/libs/jquery/3.4.0/jquery.min.js
- // ==/UserScript==
- // Def Icon:
- function getElementByXpath(path){
- return document.evaluate(path, document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue;
- }
- var intervalId;
- function getHeaders(table){
- const headers = [];
- $.each($(table).find("thead").find("tr").find("th"), function (key, val2) {
- headers[key] = $(val2).find("div").text();
- });
- return headers;
- }
- function getValues(table){
- const values = []
- $.each($(table).find("tbody").find("tr"), function (key, val) {
- const row = [];
- $.each($(val).find("td"), function (tkey, tval) {
- row[tkey] = $(tval).find("div").first().text();
- });
- values[key] = row;
- });
- return values;
- }
- function collectLoop(last_values=[]){
- let nextButton = getElementByXpath('//*[@id="results"]/div/div[2]/div/div[2]/ul/li[6]/button');
- let table = getElementByXpath('//*[@id="results"]/div/div[2]/div/div[1]/table');
- const values = getValues(table);
- const newValues = last_values.concat(values);
- if (!$(nextButton).is(":disabled") && nextButton != null){
- $(nextButton).trigger("click");
- setTimeout(()=>{
- return collectLoop(newValues);
- }, 20)
- } else {
- const headers = getHeaders(table);
- download_csv(headers, newValues);
- }
- }
- function download_csv(headers, rows) {
- let csvHeaders = headers.join(",") + "\n";
- let csvRows = rows.map(row => row.join(",")).join("\n");
- var downloadBtn = document.createElement("a");
- downloadBtn.href = "data:text/csv;charset=utf-8,"+encodeURI(csvHeaders+csvRows);
- downloadBtn.target = "_blank";
- let url = window.location.href;
- downloadBtn.download = "query_"+url.split("queries/")[1].replace("/", "_")+".csv";
- downloadBtn.click();
- }
- function collectCsv() {
- let nextButton = getElementByXpath('//*[@id="results"]/div/div[2]/div/div[2]/ul/li[6]/button');
- if (nextButton == null){
- console.log("Butt not exists");
- collectLoop();
- } else {
- // go to first
- let firstPageBtn = getElementByXpath('//*[@id="results"]/div/div[2]/div/div[2]/ul/li[3]/button');
- if (firstPageBtn != null && !$(firstPageBtn).is(":disabled")){
- $(firstPageBtn).trigger("click");
- setTimeout(()=>{
- collectLoop();
- }, 20)
- } else {
- collectLoop();
- }
- }
- }
- function changeCsvButton(){
- console.log("Running Dune Script");
- // let csvButton = getElementByXpath('//*[@id="results"]/div/div[1]/div[1]/div/div/button');
- let csvButton = getElementByXpath('//*[@id="results"]/div/div[1]/div[1]/div/button');
- if (csvButton != null && $(csvButton).is(":disabled")){
- csvButton.disabled = false;
- csvButton.onclick = collectCsv;
- clearInterval(intervalId);
- }
- }
- (function() {
- 'use strict';
- $(document).ready ( function(){
- intervalId = setInterval(function(){
- changeCsvButton();
- }, 5000);
- });
- })();