-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathproxerhdvideocontrols.user.js
More file actions
156 lines (146 loc) · 4.53 KB
/
Copy pathproxerhdvideocontrols.user.js
File metadata and controls
156 lines (146 loc) · 4.53 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
// ==UserScript==
// @name Proxer.me HD-Video Controls
// @namespace http://stream.proxer.me
// @version 1.2
// @description Diese Erweiterung fügt den Proxer HD Videos zusätzliche Kontrolloptionen hinzu.
// @author Desnoo
// @include http://stream.proxer.me/*
// @include https://stream.proxer.me/*
// @run-at document-end
// ==/UserScript==
var volumeCookieName = "hd-vol";
var volumeStep = 0.01;
var durationProgressStep = 5;
var skipDurationOpening = 70;
var space = 32;
var arrowUp = 38;
var arrowDown = 40;
var arrowLeft = 37;
var arrowRight = 39;
var k = 75;
var l = 76;
document.domain = 'proxer.me';
$(document).ready(function (e) {
var isFullScreen = false;
var $video = $('video');
if ($video[0] === undefined) {
console.log('Video reference not found.');
return;
}
var videoReference = $video[0];
setVolumeByCookie(videoReference);
$video.on('volumechange', function(e){
document.cookie = volumeCookieName + "=" + videoReference.volume;
});
$video.on('canplay', function () {
$video.on('SkipTime', function (e, timeToSkip) {
videoReference.currentTime += timeToSkip;
$video.off('SkipTime');
});
});
$video.on('click', function (e) {
togglePlay();
});
$video.on('dblclick', function (e) {
toggleFullScreen();
});
$(document).keydown(function (e) {
switch (e.which) {
case arrowUp:
videoReference.volume = Math.min(videoReference.volume + volumeStep, 1);
break;
case arrowDown:
videoReference.volume = Math.max(videoReference.volume - volumeStep, 0);
break;
}
});
$(document).keyup(function (e) {
switch (e.which) {
case space:
togglePlay();
break;
case k:
$video.trigger('SkipTime', [
- skipDurationOpening
]);
break;
case l:
$video.trigger('SkipTime', [
skipDurationOpening
]);
break;
case arrowLeft:
$video.trigger('SkipTime', [
- durationProgressStep
]);
//videoReference.currentTime = Math.max(videoReference.currentTime - durationProgressStep,videoReference.currentTime);
break;
case arrowRight:
$video.trigger('SkipTime', [
durationProgressStep
]);
//videoReference.currentTime = Math.min(videoReference.currentTime + durationProgressStep,videoReference.currentTime);
break;
}
});
// Entering fullscreen mode
$video.bind('webkitfullscreenchange mozfullscreenchange fullscreenchange MSFullscreenChange', function (e) {
var state = document.fullScreen || document.mozFullScreen || document.webkitIsFullScreen || document.msFullscreenElement;
var event = state ? 'FullscreenOn' : 'FullscreenOff';
$video.trigger(event);
});
$video.on('FullscreenOn', function (e) {
videoReference.play();
isFullScreen = true;
});
$video.on('FullscreenOff', function (e) {
isFullScreen = false;
});
// toggles play/pause mode
function togglePlay() {
if (videoReference.paused) {
videoReference.play();
} else {
videoReference.pause();
}
}
// toggle fullscreen mode
function toggleFullScreen() {
if (!isFullScreen) { // current working methods
if (document.documentElement.requestFullscreen) {
videoReference.requestFullscreen();
} else if (document.documentElement.msRequestFullscreen) {
videoReference.msRequestFullscreen();
} else if (document.documentElement.mozRequestFullScreen) {
videoReference.mozRequestFullScreen();
} else if (document.documentElement.webkitRequestFullscreen) {
videoReference.webkitRequestFullscreen(Element.ALLOW_KEYBOARD_INPUT);
}
} else {
if (document.exitFullscreen) {
document.exitFullscreen();
} else if (document.msExitFullscreen) {
document.msExitFullscreen();
} else if (document.mozCancelFullScreen) {
document.mozCancelFullScreen();
} else if (document.webkitExitFullscreen) {
document.webkitExitFullscreen();
}
}
}
// checks and evaluates volume cookie
function setVolumeByCookie(_VideoRef){
var volume = getCookie(volumeCookieName);
videoReference.volume = volume !== "" ? volume : videoReference.volume;
}
function getCookie(cname) {
var name = cname + "=";
var ca = document.cookie.split(';');
for(var i=0; i<ca.length; i++) {
var c = ca[i];
while (c.charAt(0)===' ') c = c.substring(1);
if (c.indexOf(name) === 0) return c.substring(name.length,c.length);
}
return "";
}
});