Greasy Fork is available in English.

Faster Media

Set Youtube & Overcast PlaybackRate to 1.6 by default

2017-07-16 يوللانغان نەشرى. ئەڭ يېڭى نەشرىنى كۆرۈش.

// ==UserScript==
// @name         Faster Media
// @namespace    http://tampermonkey.net/
// @version      0.2.9.7
// @description  Set Youtube & Overcast PlaybackRate to 1.6 by default
// @author       Decradish
// @match        *www.youtube.com/watch?v=*
// @match        *overcast.fm/+*
// @match        *v.youku.com/v_show/id_*
// @grant        none
// ==/UserScript==

(function() {
	'use strict';

    function delegate(parent, eventType, selector, fn)  
    {  
        //参数处理  
        if(typeof parent === 'string')  
        {  
            var parent = document.getElementById(parent);  
            !parent && console.log('parent not found');  
        }  
  
        if(typeof selector !== 'string')  
        {  
            console.log('selector is not string');  
        }  
          
        if(typeof fn !== 'function')  
        {  
             console.log('fn is not function');  
        }  
          
        function handle(e){  
            //获取event对象  
            //标准DOM方法事件处理函数第一个参数是event对象  
            //IE可以使用全局变量window.event  
            var evt = window.event ? window.event : e;  
          
            //获取触发事件的原始事件源  
            //标准DOM方法是用target获取当前事件源  
            //IE使用evt.srcElement获取事件源  
            var target = evt.target || evt.srcElement;  
          
            //获取当前正在处理的事件源  
            //标准DOM方法是用currentTarget获取当前事件源  
            //IE中的this指向当前处理的事件源  
            var currentTarget= e ? e.currentTarget : this;
  
            if(target.id === selector || target.className.indexOf(selector) != -1){  
                fn.call(target);  
            }  
        }  
          
        parent[eventType]=handle;  
    }

	var iPlaybackRate = 1.6, //rate
		tmVideo = document.getElementsByTagName("video")[0],
		tmAudio = document.getElementsByTagName("audio")[0],
		tmMedia = false,
		youkuDom = document.getElementById('module_basic_player'); //优酷

		console.log('youkuDom: ', youkuDom)
		console.log('youkuDom.length: ', youkuDom.length)
	if(youkuDom){
		delegate('module_basic_player', 'onplay', 'video', function(){
			console.log('oooookkkkk')
			this.playbackRate = iPlaybackRate;   
		}); 
		return false;
	}

		console.log('``````tmVideo``````: ', tmVideo);
	if(!!tmVideo){
		tmMedia = tmVideo;

		var youTubePlayBtn = document.getElementsByClassName('ytp-play-button')

		if(youTubePlayBtn.length > 0){
			document.getElementsByClassName('ytp-play-button')[0].focus()
		}
	}

	if(!!tmAudio){
		tmMedia = tmAudio;

		document.onkeydown = function(e) {
			var keyCode = e.keyCode || e.which || e.charCode;

			if(keyCode == 32) {
				tmMedia.paused ? tmMedia.play() : tmMedia.pause();
				e.preventDefault();
				return false;
			}
		}
	}

	if(!tmMedia){
		return false;
	}

	tmMedia.playbackRate = iPlaybackRate;

	tmMedia.onplay = function(){
		tmMedia.playbackRate = iPlaybackRate;
	};

	tmMedia.oncanplay = function(){
		tmMedia.playbackRate = iPlaybackRate;
	};
})();