var pageNicoNicoHacked = false function loadYouTube(url) { /* */ var iframe = document.createElement('iframe') iframe.frameBorder = 0 iframe.allowFullScreen = true iframe.allow = "accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" iframe.width = 560 iframe.height = 315 iframe.src = url //iframe.target='_parent' return iframe } function unloadYouTube(parent) { var iframeElem = parent.querySelector('iframe') if (iframeElem) { parent.removeChild(iframeElem) } } // so we want to single a single container element // so we can make clean up more automated and easier // and we can embed all elements in a single too // like to get rid of parent but we do lose some flexibility function loadNicoNico(parent, url) { var videoid = url.replace('http://www.nicovideo.jp/watch/', '') if (location.protocol === 'https:') { // gonna have to ajax load the SOB and hack up the URLs in the script postscribe(parent, '') return false } } // 17k if you have a single niconico embed... // maybe can move to onhover later if (!pageNicoNicoHacked && elems.length) { var hackScript=document.createElement('script') hackScript.type='text/javascript' hackScript.src='https://cdnjs.cloudflare.com/ajax/libs/postscribe/2.0.6/postscribe.min.js' if (elem.parentNode) { elem.parentNode.parentNode.appendChild(hackScript) pageNicoNicoHacked=true } } var list = ['tiktok', 'bitchute'] // key, thumbs, thumb relay, title... // library needed... var dataMap = { tiktok: { inserter: loadTikTok }, bitchute: { inserter: loadBitchute } } for(var i in list) { var type = list[i] var typeInfo = dataMap[type] // console.log('type', type, 'typeInfo', typeInfo) var inserter = typeInfo.inserter var elems = document.querySelectorAll('.' + type + '_wrapper a') for(var j in elems) { var elem = elems[j] // capture scope function scopeMe(inserter) { elem.onclick=function() { if (this.innerText=='Embed') { this.elem = inserter(this.parentNode, this.href) //parent.appendChild(this.elem) this.innerText='Unembed' } else { //unloadTiktok(parent) parent.removeChild(this.elem) this.innerText = 'Embed' } return false } } scopeMe(inserter) } } } document.addEventListener("DOMContentLoaded", function(event) { //console.log('embed detects page is loaded') updateEmbedElements() })