您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Does things...
- // ==UserScript==
- // @name HIT Database Backup
- // @namespace https://github.com/Kadauchi
- // @version 1.0.2
- // @description Does things...
- // @author Kadauchi
- // @icon http://i.imgur.com/oGRQwPN.png
- // @include https://www.mturk.com/hitdb
- // ==/UserScript==
- document.body.innerHTML = `creating hit_database.json.... please wait`;
- let hitdb;
- const request = window.indexedDB.open(`HITDB`);
- request.onsuccess = (event) => {
- hitdb = event.target.result;
- generateFile();
- };
- request.onupgradeneeded = (event) => {
- document.body.innerHTML = `no hit database found`;
- };
- request.onerror = (event) => {
- document.body.innerHTML = `error: something went wrong`;
- };
- async function generateFile() {
- const data = JSON.stringify({
- HIT: await getObjectStore(`HIT`),
- STATS: await getObjectStore(`STATS`),
- NOTES: await getObjectStore(`NOTES`)
- });
- document.body.innerHTML = `creating hit_database.json.... this may take awhile`;
- const exportFile = document.createElement(`a`);
- document.body.appendChild(exportFile);
- exportFile.href = window.URL.createObjectURL(new Blob([data], { type: `application/json` }));
- exportFile.download = `hit_database.json`;
- exportFile.click();
- document.body.innerHTML = `hit_database.json.... downloaded`;
- }
- function getObjectStore(name) {
- return new Promise((resolve) => {
- try {
- const transaction = hitdb.transaction([name], `readonly`);
- const objectStore = transaction.objectStore(name);
- let cursorCount = 0, cursorAccumulator = [];
- objectStore.openCursor().onsuccess = (event) => {
- document.body.innerHTML = `processing hit database.... ${name} ${++ cursorCount}`;
- const cursor = event.target.result;
- if (cursor) {
- cursorAccumulator.push(cursor.value);
- cursor.continue();
- }
- else {
- resolve(cursorAccumulator);
- }
- };
- }
- catch (error) {
- resolve();
- }
- });
- }