youtube_history_ago
by
jigendaddy
2018-11-23 [2018/11/23 16:14:41]
try to take over the world!
@@ -18,28 +18,46 @@
return s_url;
}
//登録処理
-var d_url = location.href;
-var s_url = para_del(d_url);
-if (s_url != "https://www.youtube.com/feed/history") {
- localStorage.setItem(s_url, moment().format("YYYY-MM-DD"));
+var result3 = document.evaluate('id("search-form")', document, null, 7, null);
+if (document.getElementById("mark") == null) {
+ result3.snapshotItem(0).insertAdjacentHTML('afterend', '<input type="button" value="登録" id="mark">');
}
+var result4 = document.evaluate('id("mark")', document, null, 7, null);
+result4.snapshotItem(0).addEventListener('click', function () {
+ var d_url = location.href;
+ var s_url = para_del(d_url);
+ if (s_url != "https://www.youtube.com/feed/history") {
+ if (window.confirm("アドレスバーに" + s_url + "から始まる文字列が表示されていますか?\n異なる場合はキャンセルを押してください。\nリロードを行います")) {
+ localStorage.setItem(s_url, moment().format("YYYY-MM-DD"));
+ alert("ローカルストレージにこの動画のキーを登録しました");
+ } else {
+ location.reload();
+ }
+ }
+});
//検索処理と書き出し
-var result = document.evaluate('//a[@id="video-title"]', document, null, 7, null);
-var result2 = document.evaluate('//div[@id="metadata-line"]', document, null, 7, null);
-for (var i = 0; i < result.snapshotLength; i++) {
- var n_url = result.snapshotItem(i).href;
- var nr_url = para_del(n_url);
- if (nr_url in localStorage) {
- var to = moment();
- var from = moment(localStorage.getItem(nr_url), "YYYY-MM-DD");
- if (moment(from).fromNow() != moment().startOf('day').fromNow()) {
- if (to.diff(from, 'day') == 1) {
- result2.snapshotItem(i).insertAdjacentHTML("afterbegin", to.diff(from, 'day') + " day ago ");
+if (document.getElementById("write") == null) {
+ result3.snapshotItem(0).insertAdjacentHTML('afterend', '<input type="button" value="表示" id="write">');
+}
+var result5 = document.evaluate('id("write")', document, null, 7, null);
+result5.snapshotItem(0).addEventListener('click', function () {
+ var result = document.evaluate('//a[@id="video-title"]', document, null, 7, null);
+ var result2 = document.evaluate('//div[@id="metadata-line"]', document, null, 7, null);
+ for (var i = 0; i < result.snapshotLength; i++) {
+ var n_url = result.snapshotItem(i).href;
+ var nr_url = para_del(n_url);
+ if (nr_url in localStorage) {
+ var to = moment();
+ var from = moment(localStorage.getItem(nr_url), "YYYY-MM-DD");
+ if (moment(from).fromNow() != moment().startOf('day').fromNow()) {
+ if (to.diff(from, 'day') == 1) {
+ result2.snapshotItem(i).insertAdjacentHTML("afterbegin", to.diff(from, 'day') + " day ago ");
+ } else {
+ result2.snapshotItem(i).insertAdjacentHTML("afterbegin", to.diff(from, 'day') + " days ago ");
+ }
} else {
- result2.snapshotItem(i).insertAdjacentHTML("afterbegin", to.diff(from, 'day') + " days ago ");
+ result2.snapshotItem(i).insertAdjacentHTML("afterbegin", "Today ");
}
- } else {
- result2.snapshotItem(i).insertAdjacentHTML("afterbegin", "Today ");
}
}
-}
+});
// ==UserScript==
// @title youtube_history_ago
// @name youtube_history_ago
// @namespace http://tampermonkey.net/
// @version 0.1
// @description try to take over the world!
// @author You
// @match https://www.youtube.com/watch?v=*
// @match https://www.youtube.com/feed/history
// @grant none
// @require https://momentjs.com/downloads/moment-with-locales.js
// ==/UserScript==
//パラメータ削除用関数
function para_del(str) {
var s_url = str + "&";
var array_url = s_url.split("&");
s_url = array_url[0];
return s_url;
}
//登録処理
var result3 = document.evaluate('id("search-form")', document, null, 7, null);
if (document.getElementById("mark") == null) {
result3.snapshotItem(0).insertAdjacentHTML('afterend', '<input type="button" value="登録" id="mark">');
}
var result4 = document.evaluate('id("mark")', document, null, 7, null);
result4.snapshotItem(0).addEventListener('click', function () {
var d_url = location.href;
var s_url = para_del(d_url);
if (s_url != "https://www.youtube.com/feed/history") {
if (window.confirm("アドレスバーに" + s_url + "から始まる文字列が表示されていますか?\n異なる場合はキャンセルを押してください。\nリロードを行います")) {
localStorage.setItem(s_url, moment().format("YYYY-MM-DD"));
alert("ローカルストレージにこの動画のキーを登録しました");
} else {
location.reload();
}
}
});
//検索処理と書き出し
if (document.getElementById("write") == null) {
result3.snapshotItem(0).insertAdjacentHTML('afterend', '<input type="button" value="表示" id="write">');
}
var result5 = document.evaluate('id("write")', document, null, 7, null);
result5.snapshotItem(0).addEventListener('click', function () {
var result = document.evaluate('//a[@id="video-title"]', document, null, 7, null);
var result2 = document.evaluate('//div[@id="metadata-line"]', document, null, 7, null);
for (var i = 0; i < result.snapshotLength; i++) {
var n_url = result.snapshotItem(i).href;
var nr_url = para_del(n_url);
if (nr_url in localStorage) {
var to = moment();
var from = moment(localStorage.getItem(nr_url), "YYYY-MM-DD");
if (moment(from).fromNow() != moment().startOf('day').fromNow()) {
if (to.diff(from, 'day') == 1) {
result2.snapshotItem(i).insertAdjacentHTML("afterbegin", to.diff(from, 'day') + " day ago ");
} else {
result2.snapshotItem(i).insertAdjacentHTML("afterbegin", to.diff(from, 'day') + " days ago ");
}
} else {
result2.snapshotItem(i).insertAdjacentHTML("afterbegin", "Today ");
}
}
}
});
- Permalink
- このページへの個別リンクです。
- RAW
- 書かれたコードへの直接のリンクです。
- Packed
- 文字列が圧縮された書かれたコードへのリンクです。
- Userscript
- Greasemonkey 等で利用する場合の .user.js へのリンクです。
- Loader
- @require やソースコードが長い場合に多段ロードする Loader コミのコードへのリンクです。
- Metadata
- コード中にコメントで @xxx と書かれたメタデータの JSON です。