// ==UserScript==
// @name 漫画検索
// @namespace http://tampermonkey.net/
// @version 1.0
// @description Execute UserScript
// @author Your Name
// @match https://*
// @grant none
// @license MIT
// ==/UserScript==
(function() {
'use strict';
document.addEventListener('keydown', (e) => {
if (e.key === 'l') {
javascript:(function(){ const config = { "genres": [ { "name": "ヒトミラ作者", "tags": [ { "name": "作者有効化", "url": "artist/", "imageUrl": "undefined", "priority": 1, "autoSelect": true } ], "subGenres": [ { "name": "ふたなり", "tags": [ { "name": "ひょうが。", "url": "hyouga.", "imageUrl": "https://img.momoniji.com/wp-content/uploads/b/55/5526/552669/c001.webp", "priority": 4, "autoSelect": false } ], "subGenres": [] }, { "name": "TS", "tags": [ { "name": "柚木", "url": "yuzuki", "imageUrl": "https://img.honto.jp/series/1/0/240/C-MBJ-28246-3-484613X_1.jpg", "priority": 4, "autoSelect": false }, { "name": "安治ぽん太郎", "url": "aji%20pontarou", "imageUrl": "https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcQgZ21t8nk5iiZhdqvxkNQmA0Yy7AbsieWDYwdNGAF7sNDeYgxyvOwqrIn1xbN6UGrw9TU&usqp=CAU", "priority": 4, "autoSelect": false }, { "name": "べってぃ", "url": "betty", "imageUrl": "https://img.dlsite.jp/modpub/images2/work/doujin/RJ01369000/RJ01368004_img_main.jpg", "priority": 4, "autoSelect": false }, { "name": "あむぁい(タグx)", "url": "group/amuai%20okashi%20seisakusho", "imageUrl": "https://doujin-assets.dmm.co.jp/digital/comic/d_539881/d_539881pl.jpg", "priority": 4, "autoSelect": false }, { "name": "いわした ", "url": "iwashita", "imageUrl": "https://comic.iowl.jp/_next/image?url=https%3A%2F%2Fcomic-image.iowl.jp%2Fimages%2Fthumbnail%2F2258%2F225830%2F225830_large.jpg&w=384&q=75", "priority": 4, "autoSelect": false }, { "name": "れいとうみかん ", "url": "reitou%20mikan", "imageUrl": "https://img.papy.co.jp/lc/sc/item/cover/9-2711160-c400.jpg", "priority": 4, "autoSelect": false }, { "name": "ウェルト", "url": "welt", "imageUrl": "https://pbs.twimg.com/media/GE28a6faYAAbPRX?format=jpg&name=4096x4096", "priority": 4, "autoSelect": false }, { "name": "やすみみらきち", "url": "yasumi%20mirakichi", "imageUrl": "https://t3.nhentai.website/galleries/2674229/cover.jpg", "priority": 4, "autoSelect": false } ], "subGenres": [] }, { "name": "男の娘", "tags": [ { "name": "佐々木武蔵", "url": "sasaki%20musashi", "imageUrl": "https://cdn.imagedeliveries.com/3037979/thumbnails/cover.jpg", "priority": 4, "autoSelect": false } ], "subGenres": [] }, { "name": "魔法少女", "tags": [ { "name": "山梨ユウヤ", "url": "yamanashi%20yuuya", "imageUrl": "https://melonbooks.akamaized.net/user_data/packages/resize_image.php?image=232000033025.jpg&c=1&aa=0", "priority": 4, "autoSelect": false } ], "subGenres": [] }, { "name": "ロリ", "tags": [ { "name": "古山 造", "url": "furuyama%20tsukuru", "imageUrl": "https://aicomic.org/attachment/comic/2970336-98bab124b3/2970336-98bab124b3.jpg", "priority": 4, "autoSelect": false } ], "subGenres": [] }, { "name": "潮吹き", "tags": [ { "name": "ぽちたろ", "url": "pochitaro", "imageUrl": "https://img.dlsite.jp/modpub/images2/work/doujin/RJ01074000/RJ01073400_img_main.jpg", "priority": 4, "autoSelect": false } ], "subGenres": [] }, { "name": "性教育", "tags": [ { "name": "グリエルモ", "url": "guglielmo", "imageUrl": "https://image.yodobashi.com/product/100/000/086/600/704/437/100000086600704437_10203.jpg", "priority": 4, "autoSelect": false } ], "subGenres": [] } ] }, { "name": "ヒトミラタグ", "tags": [ { "name": "タグ有効化", "url": "tag/", "imageUrl": "undefined", "priority": 1, "autoSelect": true }, { "name": "ふたなり", "url": "female:futanari", "imageUrl": "undefined", "priority": 3, "autoSelect": false }, { "name": "TS", "url": "male:gender%20change", "imageUrl": "undefined", "priority": 3, "autoSelect": false }, { "name": "男の娘", "url": "female%3Ashemale", "imageUrl": "undefined", "priority": 3, "autoSelect": false }, { "name": "魔法少女", "url": "female%3Amagical%20girl", "imageUrl": "undefined", "priority": 3, "autoSelect": false }, { "name": "ロリ", "url": "female%3Aloli", "imageUrl": "undefined", "priority": 3, "autoSelect": false }, { "name": "潮吹き", "url": "female%3Asquirting", "imageUrl": "undefined", "priority": 3, "autoSelect": false }, { "name": "週間人気", "url": "popular/week/", "imageUrl": "undefined", "priority": 2, "autoSelect": false }, { "name": "月間人気", "url": "popular/month/", "imageUrl": "undefined", "priority": 2, "autoSelect": false }, { "name": "年間人気", "url": "popular/year/", "imageUrl": "undefined", "priority": 2, "autoSelect": false } ], "subGenres": [] }, { "name": "モモンガ作者", "tags": [], "subGenres": [ { "name": "ふたなり", "tags": [ { "name": "ひょうが。", "url": "cartoonist/ひょうが。/", "imageUrl": "https://img.momoniji.com/wp-content/uploads/b/55/5526/552669/c001.webp", "priority": 1, "autoSelect": false } ], "subGenres": [] }, { "name": "TS", "tags": [ { "name": "柚木", "url": "cartoonist/柚木/", "imageUrl": "https://img.honto.jp/series/1/0/240/C-MBJ-28246-3-484613X_1.jpg", "priority": 1, "autoSelect": false }, { "name": "安治ぽん太郎", "url": "cartoonist/安治ぽん太郎/", "imageUrl": "https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcQgZ21t8nk5iiZhdqvxkNQmA0Yy7AbsieWDYwdNGAF7sNDeYgxyvOwqrIn1xbN6UGrw9TU&usqp=CAU", "priority": 1, "autoSelect": false }, { "name": "べってぃ", "url": "group/あむぁいおかし製作所/", "imageUrl": "https://img.dlsite.jp/modpub/images2/work/doujin/RJ01369000/RJ01368004_img_main.jpg", "priority": 1, "autoSelect": false }, { "name": "あむぁい", "url": "group/あむぁいおかし製作所/", "imageUrl": "https://doujin-assets.dmm.co.jp/digital/comic/d_539881/d_539881pl.jpg", "priority": 1, "autoSelect": false }, { "name": "いわした", "url": "cartoonist/いわした/", "imageUrl": "https://comic.iowl.jp/_next/image?url=https%3A%2F%2Fcomic-image.iowl.jp%2Fimages%2Fthumbnail%2F2258%2F225830%2F225830_large.jpg&w=384&q=75", "priority": 1, "autoSelect": false }, { "name": "れいとうみかん", "url": "cartoonist/れいとうみかん/", "imageUrl": "https://img.papy.co.jp/lc/sc/item/cover/9-2711160-c400.jpg", "priority": 1, "autoSelect": false }, { "name": "ウェルト", "url": "cartoonist/ウェルト/", "imageUrl": "https://pbs.twimg.com/media/GE28a6faYAAbPRX?format=jpg&name=4096x4096", "priority": 1, "autoSelect": false }, { "name": "やすみみらきち", "url": "cartoonist/やすみみらきち/", "imageUrl": "https://t3.nhentai.website/galleries/2674229/cover.jpg", "priority": 1, "autoSelect": false }, { "name": "はちたろう", "url": "cartoonist/はちたろう/", "imageUrl": "https://i4.kurocore.com/i/lg/20241110100446/124155619-0.jpg", "priority": 1, "autoSelect": false } ], "subGenres": [] }, { "name": "男の娘", "tags": [ { "name": "佐々木武蔵", "url": "cartoonist/佐々木武蔵/", "imageUrl": "https://cdn.imagedeliveries.com/3037979/thumbnails/cover.jpg", "priority": 1, "autoSelect": false } ], "subGenres": [] }, { "name": "魔法少女", "tags": [ { "name": "山梨ユウヤ", "url": "cartoonist/山梨ユウヤ/", "imageUrl": "https://melonbooks.akamaized.net/user_data/packages/resize_image.php?image=232000033025.jpg&c=1&aa=0", "priority": 1, "autoSelect": false } ], "subGenres": [] }, { "name": "潮吹き", "tags": [ { "name": "ぽちたろ", "url": "cartoonist/ぽちたろ/", "imageUrl": "https://img.dlsite.jp/modpub/images2/work/doujin/RJ01074000/RJ01073400_img_main.jpg", "priority": 1, "autoSelect": false } ], "subGenres": [] }, { "name": "性教育", "tags": [ { "name": "グリエルモ", "url": "cartoonist/ぐりえるも/", "imageUrl": "https://image.yodobashi.com/product/100/000/086/600/704/437/100000086600704437_10203.jpg", "priority": 1, "autoSelect": false } ], "subGenres": [] } ] }, { "name": "モモンガタグ", "tags": [ { "name": "タグ有効化", "url": "tag/", "imageUrl": "undefined", "priority": 1, "autoSelect": true }, { "name": "ふたなり", "url": "futanari/", "imageUrl": "undefined", "priority": 2, "autoSelect": false }, { "name": "TS", "url": "gender-change/", "imageUrl": "undefined", "priority": 2, "autoSelect": false }, { "name": "男の娘", "url": "shemale/", "imageUrl": "undefined", "priority": 2, "autoSelect": false }, { "name": "魔法少女", "url": "magical-girl/", "imageUrl": "undefined", "priority": 2, "autoSelect": false } ], "subGenres": [] } ], "searchButtons": [ { "name": "ヒトミラ検索", "prefix": "https://hitomi.la/", "suffix": "-all.html" }, { "name": "モモンガ検索", "prefix": "https://momon-ga.com/", "suffix": "" } ]}; const style = document.createElement('style'); style.textContent = ` .bookmarklet-container { position: fixed; top: 0px; left: 0px; background: white; border: 1px solid #ccc; padding: 10px; z-index: 9999; box-shadow: 0 2px 10px rgba(0,0,0,0.1); transform: scale(1.5); transform-origin: top left; } .genre-section { margin-bottom: 10px; } .toggle { cursor: pointer; user-select: none; } .hidden { display: none; } .tag { display: flex; align-items: center; margin: 2px 0; } .tag img { width: 20px; height: 20px; margin-right: 5px; } .sub-genre { margin-left: 20px; border-left: 2px solid #eee; padding-left: 10px; } button { margin: 2px; } `; document.head.appendChild(style); const container = document.createElement('div'); container.className = 'bookmarklet-container'; const closeButton = document.createElement('button'); closeButton.textContent = '☒'; closeButton.onclick = () => container.remove(); container.appendChild(closeButton); function createGenreSection(genre, isSub = false) { const section = document.createElement('div'); section.className = `genre-section ${isSub ? 'sub-genre' : ''}`; const toggle = document.createElement('div'); toggle.className = 'toggle'; toggle.textContent = `▶ ${genre.name}`; const content = document.createElement('div'); content.className = 'hidden'; toggle.addEventListener('click', () => { content.classList.toggle('hidden'); toggle.textContent = `${content.classList.contains('hidden') ? '▶' : '▼'} ${genre.name}`; if (!content.classList.contains('hidden')) { genre.tags.forEach(t => { if (t.autoSelect) { const checkbox = content.querySelector(`input[data-url="${t.url}"]`); if (checkbox) checkbox.checked = true; } }); } else { const checkboxes = content.querySelectorAll('input[type="checkbox"]'); checkboxes.forEach(checkbox => checkbox.checked = false); } }); genre.tags.forEach(t => { const tag = document.createElement('label'); tag.className = 'tag'; tag.innerHTML = ` <input type="checkbox" data-url="${t.url}" data-priority="${t.priority}"> ${t.imageUrl ? `<img src="${t.imageUrl}" alt="${t.name}">` : ''} <span>${t.name}</span> `; content.appendChild(tag); }); genre.subGenres.forEach(sub => { content.appendChild(createGenreSection(sub, true)); }); section.appendChild(toggle); section.appendChild(content); return section; } config.genres.forEach(genre => { container.appendChild(createGenreSection(genre)); }); config.searchButtons.forEach(btn => { const button = document.createElement('button'); button.textContent = btn.name; button.onclick = () => { const visibleTags = Array.from(container.querySelectorAll('.genre-section:not(.hidden) .tag input[type=checkbox]')); const selected = visibleTags .filter(el => el.checked) .sort((a,b) => a.dataset.priority - b.dataset.priority) .map(el => el.dataset.url); const url = btn.prefix + selected.join('') + (btn.suffix || ''); window.open(url); }; container.appendChild(button); }); document.body.appendChild(container); })();
}
});
})();