From ea00c35f4120ecd366e7a7c791997f64e8fdb23a Mon Sep 17 00:00:00 2001 From: chayleaf Date: Wed, 19 Apr 2023 01:58:58 +0700 Subject: [PATCH] subserv: custom changes --- home/pkgs/mpv-scripts/default.nix | 2 +- home/pkgs/mpv-scripts/subserv/custom.patch | 22 ++++++++ .../{subserv.nix => subserv/default.nix} | 22 ++++---- home/pkgs/mpv-scripts/subserv/settings.patch | 50 +++++++++++++++++++ 4 files changed, 86 insertions(+), 10 deletions(-) create mode 100644 home/pkgs/mpv-scripts/subserv/custom.patch rename home/pkgs/mpv-scripts/{subserv.nix => subserv/default.nix} (65%) create mode 100644 home/pkgs/mpv-scripts/subserv/settings.patch diff --git a/home/pkgs/mpv-scripts/default.nix b/home/pkgs/mpv-scripts/default.nix index a014dc3..9f7aebc 100644 --- a/home/pkgs/mpv-scripts/default.nix +++ b/home/pkgs/mpv-scripts/default.nix @@ -2,5 +2,5 @@ , ... }: { - subserv = callPackage ./subserv.nix { }; + subserv = callPackage ./subserv { }; } diff --git a/home/pkgs/mpv-scripts/subserv/custom.patch b/home/pkgs/mpv-scripts/subserv/custom.patch new file mode 100644 index 0000000..c770273 --- /dev/null +++ b/home/pkgs/mpv-scripts/subserv/custom.patch @@ -0,0 +1,22 @@ +diff --git a/subserv.html b/subserv.html +index 1fcb5a8..d4b65f8 100644 +--- a/subserv.html ++++ b/subserv.html +@@ -51,6 +51,7 @@ function updateText() { + return; + } + ++ new_subs_elem.innerHTML = resp.subs[resp.subs.length-1]; + if (new_subs_elem.innerHTML != "") { + old_subs_new_node = document.createElement("div"); + old_subs_new_node.classList.add("old-sub-el"); +@@ -63,8 +64,8 @@ function updateText() { + old_subs_new_node.innerHTML = new_subs_elem.innerHTML; + old_subs_elem.appendChild(old_subs_new_node); + old_subs_new_node.scrollIntoView(); ++ new_subs_elem.innerHTML = ""; + } +- new_subs_elem.innerHTML = resp.subs[resp.subs.length-1]; + + for (i = 0; i < resp.subs.length-1; i++) { + if (resp.subs[i] != "") { diff --git a/home/pkgs/mpv-scripts/subserv.nix b/home/pkgs/mpv-scripts/subserv/default.nix similarity index 65% rename from home/pkgs/mpv-scripts/subserv.nix rename to home/pkgs/mpv-scripts/subserv/default.nix index 190fbb8..48ffc1e 100644 --- a/home/pkgs/mpv-scripts/subserv.nix +++ b/home/pkgs/mpv-scripts/subserv/default.nix @@ -1,7 +1,8 @@ { stdenv +, substituteAll , fetchFromGitHub , mpv-unwrapped -, port ? 1337 +, port ? 8080 , secondary ? false , ... }: @@ -14,18 +15,21 @@ stdenv.mkDerivation { rev = "08e312f02f3d3608d61944247d39148c34215f75"; sha256 = "sha256-CXyp+AAgyocAEbhuMMPVDlAiocozPe8tm/dIUofCRL8="; }; + patches = [ + # patch for setting port and whether secondary subs should be shown + # (also removes verbose logs) + (substituteAll { + src = ./settings.patch; + inherit port; + sub_text = if secondary then "secondary-sub-text" else "sub-text"; + }) + # my custom changes + ./custom.patch + ]; buildInputs = [ mpv-unwrapped ]; installFlags = [ "SCRIPTS_DIR=$(out)/share/mpv/scripts" ]; stripDebugList = [ "share/mpv/scripts" ]; passthru.scriptName = "subserv.so"; - patchPhase = '' - sed -i 's%%%' subserv.c - sed -i 's%printf("Hello%// printf("Hello%' subserv.c - sed -i 's%printf("Got event%// printf("Got event%' subserv.c - sed -i 's/PORT 8080/PORT ${builtins.toString port}/' subserv.c - '' + (if secondary then '' - sed -i 's/sub-text/secondary-sub-text/g' subserv.c - '' else ""); buildPhase = '' gcc -o subserv.so subserv.c -shared -fPIC ''; diff --git a/home/pkgs/mpv-scripts/subserv/settings.patch b/home/pkgs/mpv-scripts/subserv/settings.patch new file mode 100644 index 0000000..1f6d415 --- /dev/null +++ b/home/pkgs/mpv-scripts/subserv/settings.patch @@ -0,0 +1,50 @@ +diff --git a/subserv.c b/subserv.c +index 82f76a4..bd74cef 100644 +--- a/subserv.c ++++ b/subserv.c +@@ -16,10 +16,11 @@ + #include + + #include +-#include ++#include + + #define MAX(a,b) (((a)>(b))?(a):(b)) +-#define PORT 8080 ++#define PORT @port@ ++#define SUB_TEXT "@sub_text@" + + // modifies the buffer, so watch out + // return the number of words in the line and stores pointers to the individual words in word_pointers +@@ -206,7 +207,6 @@ void send_subs(int client_socket) { + if (reccnt == 0) { + return; + } +- printf("read_buf %s\n\n", read_buf); + + char * words[3]; + int num_words = split_line_into_words(read_buf, words, 3); +@@ -305,13 +305,10 @@ int mpv_open_cplugin(mpv_handle *handle) { + return 0; + } + +- printf("Hello world from C plugin '%s'!\n", mpv_client_name(handle)); +- +- int obs_ret = mpv_observe_property(handle, 0, "sub-text", MPV_FORMAT_STRING); ++ int obs_ret = mpv_observe_property(handle, 0, SUB_TEXT, MPV_FORMAT_STRING); + + while (1) { + mpv_event *event = mpv_wait_event(handle, -1); +- printf("Got event: %d\n", event->event_id); + + if (event->event_id == MPV_EVENT_SHUTDOWN) + break; +@@ -319,7 +316,7 @@ int mpv_open_cplugin(mpv_handle *handle) { + if (event->event_id == MPV_EVENT_PROPERTY_CHANGE) { + mpv_event_property* event_prop = (mpv_event_property*)event->data; + +- if (strcmp(event_prop->name, "sub-text") == 0) { ++ if (strcmp(event_prop->name, SUB_TEXT) == 0) { + if (event_prop->data == NULL) + continue; +