// ==UserScript== // @name Pixiv 辅助翻译 // @namespace https://greasyfork.org/users/159546 // @version 1.1.1 // @description 现已支持标签TAG、作品详情页对标题和说明,以及评论区翻译! // @author LEORChn // @include *://www.pixiv.net/* // @run-at document-start // @grant GM_xmlhttpRequest // @downloadURL none // ==/UserScript== var tag_trans=[ '漫画','漫画', 'うごイラ','动图', '厚塗り','多层上色', 'UTAU獣人','兽人虚拟歌手', '狼音アロ','狼音阿罗', 'ケモノ','野兽', 'wolf','狼', 'kemono','毛怪', 'furry','兽人', '獣人','兽人', // 这个是日文的 '獸人','兽人', // 这个是繁体的 'オスケモ','雄兽', 'デブケモ','胖兽', 'ケモホモ','兽人同性向', 'ケモ交尾','兽性', '東京放課後サモナーズ','东京放课后召唤师', '放サモ','东放', 'housamo','东放', 'モリタカ','犬塚戍孝', '犬塚モリタカ','犬塚戍孝', 'ホロケウカムイ','狼神神威', //ID为 20880639 的作者似乎打错了这个标签所以替换不到 'テムジン','铁木真', 'ガルム','加姆', 'ノーマッド(放サモ)','诺曼德(东放)', // 东京放课后里的虎兽人所用的化名 '主5','5号主人公(东放)', 'ふんどし','兜裆布', '褌','兜裆布', 'ラバースーツ','橡胶紧身衣', '腹筋','腹肌', 'ㄋㄟㄋㄟ','胸部', '金的','捣蛋', '猿轡','封口', '拘束','捆绑Play' ]; (function(){ recheck(); })(); function recheck(){ init(); if(load())return; setTimeout(recheck,100); } function init(){ // call once when start loading page if(ft('body').length==0) return; main_daemon(); //inited=true; // } function load(){ // call once when loaded page if(document.readyState.toLowerCase()=='complete'){ main_daemon();// write code here return true; } } var daemonLauncher; function main_daemon(){ if(daemonLauncher) return; daemonLauncher = setInterval(main_do, 3000); main_do(); } function main_do(){ tagTranslate_illust(); // 个人空间的作品列表页面的标签 tagTranslate_illust_single(); // 作品页面的标签 tagTranslate_bookmark(); // 个人空间的收藏列表页面的标签 tagTranslate_addBookmark(); // 添加收藏时的可选择标签 tagTranslate_member_tag_all(); detailTranslate_illust(); trans_comment_button(); } // ========== 作品页面(单图预览和评论区) 以下 function tagTranslate_illust_single(){ if(location.pathname != '/member_illust.php')return; var tags=$$('figcaption footer>ul>li'); if(tags.length==0)return; for(var li=0;li1) c[1].remove(); } } } // ----- 作品页标题和说明 以下 var ID_TRANSLATION_SOURCE='leorchn_icon_google_translate', ICON_TRANSLATION_SOURCE='https://translate.google.cn/favicon.ico', ID_TRANSLATED_TITLE = 'leorchn_translated_title', ID_TRANSLATED_DESC = 'leorchn_translated_desc', block_detail_root; function detailTranslate_illust(){ if(location.pathname != '/member_illust.php')return; if(!location.href.includes('mode=medium'))return; var detail_block_post_time = $('figure>figcaption div[title]'); if(!detail_block_post_time) return; block_detail_root = detail_block_post_time.parentElement; if(!fv(ID_TRANSLATION_SOURCE)){ var img=ct('img'); img.id=ID_TRANSLATION_SOURCE; img.src=ICON_TRANSLATION_SOURCE; img.style.cssText='width:24px; float:right'; block_detail_root.insertBefore(img, block_detail_root.children[0]); } trans_title(); if(!fv(ID_TRANSLATED_DESC))trans_desc(); } function trans_title(){ // 作品标题 var p=$('figcaption div>h1'), d=fv(ID_TRANSLATED_TITLE); if(!p) return; if(d){ if(d.title == p.innerText) return; d.parentElement.remove(); try{ fv(ID_TRANSLATED_DESC).remove(); }catch(e){} d = undefined; } if(!d){ // 因为标题块没有双层嵌套,二次读取会导致缓存文字块被误翻译 var q = ct('h1'); d = trans_create_block(''); q.className = p.className; d.id=ID_TRANSLATED_TITLE; d.title=p.innerText; q.appendChild(d); p.parentElement.insertBefore(q, p.nextElementSibling); } googleTranslateProxy(p.innerText, fv(ID_TRANSLATED_TITLE)); } function trans_desc(){ // 作品描述 var p=$('figcaption div>h1+div>div'); if(!p) return; if(!fv(ID_TRANSLATED_DESC)){ var d = trans_create_block('') d.id=ID_TRANSLATED_DESC; p.parentElement.appendChild(d); } googleTranslateProxy(p.innerText, fv(ID_TRANSLATED_DESC)); } // ----- 评论区翻译按钮 以下 var ID_COMMENT_TRANSLATE_TRIGGER = 'leorchn_comment_translate_trigger', ID_COMMENT_TRANSLATION_BLOCK = 'leorchn_comment_translation_block'; function trans_comment_button(){ var p=$$('main section li div>span+span+span'); for(var i=0;inav+div>div>div>ul>li'); if(tags.length==0)return; for(var li=0;li(.*)<\\/div>