Mercurial Hosting > freedit
diff src/test/tiny.html @ 28:d9d7aa2a79db
more video types
author | Franklin Schmidt <fschmidt@gmail.com> |
---|---|
date | Thu, 21 Jul 2022 23:44:49 -0600 |
parents | 6871eec2cf4c |
children | 8ff35379cc89 |
line wrap: on
line diff
--- a/src/test/tiny.html Thu Jul 21 00:01:46 2022 -0600 +++ b/src/test/tiny.html Thu Jul 21 23:44:49 2022 -0600 @@ -6,29 +6,94 @@ <style> </style> <script> - var youtubePtn1 = new RegExp('https://youtu.be/([a-zA-Z0-9_-]+)(?:\\?t=([0-9]+))?'); - var youtubePtn2 = new RegExp('https://www.youtube.com/watch\\?v=([a-zA-Z0-9_-]+)(?:\\?t=([0-9]+)s)?'); - var bitchutePtn = new RegExp('https://www.bitchute.com/video/([a-zA-Z0-9]+)/'); - var rumblePtn = new RegExp('https://rumble.com/embed/[a-z0-9]+/\\?pub=[a-z0-9]+'); - var url2; + function videoIframe(url) { + return '<iframe data-video="'+url+'" width="560" height="315" frameborder="0" allowfullscreen src="'+url+'"></iframe>'; + } + + var videoHandlers = {}; + { + let ptn1 = new RegExp('https://youtu.be/([a-zA-Z0-9_-]+)(?:\\?t=([0-9]+))?'); + let ptn2 = new RegExp('https://www.youtube.com/watch\\?v=([a-zA-Z0-9_-]+)(?:\\?t=([0-9]+)s)?'); + videoHandlers.youtube = function(url) { + let result = url.match(ptn1) || url.match(ptn2); + if( result ) { + url = 'https://www.youtube.com/embed/' + result[1]; + if( result[2] ) + url += '?start=' + result[2]; + return videoIframe(url); + } + } + } + { + let ptn = new RegExp('https://rumble.com/embed/[a-z0-9]+/\\?pub=[a-z0-9]+'); + videoHandlers.rumble = function(url) { + if( url.match(ptn) ) { + return videoIframe(url); + } + } + } + { + let ptn = new RegExp('https://www.bitchute.com/video/([a-zA-Z0-9]+)/'); + videoHandlers.bitchute = function(url) { + let result = url.match(ptn); + if( result ) { + url = 'https://www.bitchute.com/embed/' + result[1]; + return videoIframe(url); + } + } + } + { + let ptn = new RegExp('https://vimeo.com/([0-9]+)'); + videoHandlers.vimeo = function(url) { + let result = url.match(ptn); + if( result ) { + url = 'https://player.vimeo.com/video/' + result[1]; + return videoIframe(url); + } + } + } + { + let ptn = new RegExp('https://dai.ly/([a-z0-9]+)'); + videoHandlers.dailymotion = function(url) { + let result = url.match(ptn); + if( result ) { + url = 'https://www.dailymotion.com/embed/video/' + result[1]; + return videoIframe(url); + } + } + } + { + let ptn = new RegExp('https://www.tiktok.com/[^/]+/video/([0-9]+)'); + videoHandlers.tiktok = function(url) { + let result = url.match(ptn); + if( result ) { + let html = '<blockquote class="tiktok-embed" data-video-id="'+result[1]+'" style="max-width: 560px; margin-left: 0;"><section></section></blockquote>'; + //html += '<script async src="https://www.tiktok.com/embed.js"></'+'script>'; + return html; + } + } + } + { + let ptn = new RegExp('\\.[a-zA-Z0-9]+$'); + videoHandlers.file = function(url) { + if( url.match(ptn) ) { + return '<video controls width="560" height><source src="'+url+'"></video>'; + } + } + } + + function videoUrlToHtml(url) { + for (let key in videoHandlers) { + let handle = videoHandlers[key]; + let html = handle(url); + if(html) return html; + } + return '<a data-video="'+url+'" href="'+url+'">'+url+'</a>'; + } + console.log(videoUrlToHtml('https://www.tiktok.com/@chantelleef/video/7112118342181276933?is_from_webapp=1&sender_device=pc&web_id=7073254106622838318')); function media_url_resolver(data,resolve,reject) { - let html; - let url = data.url; - url2 = url; - let result; - if( result = url.match(youtubePtn1) || url.match(youtubePtn2) ) { - html = '<iframe data-video="'+url+'" width="560" height="315" src="https://www.youtube.com/embed/' + result[1]; - if( result[2] ) - html += '?start=' + result[2] - html += '" frameborder="0" allowfullscreen></iframe>'; - } else if( result = url.match(bitchutePtn) ) { - html = '<iframe data-video="'+url+'" width="560" height="315" scrolling="no" frameborder="0" style="border: none;" src="https://www.bitchute.com/embed/' + result[1] + '/"></iframe>'; - } else if( url.match(rumblePtn) ) { - html = '<iframe data-video="'+url+'" width="560" height="315" frameborder="0" allowfullscreen src="' + url + '"></iframe>'; - } else { - html = '<a data-video="'+url+'" href="'+url+'">'+url+'</a>'; - } + let html = videoUrlToHtml(data.url); resolve({ html: html }); }