您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
小説家になろうのトップページをマシにするツールです。
// ==UserScript== // @name トップページをマシにするためのツール // @namespace http://tampermonkey.net/ // @version 2024-05-19 // @description 小説家になろうのトップページをマシにするツールです。 // @author me // @match https://syosetu.com/user/top/ // @icon https://www.google.com/s2/favicons?sz=64&domain=syosetu.com // @grant none // @license MIT // ==/UserScript== (function() { // 不要なレイアウトを削除 document.querySelectorAll('.c-up-headline').forEach(x => {x.style.display = 'none';}); document.querySelectorAll('.p-up-home-news__banner').forEach(x => {x.style.display = 'none';}); document.querySelector('.l-main').style.width = '790px'; document.querySelector('.l-sidebar').style.width = '240px'; document.querySelector('.p-up-home-news__info-more').style.display = 'flex'; document.querySelector('.p-up-home-news__info-more a').style.margin = '0 0 0 auto'; // メニューを追加 let originalMenu = document.createElement('div'); let createNewNovel = document.createElement('a'); createNewNovel.textContent = '作品を新規作成'; createNewNovel.setAttribute('href', 'https://syosetu.com/usernovel/input/'); createNewNovel.style.cssText = 'padding: 0.5rem 2rem; margin-left: 2rem; border: solid 2px #8d93c8; color: #333; border-radius: 1rem; letter-spacing: 0.1rem'; originalMenu.appendChild(createNewNovel); document.querySelector('.p-up-home-news__info-more').prepend(originalMenu); // 「あなたの活動」の表示内容を改修 let myContents = document.createElement('div'); myContents.classList.add('myContents'); let listElement1 = document.createElement('div'); // 投稿済み let listElement2 = document.createElement('div'); // 未投稿 document.querySelectorAll('.c-up-panel.js-tab-b').forEach(x => { x.remove(); }); // 作品の作成・編集ページ情報をロード // 投稿済の一覧を取得 fetch(`https://syosetu.com/usernovel/list/`) .then(data => data.text()).then(html => {listElement1.innerHTML = html;}) .then(() => { // 取得した情報を追加 myContents.appendChild(listElement1.querySelector('.c-up-panel__body')); }) .then(() => { // 未投稿の一覧を取得 fetch(`https://syosetu.com/usernovel/draftlist/`) .then(data => data.text()).then(html => {listElement2.innerHTML = html;}) .then(() => { // 取得した情報を追加 listElement2.querySelector('.c-up-panel__body').style.cssText = 'background-color: #fef4f4'; myContents.prepend(listElement2.querySelector('.c-up-panel__body')); document.querySelector('.l-main').appendChild(myContents); // 各話の情報を取得 document.querySelectorAll('.myContents .c-up-panel__list-item').forEach(xx => { xx.style.display = 'flex'; xx.querySelector('.c-up-novel-item__date').remove(); xx.querySelector('.c-up-novel-item__data').remove(); // 未投稿フラグ let isDraft = !!xx.querySelector('.c-up-label--novel-draft'); // R18フラグ let isR18 = !!xx.querySelector('.c-up-novel-item__data-item--r18'); // 短編フラグ let isShort = !!xx.querySelector('.c-up-label--novel-short'); // Nコード取得 let ncode = xx.querySelector('.c-up-novel-item__title a').getAttribute('href').match(/ncode\/(\d+)/)[1]; // 編集/追加ボタン let buttonFlexBox = document.createElement('div'); buttonFlexBox.style.cssText = 'display: flex; gap: 0.1rem; margin-left: auto; white-space: nowrap;'; let editButton = document.createElement('a'); editButton.setAttribute('href', `https://syosetu.com/usernovelmanage/top/ncode/${ncode}`); editButton.classList.add('c-button'); editButton.classList.add('c-button--primary'); editButton.classList.add('c-button--sm'); editButton.textContent = '編集'; editButton.style.cssText = 'height: 2rem;'; buttonFlexBox.appendChild(editButton); if (!isShort) { // ※短編の場合「追加」不可 let addButton = document.createElement('a'); addButton.setAttribute('href', `https://syosetu.com/draftepisode/input/ncode/${ncode}`); addButton.classList.add('c-button'); addButton.classList.add('c-button--useradd'); addButton.classList.add('c-button--sm'); addButton.textContent = '追加'; addButton.style.cssText = 'height: 2rem;'; buttonFlexBox.prepend(addButton); } xx.appendChild(buttonFlexBox); }); }); }); })();