Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // ==UserScript==
- // @name Kakao Saver
- // @namespace http://tampermonkey.net/
- // @version 2025-03-25
- // @description try to take over the world!
- // @author Shuraken
- // @match https://page.kakao.com/content/*/viewer/*
- // @icon https://www.google.com/s2/favicons?sz=64&domain=kakao.com
- // @grant none
- // ==/UserScript==
- (function() {
- 'use strict';
- async function delay(ms) {
- return new Promise(resolve => setTimeout(resolve, ms))
- }
- function get_paragraphs() {
- let root = [...document.querySelectorAll('div')].filter(x => x.shadowRoot)
- if (root.length === 0) return null
- let paragraphs = [...root[0].shadowRoot.firstChild.getElementsByTagName('p')]
- if (paragraphs.length === 0) return null
- return paragraphs
- }
- function get_book_chapter() {
- let path_arr = window.location.href.split('/')
- let chapter = path_arr.pop()
- path_arr.pop()
- let book = path_arr.pop()
- return [book, chapter]
- }
- function save_paragraphs(paragraphs) {
- let [book, chapter] = get_book_chapter()
- let storage = localStorage.getItem(`kakao_saver_${book}`) || '{}'
- storage = JSON.parse(storage)
- storage[chapter] = paragraphs.map(x => x.textContent).join('\n')
- localStorage.setItem(`kakao_saver_${book}`, JSON.stringify(storage))
- console.log(`saved ${paragraphs.length} paragraphs for ${chapter} chapter`)
- }
- function kk_print() {
- let [book, _] = get_book_chapter()
- let storage = localStorage.getItem(`kakao_saver_${book}`) || '{}'
- storage = JSON.parse(storage)
- let sorted_pairs = Object.entries(storage).sort(([, a], [, b]) => Number(b) - Number(a))
- if (sorted_pairs.length === 0) {
- console.log("nothing to print, no chapters")
- return
- }
- let chapters = []
- for (let [_, val] of sorted_pairs)
- chapters.push(val)
- console.log(chapters.join("\n\n"))
- console.log(`printed ${chapters.length} chapters`)
- console.log(`first started with ${chapters[0].substring(0, 10)}`)
- console.log(`last ended with ${chapters[chapters.length - 1].slice(-10, -1)}`)
- }
- window.kk_print = kk_print
- async function run() {
- let paragraphs;
- while(!paragraphs) {
- paragraphs = get_paragraphs()
- await delay(200)
- }
- save_paragraphs(paragraphs)
- }
- run()
- window.navigation.addEventListener("navigate", () => run())
- })();
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement