Last active
December 24, 2015 07:39
-
-
Save Qofar/6765648 to your computer and use it in GitHub Desktop.
[NicoCache_nl] nicofetchにInoReader、DiggReader、The Old Reader、feedly、Feedeen を追加した
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// ==UserScript== | |
// @name nicofetch | |
// @namespace http://www.nicovideo.jp/ | |
// @description Add the nicofetch function for some web applications. | |
// @include http://www.google.tld/reader/* | |
// @include https://www.google.tld/reader/* | |
// @include http://www.inoreader.com/* | |
// @include https://www.inoreader.com/* | |
// @include http://us.inoreader.com/* | |
// @include https://us.inoreader.com/* | |
// @include http://theoldreader.com/* | |
// @include https://theoldreader.com/* | |
// @include http://cloud.feedly.com/* | |
// @include https://cloud.feedly.com/* | |
// @include http://digg.com/reader* | |
// @include https://digg.com/reader* | |
// @include http://feedeen.com/* | |
// @include https://feedeen.com/* | |
// @require http://www.nicovideo.jp/local/nlMovieFetcher.js | |
// ==/UserScript== | |
(function() { | |
if (!window.nlMovieFetcher) { | |
GM_log("nlMovieFetcher not found."); return; | |
} | |
window.nlMovieFetcher.prototype.callAPI = function(param, callback) { | |
GM_xmlhttpRequest({ | |
method: 'GET', | |
url: "http://www.nicovideo.jp/cache/fetch?"+param, | |
onload: callback | |
}); | |
} | |
const WATCH_URL = "http://www.nicovideo.jp/watch/"; | |
const HOSTNAME = document.location.host; | |
const PATHNAME = document.location.pathname; | |
function getVideoId(href) { | |
if (href.indexOf(WATCH_URL) != 0) | |
return null; | |
return href.substring(href.lastIndexOf("/") + 1); | |
} | |
function appendFetchLink(target, reftarget, id, frame, anchor) { | |
var link = document.createElement('A'); | |
link.href = "javascript:void(0)"; | |
link.target = "_self"; | |
// link.textContent = "fetch"; | |
link.addEventListener('click', function() { | |
var fetcher = new window.nlMovieFetcher(id, link, frame, anchor); | |
fetcher.fetch(); | |
}, false); | |
var img = document.createElement('IMG'); | |
img.src = "http://www.nicovideo.jp/favicon.ico"; | |
link.appendChild(img); | |
var div = document.createElement('DIV'); | |
div.style.fontWeight = 'bold'; | |
div.style.margin = '1px 5px'; | |
div.style.display = 'inline-block'; | |
// div.textContent = "nlMovieFetcher: "; | |
div.appendChild(link); | |
if(reftarget===null) target.appendChild(div); | |
else target.insertBefore(div, reftarget); | |
} | |
var AppFunctions = [ | |
function() { // Google Reader | |
if (HOSTNAME.indexOf("www.google.") != 0) return; | |
if (PATHNAME.indexOf("/reader/") != 0) return; | |
document.body.addEventListener('DOMNodeInserted', function(e) { | |
var element = e.target; | |
if (!element.className || element.className.indexOf("entry") != 0) | |
return; | |
var anchor = element.getElementsByClassName("entry-title-link")[0]; | |
if (!anchor) return; | |
var id = getVideoId(anchor.href); | |
if (!id) return; | |
var frame = (element.className.indexOf("entry-container") != -1) ? | |
element : element.getElementsByClassName("entry-container")[0]; | |
appendFetchLink(anchor.parentNode.parentNode, null, id, frame, anchor); | |
}, false); | |
}, | |
function() { // InoReader | |
if (HOSTNAME.indexOf("inoreader.com") == -1) return; | |
document.body.addEventListener('DOMNodeInserted', function(e) { | |
var element = e.target; | |
if (!element.className || element.className.indexOf("article") != 0) | |
return; | |
var anchor = element.getElementsByClassName("article_title_link")[0]; | |
if (!anchor) return; | |
var id = getVideoId(anchor.href); | |
if (!id) return; | |
var frame = element.parentNode; | |
var target = frame; | |
var reftarget = frame.getElementsByClassName("article_footer")[0]; | |
appendFetchLink(target, reftarget, id, frame, anchor); | |
}, false); | |
}, | |
function() { // DiggReader | |
if (HOSTNAME.indexOf("digg.com") != 0) return; | |
if (PATHNAME.indexOf("/reader") != 0) return; | |
document.body.addEventListener('DOMNodeInserted', function(e) { | |
var element = e.target; | |
if (element.className && | |
(element.className.indexOf("story-detail-view") != 0 || element.className.indexOf(" expanded") != 0)) { | |
var head = element.getElementsByClassName("story-title")[0]; | |
var anchor = head.getElementsByTagName("A")[0]; | |
if (!anchor) return; | |
var id = getVideoId(anchor.href); | |
if (!id) return; | |
var frame = element.getElementsByClassName("story-detail-content")[0]; | |
var target = frame; | |
appendFetchLink(target, null, id, frame, anchor); | |
} | |
}, false); | |
}, | |
function() { // The Old Reader | |
if (HOSTNAME.indexOf("theoldreader.com") != 0) return; | |
document.body.addEventListener('DOMNodeInserted', function(e) { | |
var element = e.target; | |
if (!element.className || element.className.indexOf("slide") != 0) | |
return; | |
var posts = element.getElementsByClassName("post"); | |
for (var i = 0, length = posts.length; i < length; i++) { | |
var anchor = posts[i].getElementsByTagName("h3")[0].firstElementChild; | |
if (!anchor) continue; | |
var id = getVideoId(anchor.href); | |
if (!id) continue; | |
var reftarget = posts[i].getElementsByClassName("btns")[0]; | |
var frame = reftarget.parentNode | |
var target = frame; | |
appendFetchLink(target, reftarget, id, frame, anchor); | |
} | |
}, false); | |
}, | |
function() { // feedly | |
if (HOSTNAME.indexOf("cloud.feedly.com") != 0) return; | |
document.body.addEventListener('DOMNodeInserted', function(e) { | |
var element = e.target; | |
if (element.tagName === "TABLE" || | |
typeof element.className !== "undefined" && ( | |
element.className.indexOf("u5Entry") > -1 || | |
element.className.indexOf("u4Entry") > -1 || | |
element.className.indexOf("u100Frame") > -1 )) { | |
var anchor = element.getElementsByClassName("title")[0]; | |
if (!anchor) return; | |
var id = getVideoId(anchor.href); | |
// id = id.replace(/\?utm_source=feedly/, ''); | |
if (!id) return; | |
var frame = element; | |
var target = element; | |
if (!target) return; | |
appendFetchLink(target, null, id, frame, anchor); | |
} | |
}, false); | |
}, | |
function() { // Feedeen | |
if (HOSTNAME.indexOf("feedeen.com") != 0) return; | |
document.body.addEventListener('DOMNodeInserted', function(e) { | |
var element = e.target; | |
if (!element.className || element.className.indexOf("fd_item") === -1) | |
return; | |
var anchor = element.getElementsByClassName("B-Ab-Uc")[0].firstElementChild; | |
if (!anchor) return; | |
var id = getVideoId(anchor.href); | |
if (!id) return; | |
var frame = element.getElementsByClassName("B-Ab-O")[0]; | |
var target = element.getElementsByClassName("B-Ab-ab")[0]; | |
appendFetchLink(target, null, id, frame, anchor); | |
}, false); | |
}, | |
function(){} // End of AppFunctions | |
]; | |
for (i in AppFunctions) AppFunctions[i](); | |
})(); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment