您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Adds an RSS feed button to YouTube channels next to the subscribe button
当前为
// ==UserScript== // @name YouTube RSS Feed // @namespace http://greasyfork.org/users/2240-doodles // @author Doodles // @version 17 // @description Adds an RSS feed button to YouTube channels next to the subscribe button // @icon http://i.imgur.com/Ty5HNbT.png // @icon64 http://i.imgur.com/1FfVvNr.png // @match *://www.youtube.com/* // @match *://youtube.com/* // @grant none // @run-at document-end // @require https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js // ==/UserScript== this.$ = this.jQuery = jQuery.noConflict(true); $(function () { "use strict"; var additionalWait = setInterval(function () { if (additonalWaitComplete()) { addRssFeedSupport(); clearInterval(additionalWait); } }, 1000); document.body.addEventListener("yt-navigate-finish", function (event) { addRssFeedSupport(); }); }); function addRssFeedSupport() { if (isPlaylistPage()) { var channelFeedLink = getPlaylistFeed(getPlatlistId()); addRssLink(channelFeedLink); addRssButtonPlaylist(channelFeedLink); } else if (isVideoPage()) { var channelFeedLink = getChannelFeed(getChannelIdFromVideoPage()); addRssLink(channelFeedLink); addRssButton(channelFeedLink); } else if (isChannelPage()) { var channelFeedLink = getChannelFeed(getChannelIdFromChannelPage()); addRssLink(channelFeedLink); addRssButton(channelFeedLink); } } function isPlaylistPage() { return document.URL.indexOf("/playlist?list=") !== -1; } function isVideoPage() { return document.URL.indexOf("/watch") !== -1 && document.URL.indexOf("v=") !== -1; } function isChannelPage() { return $("#channel-header").length > 0; } function additonalWaitComplete() { if (isPlaylistPage()) { if (document.URL.indexOf("disable_polymer=true") !== -1) { return $("#pl-header").length > 0; } else { return $("#items").length > 0; } } else if (isVideoPage()) { return $("#upload-info").length > 0; } else if (isChannelPage()) { return $("#channel-title-container").length > 0; } else { return true; // default to true to kill loop on unknown pages } } function getPlatlistId() { var playlistId = document.URL.split("list=")[1].split("&")[0]; if (!playlistId.startsWith("PL")) { playlistId = "PL" + playlistId; } return playlistId; } function getChannelIdFromVideoPage() { return $("#upload-info a[href*='/channel/']:first").attr("href").split("/channel/")[1]; } function getChannelIdFromChannelPage() { return $("meta[property='og:url']").attr("content").split("/channel/")[1]; } function getChannelFeed(channelId) { return "http://www.youtube.com/feeds/videos.xml?channel_id=" + channelId; } function getPlaylistFeed(playlistId) { return "http://www.youtube.com/feeds/videos.xml?playlist_id=" + playlistId; } function addRssLink(link) { if ($("link[type='application/rss+xml']").length === 0) { $("head").append('<link rel="alternate" type="application/rss+xml" title="RSS" href="' + link + '" />'); } } function addRssButton(link) { if ($("#rssSubButton").length === 0) { $("#subscribe-button") .css({ "display": "flex", "flex-flow": "nowrap", "height": "37px" }) .prepend(makeRssButton(link)); } } function addRssButtonPlaylist(link) { if ($("#rssSubButton").length === 0) { if (document.URL.indexOf("disable_polymer=true") !== -1) { $(".playlist-actions").prepend(makeRssButton(link)); } else { $("#owner-container > #button") .css({ "display": "flex", "flex-flow": "nowrap", "height": "37px" }) .prepend(makeRssButton(link)); } } } function makeRssButton(link) { return $("<a>RSS</a>") .attr("id", "rssSubButton") .attr("target", "_blank") .attr("href", link) .css({ "background-color": "#fd9b12", "border-radius": "3px", "padding": "10px 16px", "color": "#ffffff", "font-size": "14px", "text-decoration": "none", "text-transform": "uppercase", "margin-right": "5px" }); }