summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--.gitmodules3
-rw-r--r--krebs/nixpkgs-unstable.json6
-rw-r--r--krebs/nixpkgs.json6
-rw-r--r--lass/2configs/mpv.nix75
m---------submodules/brockman0
5 files changed, 83 insertions, 7 deletions
diff --git a/.gitmodules b/.gitmodules
index 5b4336510..aee01051a 100644
--- a/.gitmodules
+++ b/.gitmodules
@@ -7,3 +7,6 @@
[submodule "lass/5pkgs/autowifi"]
path = lass/5pkgs/autowifi
url = https://github.com/Lassulus/autowifi
+[submodule "submodules/brockman"]
+ path = submodules/brockman
+ url = https://github.com/kmein/brockman.git
diff --git a/krebs/nixpkgs-unstable.json b/krebs/nixpkgs-unstable.json
index 20bb6c107..1600d6f4a 100644
--- a/krebs/nixpkgs-unstable.json
+++ b/krebs/nixpkgs-unstable.json
@@ -1,7 +1,7 @@
{
"url": "https://github.com/NixOS/nixpkgs-channels",
- "rev": "100012e55bc2a82fc680cba31a426ad38ead6fab",
- "date": "2020-01-12T00:04:23+00:00",
- "sha256": "0cvnx852n0krci9hi1rpcldx1kcpmvi5ihf2awvwfayvzp4wic8z",
+ "rev": "55beed9922c2f6b030af61ca7e33bd47850c68f2",
+ "date": "2020-02-26T03:53:16-05:00",
+ "sha256": "0jxkb3bl7axa6vmfsfdfx4mxv6wx0pc8iiwgrw2qh8wxhlhbylks",
"fetchSubmodules": false
}
diff --git a/krebs/nixpkgs.json b/krebs/nixpkgs.json
index 769bacbe0..e0b37d1fc 100644
--- a/krebs/nixpkgs.json
+++ b/krebs/nixpkgs.json
@@ -1,7 +1,7 @@
{
"url": "https://github.com/NixOS/nixpkgs-channels",
- "rev": "c49da6435f314e04fc58ca29807221817ac2ac6b",
- "date": "2020-02-07T12:52:16+01:00",
- "sha256": "17zsqhaf098bvcfarnq0h9601z6smkfd1kz1px6xfg6xqfmr80r7",
+ "rev": "b7bbc6d37878ed00b6467b574b02e840279f7d3d",
+ "date": "2020-02-26T11:51:29+01:00",
+ "sha256": "02q10jgi6m0vak3amb50ifw1pj82i17hs0npdkig7lsp8w3is7jq",
"fetchSubmodules": false
}
diff --git a/lass/2configs/mpv.nix b/lass/2configs/mpv.nix
index b3de42c7b..7dc43a9ee 100644
--- a/lass/2configs/mpv.nix
+++ b/lass/2configs/mpv.nix
@@ -2,11 +2,84 @@
let
+ download_subs = pkgs.writers.writePython3 "download_sub" {
+ libraries = [ pkgs.python3Packages.subliminal ];
+ } ''
+ from subliminal import download_best_subtitles, scan_video
+ from babelfish import Language
+ import sys
+
+ video_filename = sys.argv[1]
+
+ vid = scan_video(video_filename)
+ sub = download_best_subtitles([vid], {Language('eng')})[vid][0]
+
+ filename = '/tmp/' + vid.title + '.srt'
+
+ with open(filename, 'wb+') as file:
+ file.write(sub.content)
+
+ print(filename)
+ '';
+
+ autosub = pkgs.writeText "autosub.lua" ''
+ -- Requires Subliminal version 1.0 or newer
+ -- Make sure to specify your system's Subliminal location below:
+ local utils = require 'mp.utils'
+
+ -- Log function: log to both terminal and mpv OSD (On-Screen Display)
+ function log(string, secs)
+ secs = secs or 2 -- secs defaults to 2 when the secs parameter is absent
+ mp.msg.warn(string) -- This logs to the terminal
+ mp.osd_message(string, secs) -- This logs to mpv screen
+ end
+
+ function download()
+ log('Searching subtitles ...', 10)
+ table = { args = {"${download_subs}", mp.get_property('path')} }
+ result = utils.subprocess(table)
+ if result.error == nil then
+ -- remove trailing newline from subtitle filename
+ filename = string.gsub(result.stdout, "\n", "")
+ log(filename)
+ mp.commandv('sub_add', filename)
+ log('Subtitles ready!')
+ else
+ log('Subtitles failed downloading')
+ end
+ end
+
+ -- Control function: only download if necessary
+ function control_download()
+ duration = tonumber(mp.get_property('duration'))
+ if duration < 900 then
+ mp.msg.warn('Video is less than 15 minutes\n', '=> NOT downloading any subtitles')
+ return
+ end
+ -- There does not seem to be any documentation for the 'sub' property,
+ -- but it works on both internally encoded as well as external subtitle files!
+ -- -> sub = '1' when subtitles are present
+ -- -> sub = 'no' when subtitles are not present
+ -- -> sub = 'auto' when called before the 'file-loaded' event is triggered
+ sub = mp.get_property('sub')
+ if sub == '1' then
+ mp.msg.warn('Sub track is already present\n', '=> NOT downloading other subtitles')
+ return
+ end
+ mp.msg.warn('No sub track was detected\n', '=> Proceeding to download subtitles:')
+ download()
+ end
+
+ mp.register_event('file-loaded', control_download)
+ mp.add_key_binding('S', "download_subs", download)
+ '';
+
mpv = pkgs.symlinkJoin {
name = "mpv";
paths = [
(pkgs.writeDashBin "mpv" ''
- exec ${pkgs.mpv}/bin/mpv --no-config "$@"
+ exec ${pkgs.mpv}/bin/mpv --no-config --script=${autosub} "$@"
+ # exec ${pkgs.mpv}/bin/mpv --no-config "$@"
'')
pkgs.mpv
];
diff --git a/submodules/brockman b/submodules/brockman
new file mode 160000
+Subproject 1a5b3faa1185f8c0e7861ebadf07e48ac4bdf7e