Find and display RSS feed links on webpages.
// ==UserScript==
// @name RSS Feed Finder
// @namespace http://tampermonkey.net/
// @author iamnobody
// @version 1.3
// @description Find and display RSS feed links on webpages.
// @match *://*/*
// @license MIT
// @grant GM_setClipboard
// ==/UserScript==
// ==UserScript==
// @name RSS Feed Finder
// @namespace http://tampermonkey.net/
// @version 1.5
// @description Find and display RSS feed links on webpages.
// @author iamnobody
// @license MIT
// @match *://*/*
// @grant GM_setClipboard
// ==/UserScript==
(function() {
'use strict';
// Create and style the floating button
const rssButton = document.createElement('button');
rssButton.innerHTML = '<img id="rss-icon" src="https://upload.wikimedia.org/wikipedia/commons/thumb/4/43/Feed-icon.svg/20px-Feed-icon.svg.png">';
rssButton.style.position = 'fixed';
rssButton.style.top = 'calc(20px + 2cm)';
rssButton.style.right = '20px';
rssButton.style.backgroundColor = 'transparent';
rssButton.style.border = 'none';
rssButton.style.cursor = 'pointer';
rssButton.style.zIndex = '9999';
document.body.appendChild(rssButton);
// Function to find and display RSS feed links
function findAndDisplayRSSFeeds() {
const feedLinks = document.querySelectorAll('link[type="application/rss+xml"], link[type="application/atom+xml"], a[href$=".xml"]');
if (feedLinks.length > 0) {
const feedList = document.createElement('ul');
feedList.style.listStyleType = 'none';
feedList.style.backgroundColor = '#ffffff';
feedList.style.padding = '10px';
feedList.style.border = '1px solid #007bff';
feedList.style.borderRadius = '5px';
feedList.style.position = 'fixed';
feedList.style.top = '50px';
feedList.style.right = '20px';
feedList.style.zIndex = '9999';
feedLinks.forEach(link => {
const listItem = document.createElement('li');
listItem.textContent = link.href;
feedList.appendChild(listItem);
});
document.body.appendChild(feedList);
rssButton.style.display = 'block';
} else {
rssButton.style.display = 'none';
alert('No RSS feeds found on this page.');
}
}
// Add click event listener to the RSS button
rssButton.addEventListener('click', function() {
findAndDisplayRSSFeeds();
let feedLinkFound = false;
const feedLinks = document.querySelectorAll('link[type="application/rss+xml"], link[type="application/atom+xml"], a[href$=".xml"]');
feedLinks.forEach(link => {
GM_setClipboard(link.href);
feedLinkFound = true;
});
if (feedLinkFound) {
alert('Link copied!');
}
});
// Check if there are any RSS feed links on page load
window.addEventListener('load', function() {
const feedLinks = document.querySelectorAll('link[type="application/rss+xml"], link[type="application/atom+xml"], a[href$=".xml"]');
if (feedLinks.length > 0) {
const rssNotification = document.createElement('div');
rssNotification.id = 'rss-notification';
rssNotification.style.width = '10px';
rssNotification.style.height = '10px';
rssNotification.style.backgroundColor = 'red';
rssNotification.style.borderRadius = '50%';
rssNotification.style.position = 'absolute';
rssNotification.style.top = '0';
rssNotification.style.right = '0';
rssButton.appendChild(rssNotification);
}
});
})();
(function() {
'use strict';
// Create and style the floating button
const rssButton = document.createElement('button');
rssButton.innerHTML = '<img src="https://upload.wikimedia.org/wikipedia/commons/thumb/4/43/Feed-icon.svg/20px-Feed-icon.svg.png">';
rssButton.style.position = 'fixed';
rssButton.style.top = '20px';
rssButton.style.right = '20px';
rssButton.style.backgroundColor = 'transparent';
rssButton.style.border = 'none';
rssButton.style.cursor = 'pointer';
rssButton.style.zIndex = '9999';
document.body.appendChild(rssButton);
// Function to find and display RSS feed links
function findAndDisplayRSSFeeds() {
const feedLinks = document.querySelectorAll('link[type="application/rss+xml"], link[type="application/atom+xml"], a[href$=".xml"]');
if (feedLinks.length > 0) {
const feedList = document.createElement('ul');
feedList.style.listStyleType = 'none';
feedList.style.backgroundColor = '#ffffff';
feedList.style.padding = '10px';
feedList.style.border = '1px solid #007bff';
feedList.style.borderRadius = '5px';
feedList.style.position = 'fixed';
feedList.style.top = '50px';
feedList.style.right = '20px';
feedList.style.zIndex = '9999';
feedLinks.forEach(link => {
const listItem = document.createElement('li');
listItem.textContent = link.href;
feedList.appendChild(listItem);
});
document.body.appendChild(feedList);
} else {
alert('No RSS feeds found on this page.');
}
}
// Add click event listener to the RSS button
rssButton.addEventListener('click', function() {
findAndDisplayRSSFeeds();
GM_setClipboard(window.location.href);
alert('Link copied!');
});
})();