// ==UserScript==
// @name YouTube Title formatted for filename
// @namespace sm
// @version 0.1
// @description reformats the titles of YouTube videos to be windows filename compatible on click.
// @match http*://www.youtube.com/watch*
// @copyright 2020, sm
// ==/UserScript==
// @require http://code.jquery.com/jquery-3.4.1.min.js
console.log("docReady waiting ")
docReady(function() {
// DOM is loaded and ready for manipulation here
console.log("running ")
let count = 1;
setTimeout(function() {
//Code to run After timeout elapses
console.log("finding title ")
console.log("YouTube Title formatter v1.001")
let title = document.querySelector("#container > h1");
title.onclick = function(e){//turn title into button
//your handler here
if(count < 3){//prevent from running too many times
let title2 = document.querySelector("#container > h1");
let newTitle2 = isValid(title2.innerHTML) //pull title again due to js idiosyncrasies
console.log("newTitle == ", newTitle2)
if(newTitle2 != null){
title2.innerHTML = newTitle2
}
console.log(count)
count = count + 1;
}
}
console.log("title == ",title)
function isValid(fname){
console.log("fname type is ", typeof fname);
console.log("fname input is ", fname);
for(let i = 0; i < 20; i++){
fname = fname.replace("&"," and ")
fname = fname.replace("|"," ")
fname = fname.replace("||"," ")
fname = fname.replace(","," ")
fname = fname.replace("?"," ")
fname = fname.replace("!"," ")
fname = fname.replace("@"," ")
//fname = fname.replace("<","(")
// fname = fname.replace(">",")")
fname = fname.replace(".","")
fname = fname.replace("'","")
fname = fname.replace("`","")
fname = fname.replace("/","")
fname = fname.replace("\\","")
fname = fname.replace(":","")
fname = fname.replace(";","")
fname = fname.replace("*","")
fname = fname.replace("^","")
fname = fname.replace("%","")
fname = fname.replace("$","")
fname = fname.replace("#","")
fname = fname.replace("+","")
fname = fname.replace("_","")
fname = fname.replace("’","")
fname = fname.replace("→"," - ")
fname = fname.replace("」"," ")
fname = fname.replace("「"," ")
fname = fname.replace("}",")")
fname = fname.replace("{"," (")
fname = fname.replace(" "," ")
fname = fname.replace("ー","-")
fname = fname.replace("/","-")
fname = fname.replace("『"," (")
fname = fname.replace("』",")")
fname = fname.replace("!","")
fname = fname.replace("【"," (")
fname = fname.replace("】",")")
fname = fname.replace("and amp "," and ")
}
console.log("fname output is ", fname);
return fname
}
}, 2000); //Two seconds will elapse and Code will execute.
});
function docReady(fn) {
// see if DOM is already available
if (document.readyState === "complete" || document.readyState === "interactive") {
// call on next available tick
setTimeout(fn, 1);
} else {
document.addEventListener("DOMContentLoaded", fn);
}
}