您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Add a button to filter articles based on whether their title contains the ⏳ emoji (after reading time generation)
// ==UserScript== // @name RSS: FreshRSS Filter Articles by Title (Obsolete) // @namespace http://tampermonkey.net/ // @version 1.9 // @homepage https://gf.qytechs.cn/en/scripts/526410 // @description Add a button to filter articles based on whether their title contains the ⏳ emoji (after reading time generation) // @author You // @match http://192.168.1.2:1030/* // @grant none // ==/UserScript== (function() { 'use strict'; // Variable to track the hidden state let isHidden = false; // Function to filter divs function filterDivs() { const divs = document.querySelectorAll('.flux'); divs.forEach(div => { const titleElement = div.querySelector('.title'); if (titleElement) { const titleText = titleElement.textContent || titleElement.innerText; if (!titleText.includes('⏳')) { div.style.display = isHidden ? '' : 'none'; } } }); // Toggle the button text const button = document.getElementById('filterButton'); if (button) { button.textContent = isHidden ? '⏳' : '🌎'; } // Toggle the hidden state isHidden = !isHidden; } // Function to load all articles async function loadAllArticles() { const loadMoreButton = document.getElementById('load_more'); if (loadMoreButton && !loadMoreButton.disabled) { // Show loading hint const loadingHint = document.getElementById('loadingHint'); if (loadingHint) { loadingHint.style.display = 'block'; } loadMoreButton.click(); // Click the "Load more articles" button await new Promise(resolve => setTimeout(resolve, 1000)); // Wait for articles to load await loadAllArticles(); // Recursively load more articles // Hide loading hint after loading is complete if (loadingHint) { loadingHint.style.display = 'none'; } } } // Create the button const button = document.createElement('a'); button.id = 'filterButton'; button.className = 'btn'; // Match the class of other navigation buttons button.href = '#'; // Add a placeholder href to match the style button.title = 'Filter by ⏳'; // Add a tooltip button.textContent = '⏳'; // Use emoji directly // Create the loading hint element const loadingHint = document.createElement('div'); loadingHint.id = 'loadingHint'; loadingHint.textContent = 'Loading all articles...'; loadingHint.style.display = 'none'; // Initially hidden loadingHint.style.marginTop = '10px'; loadingHint.style.fontStyle = 'italic'; loadingHint.style.color = '#666'; // Add click event listener to the button button.addEventListener('click', async (e) => { e.preventDefault(); // Prevent the default link behavior // Load all articles before filtering await loadAllArticles(); // Filter the articles filterDivs(); }); // Find the last .group div and insert the button and loading hint after it const lastGroupDiv = document.querySelector('.group:last-of-type'); if (lastGroupDiv) { lastGroupDiv.parentNode.insertBefore(button, lastGroupDiv.nextSibling); lastGroupDiv.parentNode.insertBefore(loadingHint, button.nextSibling); } else { console.error('Could not find the last .group element.'); } })();
QingJ © 2025
镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址