<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="zh-Hans-CN">
	<id>https://new.pvzhe.wiki/w/%E5%BE%AE%E4%BB%B6:DailyEditRank?action=history&amp;feed=atom</id>
	<title>微件:DailyEditRank - 版本历史</title>
	<link rel="self" type="application/atom+xml" href="https://new.pvzhe.wiki/w/%E5%BE%AE%E4%BB%B6:DailyEditRank?action=history&amp;feed=atom"/>
	<link rel="alternate" type="text/html" href="https://new.pvzhe.wiki/w/%E5%BE%AE%E4%BB%B6:DailyEditRank?action=history"/>
	<updated>2026-06-13T12:15:34Z</updated>
	<subtitle>本wiki上该页面的版本历史</subtitle>
	<generator>MediaWiki 1.43.6</generator>
	<entry>
		<id>https://new.pvzhe.wiki/index.php?title=%E5%BE%AE%E4%BB%B6:DailyEditRank&amp;diff=4665&amp;oldid=prev</id>
		<title>愤怒的郎朗：​创建页面，内容为“&lt;includeonly&gt; &lt;style&gt; .daily-rank-container {     margin: 15px 0;     padding: 15px;     background: #f9f9f9;     border-radius: 10px;     border: 1px solid #e0e0e0;     max-width: 500px; } .daily-rank-title {     font-size: 18px;     font-weight: bold;     margin-bottom: 12px;     text-align: center;     color: #333; } .daily-rank-list {     list-style: none;     padding: 0;     margin: 0; } .daily-rank-item {     display: flex;     align-items: center;     pa…”</title>
		<link rel="alternate" type="text/html" href="https://new.pvzhe.wiki/index.php?title=%E5%BE%AE%E4%BB%B6:DailyEditRank&amp;diff=4665&amp;oldid=prev"/>
		<updated>2026-06-13T01:04:49Z</updated>

		<summary type="html">&lt;p&gt;创建页面，内容为“&amp;lt;includeonly&amp;gt; &amp;lt;style&amp;gt; .daily-rank-container {     margin: 15px 0;     padding: 15px;     background: #f9f9f9;     border-radius: 10px;     border: 1px solid #e0e0e0;     max-width: 500px; } .daily-rank-title {     font-size: 18px;     font-weight: bold;     margin-bottom: 12px;     text-align: center;     color: #333; } .daily-rank-list {     list-style: none;     padding: 0;     margin: 0; } .daily-rank-item {     display: flex;     align-items: center;     pa…”&lt;/p&gt;
&lt;p&gt;&lt;b&gt;新页面&lt;/b&gt;&lt;/p&gt;&lt;div&gt;&amp;lt;includeonly&amp;gt;&lt;br /&gt;
&amp;lt;style&amp;gt;&lt;br /&gt;
.daily-rank-container {&lt;br /&gt;
    margin: 15px 0;&lt;br /&gt;
    padding: 15px;&lt;br /&gt;
    background: #f9f9f9;&lt;br /&gt;
    border-radius: 10px;&lt;br /&gt;
    border: 1px solid #e0e0e0;&lt;br /&gt;
    max-width: 500px;&lt;br /&gt;
}&lt;br /&gt;
.daily-rank-title {&lt;br /&gt;
    font-size: 18px;&lt;br /&gt;
    font-weight: bold;&lt;br /&gt;
    margin-bottom: 12px;&lt;br /&gt;
    text-align: center;&lt;br /&gt;
    color: #333;&lt;br /&gt;
}&lt;br /&gt;
.daily-rank-list {&lt;br /&gt;
    list-style: none;&lt;br /&gt;
    padding: 0;&lt;br /&gt;
    margin: 0;&lt;br /&gt;
}&lt;br /&gt;
.daily-rank-item {&lt;br /&gt;
    display: flex;&lt;br /&gt;
    align-items: center;&lt;br /&gt;
    padding: 8px 10px;&lt;br /&gt;
    border-bottom: 1px solid #eee;&lt;br /&gt;
    font-size: 14px;&lt;br /&gt;
    transition: background 0.2s;&lt;br /&gt;
}&lt;br /&gt;
.daily-rank-item:hover {&lt;br /&gt;
    background: #fff;&lt;br /&gt;
}&lt;br /&gt;
.daily-rank-item:last-child {&lt;br /&gt;
    border-bottom: none;&lt;br /&gt;
}&lt;br /&gt;
.daily-rank-num {&lt;br /&gt;
    width: 30px;&lt;br /&gt;
    height: 30px;&lt;br /&gt;
    line-height: 30px;&lt;br /&gt;
    text-align: center;&lt;br /&gt;
    border-radius: 50%;&lt;br /&gt;
    font-weight: bold;&lt;br /&gt;
    font-size: 14px;&lt;br /&gt;
    margin-right: 10px;&lt;br /&gt;
    flex-shrink: 0;&lt;br /&gt;
}&lt;br /&gt;
.daily-rank-num.top1 { background: #FFD700; color: #fff; }&lt;br /&gt;
.daily-rank-num.top2 { background: #C0C0C0; color: #fff; }&lt;br /&gt;
.daily-rank-num.top3 { background: #CD7F32; color: #fff; }&lt;br /&gt;
.daily-rank-num.normal { background: #e0e0e0; color: #666; }&lt;br /&gt;
.daily-rank-user {&lt;br /&gt;
    flex: 1;&lt;br /&gt;
    color: #333;&lt;br /&gt;
    text-decoration: none;&lt;br /&gt;
}&lt;br /&gt;
.daily-rank-user:hover {&lt;br /&gt;
    color: #4CAF50;&lt;br /&gt;
    text-decoration: underline;&lt;br /&gt;
}&lt;br /&gt;
.daily-rank-count {&lt;br /&gt;
    color: #888;&lt;br /&gt;
    font-size: 13px;&lt;br /&gt;
    flex-shrink: 0;&lt;br /&gt;
}&lt;br /&gt;
.daily-rank-loading {&lt;br /&gt;
    text-align: center;&lt;br /&gt;
    color: #999;&lt;br /&gt;
    padding: 20px;&lt;br /&gt;
}&lt;br /&gt;
.daily-rank-time {&lt;br /&gt;
    text-align: center;&lt;br /&gt;
    font-size: 12px;&lt;br /&gt;
    color: #999;&lt;br /&gt;
    margin-top: 10px;&lt;br /&gt;
}&lt;br /&gt;
.daily-rank-refresh {&lt;br /&gt;
    display: block;&lt;br /&gt;
    margin: 10px auto 0;&lt;br /&gt;
    padding: 5px 15px;&lt;br /&gt;
    background: #4CAF50;&lt;br /&gt;
    color: #fff;&lt;br /&gt;
    border: none;&lt;br /&gt;
    border-radius: 5px;&lt;br /&gt;
    cursor: pointer;&lt;br /&gt;
    font-size: 12px;&lt;br /&gt;
}&lt;br /&gt;
.daily-rank-refresh:hover {&lt;br /&gt;
    background: #45a049;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/style&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;daily-rank-container&amp;quot; id=&amp;quot;daily-rank-container&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;div class=&amp;quot;daily-rank-title&amp;quot;&amp;gt;📊 今日编辑排行 TOP 20&amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;div class=&amp;quot;daily-rank-loading&amp;quot; id=&amp;quot;daily-rank-loading&amp;quot;&amp;gt;加载中...&amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;ul class=&amp;quot;daily-rank-list&amp;quot; id=&amp;quot;daily-rank-list&amp;quot; style=&amp;quot;display:none;&amp;quot;&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
    &amp;lt;div class=&amp;quot;daily-rank-time&amp;quot; id=&amp;quot;daily-rank-time&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;button class=&amp;quot;daily-rank-refresh&amp;quot; id=&amp;quot;daily-rank-refresh&amp;quot;&amp;gt;刷新排行&amp;lt;/button&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
(function() {&lt;br /&gt;
    var $loading = document.getElementById(&amp;#039;daily-rank-loading&amp;#039;);&lt;br /&gt;
    var $list = document.getElementById(&amp;#039;daily-rank-list&amp;#039;);&lt;br /&gt;
    var $time = document.getElementById(&amp;#039;daily-rank-time&amp;#039;);&lt;br /&gt;
    var $refresh = document.getElementById(&amp;#039;daily-rank-refresh&amp;#039;);&lt;br /&gt;
    var API_URL = mw.util.wikiScript(&amp;#039;api&amp;#039;);&lt;br /&gt;
    var TOP_COUNT = 20;&lt;br /&gt;
&lt;br /&gt;
    function getTodayStart() {&lt;br /&gt;
        var now = new Date();&lt;br /&gt;
        now.setHours(0, 0, 0, 0);&lt;br /&gt;
        return now.toISOString();&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    function fetchRank() {&lt;br /&gt;
        $loading.style.display = &amp;#039;block&amp;#039;;&lt;br /&gt;
        $list.style.display = &amp;#039;none&amp;#039;;&lt;br /&gt;
        $refresh.disabled = true;&lt;br /&gt;
        $refresh.textContent = &amp;#039;刷新中...&amp;#039;;&lt;br /&gt;
&lt;br /&gt;
        var todayStart = getTodayStart();&lt;br /&gt;
        var userEdits = {};&lt;br /&gt;
&lt;br /&gt;
        function fetchBatch(rcstart) {&lt;br /&gt;
            var params = {&lt;br /&gt;
                action: &amp;#039;query&amp;#039;,&lt;br /&gt;
                list: &amp;#039;recentchanges&amp;#039;,&lt;br /&gt;
                rcprop: &amp;#039;user&amp;#039;,&lt;br /&gt;
                rclimit: 500,&lt;br /&gt;
                rcstart: rcstart || todayStart,&lt;br /&gt;
                rcdir: &amp;#039;newer&amp;#039;,&lt;br /&gt;
                rcnamespace: &amp;#039;0|2|10|828&amp;#039;,&lt;br /&gt;
                format: &amp;#039;json&amp;#039;,&lt;br /&gt;
                origin: &amp;#039;*&amp;#039;&lt;br /&gt;
            };&lt;br /&gt;
&lt;br /&gt;
            return fetch(API_URL + &amp;#039;?action=query&amp;amp;list=recentchanges&amp;amp;rcprop=user&amp;amp;rclimit=500&amp;amp;rcstart=&amp;#039; + encodeURIComponent(params.rcstart) + &amp;#039;&amp;amp;rcdir=newer&amp;amp;rcnamespace=0|2|10|828&amp;amp;format=json&amp;amp;origin=*&amp;#039;)&lt;br /&gt;
                .then(function(res) { return res.json(); })&lt;br /&gt;
                .then(function(data) {&lt;br /&gt;
                    if (data.query &amp;amp;&amp;amp; data.query.recentchanges) {&lt;br /&gt;
                        var rcs = data.query.recentchanges;&lt;br /&gt;
                        rcs.forEach(function(rc) {&lt;br /&gt;
                            var user = rc.user;&lt;br /&gt;
                            if (!userEdits[user]) userEdits[user] = 0;&lt;br /&gt;
                            userEdits[user]++;&lt;br /&gt;
                        });&lt;br /&gt;
&lt;br /&gt;
                        // 如果还有更多结果，继续获取&lt;br /&gt;
                        if (rcs.length === 500 &amp;amp;&amp;amp; data.continue) {&lt;br /&gt;
                            return fetchBatch(data.continue.rcstart);&lt;br /&gt;
                        }&lt;br /&gt;
                    }&lt;br /&gt;
                });&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        fetchBatch().then(function() {&lt;br /&gt;
            // 排序&lt;br /&gt;
            var sorted = [];&lt;br /&gt;
            for (var user in userEdits) {&lt;br /&gt;
                sorted.push({ user: user, count: userEdits[user] });&lt;br /&gt;
            }&lt;br /&gt;
            sorted.sort(function(a, b) { return b.count - a.count; });&lt;br /&gt;
            var topUsers = sorted.slice(0, TOP_COUNT);&lt;br /&gt;
&lt;br /&gt;
            // 渲染&lt;br /&gt;
            $list.innerHTML = &amp;#039;&amp;#039;;&lt;br /&gt;
            if (topUsers.length === 0) {&lt;br /&gt;
                $list.innerHTML = &amp;#039;&amp;lt;li style=&amp;quot;text-align:center;color:#999;padding:20px;&amp;quot;&amp;gt;今天还没有编辑记录&amp;lt;/li&amp;gt;&amp;#039;;&lt;br /&gt;
            } else {&lt;br /&gt;
                topUsers.forEach(function(item, index) {&lt;br /&gt;
                    var rank = index + 1;&lt;br /&gt;
                    var numClass = rank === 1 ? &amp;#039;top1&amp;#039; : rank === 2 ? &amp;#039;top2&amp;#039; : rank === 3 ? &amp;#039;top3&amp;#039; : &amp;#039;normal&amp;#039;;&lt;br /&gt;
                    var li = document.createElement(&amp;#039;li&amp;#039;);&lt;br /&gt;
                    li.className = &amp;#039;daily-rank-item&amp;#039;;&lt;br /&gt;
                    li.innerHTML =&lt;br /&gt;
                        &amp;#039;&amp;lt;span class=&amp;quot;daily-rank-num &amp;#039; + numClass + &amp;#039;&amp;quot;&amp;gt;&amp;#039; + rank + &amp;#039;&amp;lt;/span&amp;gt;&amp;#039; +&lt;br /&gt;
                        &amp;#039;&amp;lt;a class=&amp;quot;daily-rank-user&amp;quot; href=&amp;quot;/w/User:&amp;#039; + encodeURIComponent(item.user) + &amp;#039;&amp;quot;&amp;gt;&amp;#039; + item.user + &amp;#039;&amp;lt;/a&amp;gt;&amp;#039; +&lt;br /&gt;
                        &amp;#039;&amp;lt;span class=&amp;quot;daily-rank-count&amp;quot;&amp;gt;&amp;#039; + item.count + &amp;#039; 次编辑&amp;lt;/span&amp;gt;&amp;#039;;&lt;br /&gt;
                    $list.appendChild(li);&lt;br /&gt;
                });&lt;br /&gt;
            }&lt;br /&gt;
&lt;br /&gt;
            var now = new Date();&lt;br /&gt;
            $time.textContent = &amp;#039;更新时间：&amp;#039; + now.toLocaleTimeString(&amp;#039;zh-CN&amp;#039;);&lt;br /&gt;
            $loading.style.display = &amp;#039;none&amp;#039;;&lt;br /&gt;
            $list.style.display = &amp;#039;block&amp;#039;;&lt;br /&gt;
            $refresh.disabled = false;&lt;br /&gt;
            $refresh.textContent = &amp;#039;刷新排行&amp;#039;;&lt;br /&gt;
        }).catch(function() {&lt;br /&gt;
            $loading.textContent = &amp;#039;加载失败，请重试&amp;#039;;&lt;br /&gt;
            $refresh.disabled = false;&lt;br /&gt;
            $refresh.textContent = &amp;#039;刷新排行&amp;#039;;&lt;br /&gt;
        });&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    $refresh.addEventListener(&amp;#039;click&amp;#039;, function() {&lt;br /&gt;
        fetchRank();&lt;br /&gt;
    });&lt;br /&gt;
&lt;br /&gt;
    // 初始加载&lt;br /&gt;
    fetchRank();&lt;br /&gt;
&lt;br /&gt;
    // 每 5 分钟自动刷新&lt;br /&gt;
    setInterval(function() {&lt;br /&gt;
        fetchRank();&lt;br /&gt;
    }, 300000);&lt;br /&gt;
})();&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;/includeonly&amp;gt;&lt;/div&gt;</summary>
		<author><name>愤怒的郎朗</name></author>
	</entry>
</feed>