aboutsummaryrefslogtreecommitdiffstats
path: root/src/client/Player.hx
diff options
context:
space:
mode:
authorRblSb <msrblsb@gmail.com>2025-01-29 20:37:50 +0300
committerRblSb <msrblsb@gmail.com>2025-01-29 20:42:01 +0300
commit382f9b2ebedca905028341825350a0fa69d88673 (patch)
treef627cd270d893452c13f3d0916ea75673c39607e /src/client/Player.hx
parent0592564264fff57ccfd9677957196951f9f1c6cf (diff)
Cleanup
- PWA support (needs https) - Optimize websocket responses - Support `/ad` for youtube cache - New icon!
Diffstat (limited to 'src/client/Player.hx')
-rw-r--r--src/client/Player.hx30
1 files changed, 17 insertions, 13 deletions
diff --git a/src/client/Player.hx b/src/client/Player.hx
index 92f34e9..e5ea87c 100644
--- a/src/client/Player.hx
+++ b/src/client/Player.hx
@@ -4,7 +4,7 @@ import Types.PlayerType;
import Types.VideoData;
import Types.VideoDataRequest;
import Types.VideoItem;
-import client.Main.ge;
+import client.Main.getEl;
import client.players.Iframe;
import client.players.Raw;
import client.players.Streamable;
@@ -24,15 +24,15 @@ class Player {
final iframePlayer:IPlayer;
final rawPlayer:IPlayer;
final videoList = new VideoList();
- final videoItemsEl = ge("#queue");
- final playerEl = ge("#ytapiplayer");
+ final videoItemsEl = getEl("#queue");
+ final playerEl = getEl("#ytapiplayer");
var player:Null<IPlayer>;
var isLoaded = false;
var skipSetTime = false;
var skipSetRate = false;
var streamable:Streamable;
- final voiceOverInput:InputElement = cast ge("#voiceoverurl");
+ final voiceOverInput:InputElement = getEl("#voiceoverurl");
var audioTrack:Null<Audio>;
var isAudioTrackLoaded = false;
var needsVolumeReset = false;
@@ -76,7 +76,7 @@ class Player {
}
function initItemButtons():Void {
- final queue = ge("#queue");
+ final queue = getEl("#queue");
queue.onclick = e -> {
final btn:Element = cast e.target;
final item = btn.parentElement.parentElement;
@@ -192,7 +192,7 @@ class Player {
onCanBePlayed();
}
JsApi.fireVideoChangeEvents(item);
- ge("#currenttitle").textContent = item.title;
+ getEl("#currenttitle").textContent = item.title;
}
function setExternalAudioTrack(item:VideoItem):Void {
@@ -248,17 +248,17 @@ class Player {
public function removeVideo():Void {
JsApi.fireVideoRemoveEvents(videoList.currentItem);
player.removeVideo();
- ge("#currenttitle").textContent = Lang.get("nothingPlaying");
+ getEl("#currenttitle").textContent = Lang.get("nothingPlaying");
setPauseIndicator(false);
}
public function setPauseIndicator(isPause:Bool):Void {
if (!main.isSyncActive) return;
final state = isPause ? "pause" : "play";
- final el = ge("#pause-indicator");
+ final el = getEl("#pause-indicator");
el.setAttribute("name", state);
- final el2 = ge("#pause-indicator-portrait");
+ final el2 = getEl("#pause-indicator-portrait");
el2.setAttribute("name", state);
var isVisible = isPause || main.hasLeader();
el2.style.display = isVisible ? "" : "none";
@@ -484,8 +484,8 @@ class Player {
}
function updateCounters():Void {
- ge("#plcount").textContent = '${videoList.length} ${Lang.get("videos")}';
- ge("#pllength").textContent = totalDuration();
+ getEl("#plcount").textContent = '${videoList.length} ${Lang.get("videos")}';
+ getEl("#pllength").textContent = totalDuration();
}
public function getItems():Array<VideoItem> {
@@ -625,8 +625,12 @@ class Player {
public function skipAd():Void {
final item = videoList.currentItem ?? return;
- if (!youtube.isSupportedLink(item.url)) return;
- final id = youtube.extractVideoId(item.url);
+ var itemUrl = item.url;
+ if (!youtube.isSupportedLink(itemUrl)) {
+ itemUrl = itemUrl.replace("/cache/", "youtu.be/");
+ if (!youtube.isSupportedLink(itemUrl)) return;
+ }
+ final id = youtube.extractVideoId(itemUrl);
final url = 'https://sponsor.ajay.app/api/skipSegments?videoID=$id';
final http = new Http(url);
http.onData = text -> {
send patches to the email below
yukais@pinapelz.com
include the subject [PATCH repo_name]
pinapelz.com
homepage