知识库首页 书签代码 plausible.md

plausible

本地来源:书签代码/plausible.md

javascript:(async()=>{const sites=[];const status=document.createElement('div');status.style.cssText='position:fixed;top:10px;right:10px;background:#4f46e5;color:white;padding:20px;border-radius:8px;z-index:99999;font-family:sans-serif;font-size:14px;box-shadow:0 4px 12px rgba(0,0,0,0.3)';document.body.appendChild(status);const wait=ms=>new Promise(r=>setTimeout(r,ms));const parseNum=str=>{if(!str)return 0;str=str.toLowerCase().trim();const num=parseFloat(str);if(str.includes('k'))return Math.round(num1000);if(str.includes('m'))return Math.round(num1000000);return Math.round(num)||0};const waitForData=async()=>{for(let i=0;i<30;i++){const items=document.querySelectorAll('li[data-domain] b');if(items.length>0)return true;await wait(200)}return false};const extract=()=>{document.querySelectorAll('li[data-domain]').forEach(li=>{const domain=li.getAttribute('data-domain');const b=li.querySelector('b');const visitorText=b?b.textContent.trim():'0';const visitors=parseNum(visitorText);const pEl=li.querySelector('p.dark\:text-gray-100');let percent='0%',trend='',pctNum=0;if(pEl){const txt=pEl.textContent.trim();trend=txt.includes('↑')?'↑':txt.includes('↓')?'↓':'';percent=txt.replace(/[↑↓\s]/g,'');pctNum=parseInt(percent)||0}if(!sites.find(s=>s.domain===domain)){sites.push({domain,visitors,visitorText,percent,trend,pctNum})}})};let page=1;while(true){status.innerHTML=%60抓取第 ${page} 页...
已获取 ${sites.length} 个站点%60;await waitForData();await wait(1000);extract();const nextBtn=[...document.querySelectorAll('a.pagination-link')].find(a=>a.textContent.includes('Next')&&!a.classList.contains('inactive')&&!a.classList.contains('cursor-not-allowed'));if(!nextBtn)break;nextBtn.click();page++;await wait(1500)}status.textContent='生成表格...';const w=window.open('','blank');w.document.write(%60<!DOCTYPE html><meta charset="utf-8">Plausible站点排名<style>*{margin:0;padding:0;box-sizing:border-box}body{font-family:-apple-system,sans-serif;background:#111827;color:#fff;padding:20px}.header{max-width:1200px;margin:0 auto 20px}h1{text-align:center;margin-bottom:10px}.info{text-align:center;color:#9ca3af;margin-bottom:15px}.controls{display:flex;gap:10px;justify-content:center;flex-wrap:wrap;margin-bottom:15px}.search{padding:10px 15px;border-radius:6px;border:1px solid #374151;background:#1f2937;color:#fff;width:300px}.btn{padding:10px 20px;background:#4f46e5;border:none;color:#fff;border-radius:6px;cursor:pointer}.btn:hover{background:#4338ca}table{width:100%;max-width:1200px;margin:0 auto;border-collapse:collapse}th,td{padding:12px 16px;text-align:left;border-bottom:1px solid #374151}th{background:#4f46e5;cursor:pointer;user-select:none;position:sticky;top:0}th:hover{background:#4338ca}th.asc::after{content:' ▲'}th.desc::after{content:' ▼'}tr:hover{background:#1f2937}.r{text-align:right;font-family:monospace}.c{text-align:center}.up{color:#22c55e}.down{color:#ef4444}a{color:#818cf8;text-decoration:none}a:hover{text-decoration:underline}.hidden{display:none}.pbtn{padding:6px 12px;background:#22c55e;border:none;color:#fff;border-radius:4px;cursor:pointer;font-size:12px}.pbtn:hover{background:#16a34a}

📊 Plausible 站点排名 (24h)

${sites.length} 个站点 | ${new Date().toLocaleString()}

#域名访客数 ▼变化统计
<script>const data=${JSON.stringify(sites)};let sortCol='visitors',sortDir='desc';function render(list){const tbody=document.getElementById('tbody');tbody.innerHTML=list.map((s,i)=>\%60\${i+1}\${s.domain}\${s.visitors.toLocaleString()}\${s.trend}\${s.percent}📈 Plausible\%60).join('');document.getElementById('count').textContent=list.length}function sort(col,type){const th=document.querySelectorAll('th');th.forEach(t=>{t.classList.remove('asc','desc');t.textContent=t.textContent.replace(/ [▲▼]/g,'')});const header=[...th].find(t=>t.dataset.col===col);if(!header)return;if(sortCol===col){sortDir=sortDir==='asc'?'desc':'asc'}else{sortCol=col;sortDir=type==='num'?'desc':'asc'}header.classList.add(sortDir);data.sort((a,b)=>{let av,bv;if(col==='rank')return 0;if(col==='domain'){av=a.domain;bv=b.domain}else if(col==='visitors'){av=a.visitors;bv=b.visitors}else{av=a.pctNum;bv=b.pctNum}if(type==='str'){return sortDir==='asc'?av.localeCompare(bv):bv.localeCompare(av)}return sortDir==='asc'?av-bv:bv-av});filter()}function filter(){const q=document.getElementById('search').value.toLowerCase();const list=data.filter(s=>s.domain.toLowerCase().includes(q));render(list)}document.querySelectorAll('th[data-col]').forEach(th=>{th.onclick=()=>sort(th.dataset.col,th.dataset.type)});document.getElementById('search').oninput=filter;data.sort((a,b)=>b.visitors-a.visitors);render(data);function exportCSV(){const q=document.getElementById('search').value.toLowerCase();const list=data.filter(s=>s.domain.includes(q));const rows=[['排名','域名','访客数','变化','Plausible链接']];list.forEach((s,i)=>rows.push([i+1,s.domain,s.visitors,s.trend+s.percent,'https://click.pageview.click/'+s.domain]));const csv='\ufeff'+rows.map(r=>r.join(',')).join('\n');const blob=new Blob([csv],{type:'text/csv;charset=utf-8'});const a=document.createElement('a');a.href=URL.createObjectURL(blob);a.download='plausible${new Date().toISOString().slice(0,10)}.csv';a.click()}<\/script>%60);w.document.close();status.remove()})();

本文档为站内渲染。原始文件本地路径:saas/source/bookmarks-code/书签代码-plausible-2342af.md(仅本地保留,不入库不部署)