分類
Javascript

Youtube影片重覆播放Bookmarklet

有時候需要重覆播放 youtube 上的影片, 當然可以透過一些參數來進行設定, 不過一時要使用的話, 可以透過這個 bookmarklet 來進行, 程式碼如下:

javascript: (function () {
    var url = location.href;
    var videoid = '';
    var regExp = /^.*((youtu.be\/)|(v\/)|(\/u\/\w\/)|(embed\/)|(watch\?))\??v?=?([^#\&\?]*).*/;
    var match = url.match(regExp);
    if (match && match[7].length == 11) {
        videoid = match[7];
    }
    if (videoid != '') {
        var nurl = 'http://youtube.googleapis.com/v/' + videoid + '?loop=1';
        window.open(nurl);
    }
})();

利用這個 bookmarklet 可以在瀏覽 youtube 影片時, 想要重覆播放時, 可以按下這個 bookmarklet 來進行重覆播放, 原理就是將原來的 youtube url 找出影片 id 後, 組合出 url: ​http://youtube.googleapis.com/v/?loop=1 這樣的方式.

另外關於 bookmarklet 的新增方式, 就是直接將網頁上的連結, 拖拉到瀏覽器的書籤區即可.

請到這裡進行安裝: http://sample.diary.tw/youtuberepeat/

上面程式碼中, 找出 youtube video id 的 regular expression 是利用這篇文章中的解答: http://stackoverflow.com/questions/3452546/javascript-regex-how-to-get-youtube-video-id-from-url

—————————-
[2013/1/12 21:04]
今天在IE上測試的時候, 發現直連的URL是無法在IE上直接打開的, 只能藉著一個宿主頁面來做EMBED程式的方式來進行, 調整了一下程式, 使目標頁改為:
http://sample.diary.tw/youtuberepeat/r.html?vid=

即可帶出對應的播放器, 並能在播放後再自動播放, 不過在這段測試時, 發現這個 loop=1 的參數有時有功能, 有時沒有功能, 在對照了 http://www.youtuberepeater.com/ 網站時, 發現再加一個參數能確保正確 loop, 就是 version=2 的參數, 在 http://sample.diary.tw/youtuberepeat/ 上的兩個 bookmarklet 一併做調整, 也就是原本的改為
http://youtube.googleapis.com/v/?loop=1&version=2
而新做的第二個有宿主的bookmarklet 中的 embed參數也補上.