+Youtube
by
noromanba
2012-12-14 [2012/12/14 09:22:27]
Subscribe Youtube feed (Atom, RSS)
@@ -21,22 +21,14 @@
* http://gdata.youtube.com/feeds/base/users/youtube/uploads?orderby=updated&alt=rss&client=ytapi-youtube-rss-redirect&v=2
*
* [NOTE]
- * This bookmarklet that may conflict with the browser extension.
+ * This bookmarklet that may conflict with the Browser Extension or UserScript.
* If you have problems while using the Developer Tool(It's stuck or death) or not,
- * please try to disable the extension.
- * ex) Google Chrome: use '--disable-extensions' option.
+ * please try to disable the extension and scripts.
+ * ex.) Google Chrome: use '--disable-extensions' option.
*/
-var d = document;
-function $(q) { return d.querySelector(q); }
-
-void(
- (function() {
- if (getUserNameByLocation()) {
- return goSubscribe(getUserNameByLocation());
- }
- return goSubscribe(getUserNameBySelector());
- })()
-);
+(function() {
+ return goSubscribe(getUserNameByLocation() || getUserNameBySelector());
+})();
function getUserNameByLocation() {
return parseUserName(location.href) || '';
@@ -52,6 +44,9 @@
}
function getUserNameBySelector() {
+ var d = document;
+ var $ = function(q) { return d.querySelector(q); };
+
// @TODO Refactor to Factory Method?
var aVideo = '#watch-uploader-info > a';
var chView = '#playnav-curvideo-channel-name > a';
@@ -59,7 +54,7 @@
var anchor = $(aVideo) || $(chView) || $(newChView);
if (!anchor) {
- alert('Oops.. Can\'t find HTMLAnchorElement!');
+ alert('Oops.. Can\'t find UserName!');
return '';
}
return parseUserName(anchor.href);
/*
* @title +Subscribe Youtube RSS
* @description Subscribe Youtube Uploads RSS.
* @include http://www.youtube.com/*
* @include https://www.youtube.com/*
* @license MIT License http://www.opensource.org/licenses/MIT
* @require
* @see http://let.hatelabo.jp/noromanba/let/gYC-yZeZ6_P0WQ (PermaLink)
*
* [RSS]
* Large Thumbnail ver.
* http://gdata.youtube.com/feeds/base/users/youtube/uploads
* Default Register from Browser
* http://gdata.youtube.com/feeds/base/users/youtube/uploads?alt=rss&v=2&orderby=published&client=ytapi-youtube-profile
* Tiny Query ver.
* http://gdata.youtube.com/feeds/base/users/youtube/uploads?alt=rss&v=2&orderby=published
*
* Alternate Gateway
* http://www.youtube.com/rss/user/youtube/videos.rss
* Exepand Alt-GW. Default Order by Updated
* http://gdata.youtube.com/feeds/base/users/youtube/uploads?orderby=updated&alt=rss&client=ytapi-youtube-rss-redirect&v=2
*
* [NOTE]
* This bookmarklet that may conflict with the Browser Extension or UserScript.
* If you have problems while using the Developer Tool(It's stuck or death) or not,
* please try to disable the extension and scripts.
* ex.) Google Chrome: use '--disable-extensions' option.
*/
(function() {
return goSubscribe(getUserNameByLocation() || getUserNameBySelector());
})();
function getUserNameByLocation() {
return parseUserName(location.href) || '';
}
function parseUserName(anchor) {
// @TODO HTMLAnchorElement .href
if (anchor && anchor.match(/https?:\/\/www\.youtube\.com\/user\/(\w+).*/)) {
return RegExp.$1;
}
return '';
}
function getUserNameBySelector() {
var d = document;
var $ = function(q) { return d.querySelector(q); };
// @TODO Refactor to Factory Method?
var aVideo = '#watch-uploader-info > a';
var chView = '#playnav-curvideo-channel-name > a';
var newChView = 'upper-section, ytg-box > a';
var anchor = $(aVideo) || $(chView) || $(newChView);
if (!anchor) {
alert('Oops.. Can\'t find UserName!');
return '';
}
return parseUserName(anchor.href);
}
function goSubscribe(userName) {
if (userName) {
var baseFeed = 'http://gdata.youtube.com/feeds/base/users/' + userName + '/uploads';
var apiQuery = '?alt=rss&v=2&orderby=published&client=ytapi-youtube-profile';
var defaultFeed = baseFeed + apiQuery;
var streamAnchor = '#stream/feed/' + defaultFeed;
if (confirm('Subscribe [ ' + userName + ' ] ?\n')) {
var readerPreview = 'http://google.com/reader/view/feed/';
location.href = readerPreview + encodeURIComponent(defaultFeed + streamAnchor);
}
}
}
- Permalink
- このページへの個別リンクです。
- RAW
- 書かれたコードへの直接のリンクです。
- Packed
- 文字列が圧縮された書かれたコードへのリンクです。
- Userscript
- Greasemonkey 等で利用する場合の .user.js へのリンクです。
- Loader
- @require やソースコードが長い場合に多段ロードする Loader コミのコードへのリンクです。
- Metadata
- コード中にコメントで @xxx と書かれたメタデータの JSON です。