Greasy Fork

Greasy Fork is available in English.

3DM 帖子列表内容提取

提取帖子列表内容到剪切板

目前为 2024-05-06 提交的版本,查看 最新版本

// ==UserScript==
// @name         3DM 帖子列表内容提取
// @namespace    http://tampermonkey.net/
// @version      0.2
// @description  提取帖子列表内容到剪切板
// @require      https://cdn.bootcdn.net/ajax/libs/jquery/3.6.0/jquery.slim.min.js
// @author       feirnova
// @license MIT
// @match        *://bbs.3dmgame.com/forum-*
// @match        *://bbs.3dmgame.com/forum.php?mod=guide*
// @icon         data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAC0klEQVR4nJ1TS0hUYRT+/nuvd2Z0nMbRrpPpTJozoZliQmEFFkT0QlwIRWlUi4jIaFGLqE0ELlsEElGrGCKimhaVVmhW9CBSy5ohk/I1pvO66R3nOt7X30IxoyTog8OBc/i+83EOB1gEoRP8Yq3fQP5WvHxqW7kkKfkmXgx+D3PCmjLLuPYmNXyotevfAud9XhQEHZtLKpe3uAozS+12MyRJRTSc7O7tCp9uOPe0Y1GBGAUeXdiyc8vuIr8gmHgQgFACSgwQg0L8oWtP7w3s2Z/vvKse9v0pcLup3FpWV97v8S5xElBMz2hgGIKRgQRcRZmYljVEo4r45E5gVVmtMNH3UC3ifvOfZ693OC3OB50jUFRAkjTIsoqjB7xo7YhgaERChpU4isuXHUsNs+Km7Y5K8rl1L2/PHld8gSFUa6V+r6TXhWMzMNW4EArFQCMRGNMywLFgLOnIXZoD0/PIuHXfSnvUwHUuqTNdJJFvW5+WfSs3z7TVnJiB25WJyXQNjpwl0LJXQVM4ECLDYorDXWJDPM/qzPJmYaxbjHBQlFfFlc4jqZRyyr3aDgYABYXJXIFl6esAws7vm1IFRvIteOktDB0IDYg9zMfP4ZbhwamUp2SWDBBQvhhsxgYQwoEBAQOAAQVD0sBaN0JPc6O/XwoyRk4bE+tLGmJUluSkDk2nSKVUwLIGhC48EQFAQOYyNa99FUiMVQ1Vt8kkPhHnfCd3OYXCjKYCj+0gz0Oo2nEGhDHNEX7BAKAbFIFnzxsrdzb5AIDJsmWh8eK9cUvDjrOv28dqCEsGDarOTgLmwwCgaho+vHx5M3i1+ca8N0opBwDJxAzux9/hffMlW3WF7cqKQk+9RXCBsCx0g079+BpgRjv9Zvtqwb31eHtooQADALquYzQmom/yGnofqzb3txe1kw6PKEOYoBmsbKaKmVeT6SNJ9kvPp68xv98v//FZ/4OfGzYzfKjarqcAAAAASUVORK5CYII=
// @grant        none
// ==/UserScript==

(function($) {
    'use strict';
    const _$=$.noConflict()
    const copy_tbl_data=()=>{
        const tbl_el=_$('#threadlist>.bm_c>table>tbody,#threadlisttableid>tbody')
        const is_personal=!tbl_el.parent().attr('id')
        const has_page=is_personal?_$('#pgt .pg').length>0:_$('#fd_page_top strong').length>0;
        const is_first_page=has_page &&(is_personal?_$('#pgt .pg a:first').text()==='下一页':_$('#fd_page_top strong').text()==='1')
        console.log(has_page,is_first_page)
        const has_header=!has_page || is_first_page || tbl_el.length>50
        const headers =['链接地址','标题','回复数量','作者','最后发表','发帖时间']
        const join_strs=[]
        if(has_header){
            join_strs.push(headers.join('\t'))
        }
        tbl_el.each((i,_e)=>{
            const bel=_$(_e)
            const burl=bel.find('.common>a:last')
            const url = `https://bbs.3dmgame.com/${burl.attr('href')}`
            const title=burl.text()
            if(title==''){
                return
            }
            const num =bel.find('.num>a').text()
            const author=is_personal?bel.find('.by:eq(1)>cite>a').text():bel.find('.by:first>cite>a').text()
            const replyer=is_personal?bel.find('.by:eq(2)>cite>a').text():bel.find('.by:eq(1)>cite>a').text()
            const create_time=is_personal?bel.find('.by:eq(1)>em>span').text():bel.find('.by:first>em>span').text()
            const content_str=[url,title,num,author,replyer,create_time].join('\t')
            join_strs.push(content_str)
        })
        var $temp = $("<textarea>");
        $("body").append($temp);
        $temp.val(join_strs.join('\n')).select();
        document.execCommand("copy");
        $temp.remove();
    }
    const loadUI=()=>{
        const el=_$(`<div id="r-box" style="height:100px;width:20px;z-index:9999999;position:fixed;top:187px;left:25px;padding-top:4px"><btn id="copy_tbl_list_data" style="cursor:pointer">列表内容复制</btn></div>`);
        el.children('btn').click(copy_tbl_data);
        _$('body').append(el);
    }
    const style='#copy_tbl_list_data:hover{color:red}';
    const styleEl=document.createElement('style');
    styleEl.innerHTML=style;
    document.getElementsByTagName('head')[0].appendChild(styleEl);
    try{
        loadUI()
    }catch(e){}
})(jQuery);