kone
sub_icon

소미소프트

템퍼몽키 편의성 스크립트 하나 공유합니다

2026-06-15 12:13:46
유틸
조회 18461 · 좋아요 9
1


본문의 RJ 코드를 인식해서 DL 링크로 날려주는 버튼 생성 + 옆에 제목과 대표 태그 3개를 미리 볼 수 있습니다
마우스를 위로 올리면 제품 페이지의 1번 이미지와 태그 전체 목록이 전부 표시됩니다
방주글 같은 건 목록이 너무 많아 하나씩 DL에서 확인하기 힘들어서 개인적으로 만들어 쓰던 건데 공유합니다
제목 로딩 못 하고 […]으로 표시되는 경우가 있는데 새로고침하면 정상적으로 로드됩니다

하단 스크립트 그대로 다 긁어서 템퍼몽키에 붙여넣고 쓰시면 됩니다

규정은 읽어봤는데 이런 거는 공유해도 되는지 관련 규정은 잘 몰라서 혹시 위배되는 행동이라면 삭제하도록 하겠습니다










// UserScript

// @name Kone RJ → DLsite Helper Pro

// @namespace https://kone.gg/

// @version 6.0

// @description RJ 코드에 DLsite 제목/태그/이미지 표시

// @match https://kone.gg/*

// @grant GM_xmlhttpRequest

// @connect dlsite.com

// @connect www.dlsite.com

// /UserScript

(function () {

'use strict';

const memoryCache = new Map();

const requestQueue = [];

const queued = new Set();

//--------------------------------------------------

// Hover Card

//--------------------------------------------------

const preview = document.createElement('div');

preview.style.cssText = `

position: fixed;

display: none;

z-index: 999999;

background: #222;

color: white;

border: 1px solid #666;

border-radius: 8px;

padding: 8px;

max-width: 320px;

box-shadow: 0 4px 12px rgba(0,0,0,.5);

pointer-events: none;

font-size: 13px;

line-height: 1.4;

`;

document.body.appendChild(preview);

function showPreview(x, y, data) {

preview.innerHTML = '';

if (data.image) {

const img = document.createElement('img');

img.src = data.image;

img.style.width = '280px';

img.style.display = 'block';

img.style.marginBottom = '8px';

preview.appendChild(img);

}

const title = document.createElement('div');

title.style.fontWeight = 'bold';

title.style.marginBottom = '6px';

title.textContent = data.title;

preview.appendChild(title);

if (data.genres && data.genres.length) {

const genreTitle = document.createElement('div');

genreTitle.textContent = '태그';

genreTitle.style.marginBottom = '4px';

genreTitle.style.color = '#aaa';

preview.appendChild(genreTitle);

const genreList = document.createElement('div');

genreList.textContent =

data.genres.join(', ');

preview.appendChild(genreList);

}

preview.style.left = (x + 20) + 'px';

preview.style.top = (y + 20) + 'px';

preview.style.display = 'block';

}

function hidePreview() {

preview.style.display = 'none';

}

//--------------------------------------------------

// Cache

//--------------------------------------------------

function getCache(rjCode) {

if (memoryCache.has(rjCode)) {

return memoryCache.get(rjCode);

}

const saved =

localStorage.getItem(

'dlsite_' + rjCode

);

if (!saved) {

return null;

}

try {

const parsed =

JSON.parse(saved);

memoryCache.set(

rjCode,

parsed

);

return parsed;

} catch {

return null;

}

}

function setCache(rjCode, data) {

memoryCache.set(

rjCode,

data

);

localStorage.setItem(

'dlsite_' + rjCode,

JSON.stringify(data)

);

}

//--------------------------------------------------

// DLsite Fetch

//--------------------------------------------------

function fetchWork(rjCode, callback) {

const cached =

getCache(rjCode);

if (cached) {

callback(cached);

return;

}

GM_xmlhttpRequest({

method: 'GET',

url:

https://www.dlsite.com/maniax/work/=/product_id/${rjCode}.html,

onload(res) {

let title =

'제목 없음';

let image =

'';

let genres =

[];

try {

const doc =

new DOMParser()

.parseFromString(

res.responseText,

'text/html'

);

const workName =

doc.querySelector(

'#work_name'

);

if (workName) {

title =

workName.textContent.trim();

}

const ogImage =

doc.querySelector(

'meta[property="og:image"]'

);

if (ogImage) {

image =

ogImage.content;

}

genres =

[...doc.querySelectorAll('a[href*="/genre/"]')]

.map(a =>

a.textContent.trim()

)

.filter(Boolean);

}

catch (e) {

console.error(e);

}

const data = {

title,

image,

genres

};

setCache(

rjCode,

data

);

callback(data);

}

});

}

//--------------------------------------------------

// Queue

//--------------------------------------------------

setInterval(() => {

const item =

requestQueue.shift();

if (!item) {

return;

}

fetchWork(

item.rjCode,

item.callback

);

}, 500);

//--------------------------------------------------

// Process

//--------------------------------------------------

function processParagraph(p) {

if (

p.dataset.rjProcessed === '1'

) {

return;

}

const text =

p.textContent.trim();

const match =

text.match(/^(RJ\d+)/);

if (!match) {

return;

}

const rjCode =

match[1];

const link =

document.createElement('a');

link.href =

https://www.dlsite.com/maniax/work/=/product_id/${rjCode}.html;

link.target =

'_blank';

link.rel =

'noopener noreferrer';

link.textContent =

' 🔗';

link.style.marginLeft =

'4px';

link.style.textDecoration =

'none';

p.appendChild(link);

const titleSpan =

document.createElement('span');

titleSpan.textContent =

' [...]';

titleSpan.style.marginLeft =

'4px';

p.appendChild(titleSpan);

function applyData(data) {

let shortTitle =

data.title;

if (

shortTitle.length > 35

) {

shortTitle =

shortTitle.substring(

0,

35

) + '...';

}

let genreText = '';

if (

data.genres &&

data.genres.length

) {

genreText =

' [' +

data.genres

.slice(0, 3)

.join(', ') +

']';

}

titleSpan.textContent =

' ' +

shortTitle +

genreText;

titleSpan.style.color =

'#888';

titleSpan.style.cursor =

'pointer';

titleSpan.onclick =

() => {

window.open(

link.href,

'_blank'

);

};

function enter(e) {

showPreview(

e.clientX,

e.clientY,

data

);

}

function move(e) {

preview.style.left =

(e.clientX + 20) + 'px';

preview.style.top =

(e.clientY + 20) + 'px';

}

link.addEventListener(

'mouseenter',

enter

);

titleSpan.addEventListener(

'mouseenter',

enter

);

link.addEventListener(

'mousemove',

move

);

titleSpan.addEventListener(

'mousemove',

move

);

link.addEventListener(

'mouseleave',

hidePreview

);

titleSpan.addEventListener(

'mouseleave',

hidePreview

);

}

const cached =

getCache(rjCode);

if (cached) {

applyData(cached);

} else {

if (

!queued.has(rjCode)

) {

queued.add(rjCode);

requestQueue.push({

rjCode,

callback(data) {

applyData(

data

);

}

});

}

}

p.dataset.rjProcessed =

'1';

}

//--------------------------------------------------

// Scan

//--------------------------------------------------

function scan() {

document

.querySelectorAll(

'.tiptap.ProseMirror p'

)

.forEach(

processParagraph

);

}

scan();

const observer =

new MutationObserver(

scan

);

observer.observe(

document.body,

{

childList: true,

subtree: true

}

);

})();

9
댓글 3개
댓글 쓰기
탭 => 유틸 로 해야할거임 아마도
06.15
수정했습니다
내가 진짜 멍청한건지는 몰라도 그대로 복붙했는데 유효하지 않는 유저 스크립트 입니다! 뜨면서 안되는데 일단 난 크롬 브라우저고 스크립트를 전체 다 복사해서 새 유저 스크립트 만들어서 거기다가 첫줄 부터 다 붙여넣기 했는데 안됨 그리고 스크립트 줄마다 한줄씩 띄어 써진걸로 나옴...
비밀의 야구권 공략 있나요..?
질문
ddaljang
06.15 5425 0
[복구요청] 회복술사의 재시작 서비스씬 모음
요청
gengarpika
06.15 7333 0
Yd 폭음폭식 미스
동인
SK
06.15 158732 186
『CIRCLEMATE 서클 메이트』 진척②
정보
라임무르
06.15 35623 21
창성의 사피리아도 조만간 나올듯
정보
ㅇㅇ
06.15 33261 22
복구요청)마술학교의 낙제 연금술사
요청
srw2020
06.15 14268 1
영웅전희www 세이브파일 위치 좀 알려주실수 있나요
질문
woojooo
06.15 6095 1
3일 뒤에 망고파티 겜 하나 나오네
일반
밀로아
06.15 5295 0
천박한 게임 추천해주세요
질문
gerbera0511
06.15 5928 1
(NTR/임신) 『카리다』기사 1~3
정보
라임무르
06.15 42113 27
하려고 한 게임 노잼이라 피아 다시 돌아다니다
일반
ENE
06.15 7588 2
[복구요청]RJ01348926 Fallen / Brand New World 엔딩 세이브
요청
tndld
06.15 7873 3
악전고투 끝에 드뎌 성공....
일반
괴물나방
06.15 6098 2
마술학교 낙제 연금술사 변신의돌 어디서 찾나여??
질문
sserw
06.15 5553 0
[버전업] RJ01615603 메자마시 뉴스 시뮬레이터 ~무표정 아나운서의 '첫 방송' 생방송~ v1.01
번역
r4gsdrg
06.15 320161 145
(NTR/임신) 신규RPG「카리다」소개
정보
라임무르
06.15 43032 37
[미번/번역요청]역시 손녀딸은 흑갸루에 한하다!
동인
아돌
06.15 115620 20
[구매보급]마조 엘프 오나홀이 택배로 배송되는 세계. ~당신만의 신부 겸 성처리 오나홀 엘프가 집에 도착해 즉시 밀착 섹스 ~
소리
이름뭐하지
06.15 57165 53
뻘소리 - 사로잡힌 리리 일단 다 깼는데
일반
카라코람
06.15 7266 0
[요청복구] RJ228027 1Room -가출소녀- v1.2.3
복구
이상성애
06.15 155327 49
척영 맛보기로 살짝 들어갔는데 바로 버그뜨네
일반
jiska655
06.15 7072 0
안돼! 동거라이프 DLC 스야스야 에치 정보
정보
라임무르
06.15 39732 34
[복구요청] まだな 작가 모음
요청
양파빵
06.15 10273 2
[AI, 미검수, AS가능] RJ01600694 Crynaria Tears In The Abyss 1.0.6
번역
iwwdi
06.15 319475 194
[구매보급] 「진심의」젖꼭지 오르가즘~젖꼭지 농담이 기분 좋고 경련 이키가 멈추지 않게 된다~【사정 없는 상급자용】
소리
rocoa
06.15 56497 67
[고어] 釈我-SYAKUGA-ver1.40 (RJ110684)
미번
icepick
06.15 86267 47
topu 2개 +1개 더
영상
haskall
06.15 132639 175
[복구요청] RJ01271506 포레스티아 1.41 + 음성 DLC
요청
Pooi
06.15 8393 13
여주랑 전투하는 겜 추천 부탁드립니다
질문
스피넬
06.15 7153 0
AI 망가 번역기 잠깐 딸깍해본 후기 - 식질이 문제임
후기 및 공략
sims9876
06.15 16426 2
1 6364656667 100