[d | an-b-bro-fr-gf-hr-l-m-maid-med-mi-mu-ne-o-old_o-p-ph-r-s-sci-sp-t-tran-tv-w-x | bg-vg | au-mo-tr | a-aa-abe-azu-c-dn-fi-hau-jp-ls-ma-me-rm-sos-tan-to-vn | misc-tenma-vndev | dev-stat]
[Burichan] [Futaba] [Gurochan] [Tomorrow] [Архив-Каталог-RSS] [Главная]

Файл: 1430932964314.png -(80 KB, 586x314, 1430932964314.png)
80 No.180646  

Суп, /s. Хочу научить mpv подгружать субтитры из поддиректорий. При запуске ему можно передать относительный путь к папкам вида: --sub-paths=папкассабами1:папкас_сабами_2 и он сам найдет там субтитры с подходящим именем. Слепил такую вот хауту:

#!/bin/bash
``
for entry in **
do
if [ -d "$entry" ];then
array[ $i ]="$entry"
let ++i
fi
done
``
subpaths=$(IFS=$':'; echo "${array[*]}")
mpv --sub-paths "$subpaths" "$1"

И это даже работает, но только при запуске из терминала. А вот если в pсmanfm настроить открытие видеофайлов этим скриптом, то сабы почему-то не загружается. Была мысля, что рабочая директория неправильная, но cd "$(dirname "$1")" добавленный в начало не помогает. В чём может быть дело?

>> No.180647  

>>180646
Разметка немного поломалась. Двойных апострофов в коде, разумеется, быть не должно.

>> No.180648  

.config/mpv/mpv.conf

sub-paths="СУБТИТРЫ:МОИСУБТИТРЫ:КЛЁВЫЕ СУБТИТРЫ:СУБТИТРЫ ОТ VASYAN-TEAM:ETC:ETC:ETC"

>> No.180651  

>>180648 $sub-paths .= q(:.:..);

>> No.180654  

>>180648
>>180651
Если бы название директорий было типовым, то можно было, но их называют как угодно. Посмотрел в папки с анимой и нашёл там такие, например, варианты:

SUB
sub
Rus.sub
RUS Subs
ass srt
Russian Subtitles [Willy & Hollow]
Субтитры от [Glen or Glenda & Drakonika & laci]
RUS Sub от Dreamers Team
Rus subs [Dusker & Тюлень]
[YakuSub Studio]
Rinne-subs
Timecraft & GMC
Rus Subs/toph
Rus Subs/Невафильм
sub/AniPlay
sub/nnm-club

Если это делать вручную, то придётся почти для каждого тайтла sub-paths дополнять. Не хотет.

>> No.180655  

>>180654
хочешь сказать, что во всех комплектах сабов названия совпадают с названиями видеофайлов?

>> No.180656  

>>180655
Это уже другая проблема. Но если сабы идут в комплекте (анима с рутрекера, например), то имена файлов обычно приведены в соответствие.

>> No.180658  
Файл: 13453568868391.png -(1176 KB, 999x999, 13453568868391.png)
1176

В любом случае, самый простой способ получить список поддиректорий в виде subdir1:subdir2: , имхо, выглядит как-то так
find . -maxdepth 1 -type d -printf "%p:"

запихать вызов subshell'a в mpv.conf, к сожалению, не удалось, так что реализовать твой, имхо неюзабельный функционал, можно alias'ами
alias smpv='mpv --sub-paths=$(find . -type d -printf "%p:")'
или если хочешь проверять поддиректории только на один уровень
alias smpv='mpv --sub-paths=$(find . -maxdepth 1 -type d -printf "%p:")'

>> No.180663  

>>180658
Ничего себе, одной строчкой! Только вывод финда в кавычках подать надо, а то путь ломается пробелами: alias smpv='mpv --sub-paths="$(find . -type d -printf "%p:")"' И точки ещё эти, я из-за них find и не стал использовать, так как не разобрался, как их убрать. Бака же. Но оно оказывается и с точками работает, разве что субтитры в одной директории с видеофайлом загружаются дважды из-за .:

Но таки алиас ведь будет работать только в консоли? Или есть способ его pcmanfm`у подсунуть?

>> No.180665  

>>180664
Т.е. как обычный баш-скрипт?

#!/bin/bash
mpv --sub-paths="$(find . -type d -printf "%p:")" "$1"

Так? Положил в /usr/local/bin. В терминале работает, а через pcmanfm почему-то даже окно mpv не открывается.

>> No.180666  

>>180663
вместо alias'a можно положить одноименный скрипт из двух строчек в одной из директорий $path, а вместо . нужно брать dirname твоего видеофайла (что-то типа $(dirname $1))

>> No.180667  

>>180665
Видимо проблема в том, что я не знаю что такое pcmanfm

>> No.180668  

>>180656 алгоритм Яро-Винклера должен с ней справиться, правда, возможно придётся разбить название на слова

>> No.180669  
Файл: c503059a027761db43a96791602adf10.png -(323 KB, 596x494, c503059a027761db43a96791602adf10.png)
323

>>180667
Таки проблема в pcmanfm. Накатил thunar, в нём всё работает. Ну, можно и на thunar переползти, я не против. Он почти такой же. А вот $(dirname $1) оказался не нужен, с ним почему-то не фурычит.

Остался только один момент. Можно ли из вывода find: .:./Sub1:./Sub2:./Sub3: убрать первую точку, указывающую на текущую директорию?

>>180668
Эта задача баке не по зубам. Пойду лучше мороженку наверну. Кажется, снаружи сегодня тепло.

>> No.180670  
Файл: 13438571088158.png -(1173 KB, 1378x2067, 13438571088158.png)
1173

>>180669
попробуй добавить к списку аргументов find -mindepth 1
c: ban

>> No.180671  

>>180670
Оказывается, для -printf есть директива %P, не выводящая точек. В итоге получилось так:
mpv --sub-paths="$(find . -mindepth 1 -maxdepth 2 -type d -printf "%P:")" "$1"

Спасибо за помощь!




[d | an-b-bro-fr-gf-hr-l-m-maid-med-mi-mu-ne-o-old_o-p-ph-r-s-sci-sp-t-tran-tv-w-x | bg-vg | au-mo-tr | a-aa-abe-azu-c-dn-fi-hau-jp-ls-ma-me-rm-sos-tan-to-vn | misc-tenma-vndev | dev-stat]
[Burichan] [Futaba] [Gurochan] [Tomorrow] [Архив-Каталог-RSS] [Главная]