kelciour / movies2anki

Convert movies with subtitles to watch them with Anki. Inspired by subs2srs
GNU Affero General Public License v3.0
302 stars 28 forks source link

Проблема при установке, на последнем этапе запуска "python movies2anki.py" #11

Closed niku-pal closed 6 months ago

niku-pal commented 4 years ago

Очень понравилось идея изучения языков при помощи этой программы, но не получается установить её до конца.

Я далёк от программирования, но вроде разобрался и установил через терминал все необходимые дополнения, на последнем 5 этапе запуска "python movies2anki.py" выдаёт ошибку и не находит файл. В своей криворукости я не сомневаюсь и уверен что что то я делаю не правильно. Был бы очень благодарен если подскажете что именно.

macOS High Sierra 10.13.6

Screen Shot 2019-12-15 at 03 27 56

kelciour commented 4 years ago

Да не, думаю, все так делаете. Судя по ошибке, отсутствует Python модуль PyQt4 к Qt4. Просто, Qt4 и PyQt4 устарели, больше не обновляются и не поддерживаются. Можно попробовать установить с помощью команды

brew install cartr/qt4/pyqt

Скорее всего, все должно заработать после этого, если версия Python 2.7.

Можно попробовать чуть устаревшую версию movies2anki, но обновленную для Python 3 и PyQt5, основной функционал остался неизменным, по ссылке https://gist.github.com/kelciour/248c0336da7f882e7b9b25a5af60ea83

Скорее всего, PyQt5 уже установлен, а Python 3 доступен через команду

python3

т.е. если вместо "python movies2anki.py" выполнить команду "python3 movies2anki.py", то, возможно, программа запустится без ошибок.

Последняя версия movies2anki на данный момент доступна в виде аддона для Anki 2.1.

https://ankiweb.net/shared/info/939347702

Необходимо только дополнительно к FFmpeg с помощью brew установить mpv видеоплеер

brew install mpv

либо

brew cask install mpv

тогда mpv будет доступен не только через Terminal, но и в Applications, насколько я понимаю, и сама установка будет заметно быстрее, т.к. будет установлена уже скомпилированная под macOS версия mpv, а в случае с brew install mpv видеоплеер будет скомпилирован из исходников, может быть, минут за 5-15.

niku-pal commented 4 years ago

Сработал второй вариант, с python3. Программа открывается, но при попытке сгенерировать tsv файл, при нажатий на "Prewiew" или "Go", она просто закрывается и и выдаёт ошибку:

Screen Shot 2019-12-15 at 16 59 38 Screen Shot 2019-12-15 at 16 57 41

Вот отчет в терминале об ошибке:

Screen Shot 2019-12-15 at 17 01 18

niku-pal commented 4 years ago

Аддон для анки работает вроде нормально, но некоторые фильмы не принимает, возможно проблема в самих файлах видео и субтитров. Вот например фильм который не захотел обработать:

Screen Shot 2019-12-15 at 19 45 38 Screen Shot 2019-12-15 at 19 46 06

Если я правильно понял, базовый функционал и возможности у программы и аддона одинаковые, разница лишь в том что программа режет видео на маленькие кусочки, а аддон запоминает таймкоды ?

И еще вопрос: не совсем понял куда кидать файл "mpv.conf" чтобы видео воспроизводилось на английском по умолчанию. Пробовал кидать сюда:

Screen Shot 2019-12-15 at 21 16 49

и заменять тот файл который уже та есть, но ничего не изменилось.

kelciour commented 4 years ago

О, Зоотопия, Шон Бин и Ричард Шарп, отличный выбор!

Второй вариант в виде скрипта, сейчас глянул, там версия скрипта чуть устаревшая и отсутствует поддержка субтитров в кодировке cp1251, т.e. Cyrillic (Windows 1251). Большая часть русских субтитров как раз в этой кодировке. Если открыть субтитры в любом текстовом редакторе, например, Sublime Text или любом другом, и сохранить с кодировкой UTF-8, то ошибка исчезнет.

При использовании аддона в этом нет необходимости, аддон умеет декодировать субтитры в кодировке cp1251 и UTF-8.

В случае с фильмом и аддоном, тут опять проблема с субтитрами. Субтитры оказались в кодировке UTF-16 и один субтитр содержал пустую строку в самом начале и аддон воспринимал новую строку как начало нового субтитра. Обновил аддон. Добавил поддержку UTF-16 и чуть переделал парсинг субтитров. Теперь все должно работать. Попробуйте обновить аддон с помощью Anki - Tools - Add-ons - Check for Updates и перезапустить Anki.

Если я правильно понял, базовый функционал и возможности у программы и аддона одинаковые, разница лишь в том что программа режет видео на маленькие кусочки, а аддон запоминает таймкоды ?

Можно так и сказать. В будущем хотелось бы, конечно, побольше функциональности добавить в аддон. При первом использовании аддона создаются только карточки. Если не просматривать карточки на телефоне, а только на десктопе, видеофайл не переименовывать и не удалять, то можно не тратить время на нарезку карточек. При необходиости нарезать карточки можно точно таким же образом, как делала программа movies2anki, через меню Tools - Generate Mobile Cards.

По поводу mpv.conf, думаю, если запустить воспроизведения видефайла с помощью mpv и ключом для создания логфайла,

mpv --log-file mpv-log.txt "English Movies\Robin Hood (1973).mp4"

потом открыть логфайл в текстовом редакторе и поискать упоминания mpv.conf, можно найти по каким путям mpv загружает mpv.conf.

[0.112][d][global] config path: 'mpv.conf' -/-> 'C:\Users\Nickolay\AppData\Roaming/mpv/mpv.conf'
[0.113][d][global] config path: 'mpv.conf' -> 'C:/Programs/mpv/mpv.conf'
[0.113][d][global] config path: 'mpv.conf' -/-> 'C:/Programs/mpv/mpv/mpv.conf'
[0.113][v][cplayer] Reading config file C:/Programs/mpv/mpv.conf

Но, скорее всего, достаточно просто положить файл mpv.conf в ~/.config/mpv/mpv.conf, т.е. если делать это через Finder, если не ошибаюсь, то путь будет /Users/user/.config/mpv/mpv.conf, т.е. ~ - это домашний каталог текущего пользователя.

https://mpv.io/manual/master/#configuration-files

Скорее всего, папка .config будет не видна в Finder. Гугл подсказывает попробовать следующие варианты в Finder.

  1. Нажать Cmd + Shift + . (dot) - невидимые файлы станут видимыми. Повторное нажатие скроет невидимые файлы.

  2. Нажать Command+Shift+G и ввести путь к папке, т.е. ~/.config, т.к. не уверен, что папка mpv будет уже существовать.

  3. Open Terminal, выполнить команду cd ~/.config, чтобы перейти в каталог .config, затем выполнить команду open ., чтобы открыть Finder в текущей папке. Или попробовать сразу после открытии терминала выполнить команду open ~/.config.

Спасибо за интерес к movies2anki. Очень обрадовали. Возможно, также будет интересна группа https://vk.com/ankisrs. Надеюсь, все-таки успею и через недельку обновлю другой аддон для создания карточек во время просмотра видео и выбора определений из словаря.

xbptyXo19ZM

niku-pal commented 4 years ago

Там еще в очереди "Mowgli: Legend of the Jungle 2018", "Shrek", "Frozen" и "House of Cards". Кстати, можете поделится списком фильмов-сериалов, если есть такой, по которым вы лично учили английский и которые можно найти на трекере с хорошими субтитрами.

Изменил кодировку, заработало и адднон тоже. Огромное спасибо!!

Но появился еще вопрос, пытался включить английские субтитры чтобы были в видео: "is_create_clips_with_softsub" или "is_create_clips_with_hardsub" (не понял в чем разница между ними), но в файле config.ini данные позиций отсутствуют. Screen Shot 2019-12-16 at 22 20 32

Возможно проблема в том что субтитры нужно как то включить с начало в самом плеере, поскольку даже при обычном просмотре фильма в mvp при включений и переключений subtitle track, появляется информация что дорожка с субтитрами переключена, но самих субтитров не показывает.

————————————

Если будете обновлять аддон, добавьте функцию изменения размера видео нарезок, как в самой программе, думаю многим будет полезно.

По поводу mpv.conf, нашел папку в finder и проверил если путь правильный через логфайл в терминале:

[ 0.003][v][cplayer] Reading config file /Users/user/.config/mpv/mpv.conf [ 0.003][d][cplayer] Setting option 'sub-visibility' = 'no' (flags = 4) [ 0.004][d][cplayer] Setting option 'sub-auto' = 'fuzzy' (flags = 4) [ 0.004][d][cplayer] Setting option 'slang' = 'eng' (flags = 4) [ 0.004][d][cplayer] Setting option 'alang' = 'eng' (flags = 4) [ 0.004][d][cplayer] Setting option 'audio-file-auto' = 'fuzzy' (flags = 4) [ 0.004][d][cplayer] Setting option 'save-position-on-quit' = 'yes' (flags = 4)

Кинул туда файл, но все без изменений. Пробовал перезагружать анки, генерировать новые колоды на разные фильмы - все также воспроизводится аудио на русском.

Screen Shot 2019-12-16 at 23 17 17

Второй момент по аддону: Создал колоду по шаблону "movies2anki add-on", первая карточка из данной колоды воспроизводиться как нужно, то есть: Front - показывает видеофрагмент; Back - показывает текст рус/eng и автоматически воспроизводит аудиофрагмент.

Все последующие карточки, работают следующим образом: Front - показывает видеофрагмент; Back - показывает текст рус/eng, но не воспроизводят аудиофрагмент вообще, даже при повторном нажатий на кнопку аудиофайла ничего не приходит (а кнопка видеофайла работает).

Группа просто кладезь знаний, спасибо. А второй аддон можно будет как то использовать в процессе просмотра видео на youtube ? Например встретилось новая непонятная фраза, или наоборот, какое то выражение понравилось и добавляешь ее в виде карточки, сохраняя тайм-код или видеофрагмент, вырезая его через сервис www.clipconverter.cc. Или это уже из ряда фантастики и нужно делать кучу разных костылей, расширений под браузер и т.д. ?

kelciour commented 4 years ago

Mowgli и House of Cards не смотрел, но Shrek, Frozen прекрасный выбор!

Кстати, можете поделится списком фильмов-сериалов, если есть такой, по которым вы лично учили английский и которые можно найти на трекере с хорошими субтитрами.

С этим сложно, начинал с Друзей, серии короткие, интересно было смотреть, потом где-то на 3-4-м сезоне появился заметный прогресс в восприятии на слух и потихоньку стал смотреть фильмы с мультфильмами. Я тогда еще адаптированные книги Graded Readers от зарубежных издательств довольно много слушал перед сном и какая-то база из нескольких прочитанных художественных книг была. Но в итоге просмотрено, наверное, было достаточно много, большая часть с русскими субтитрами. Если была возможность, выбирал, какой перевод получше.

Поначалу всегда пытался найти и добавить какие-нибудь русские субтитры, т.к. пользоваться словарем на AnkiDroid не очень удобно и очень медленно, просто смотрел, помечая карточки с неизвестными для меня словами, больше ничего не делая, мне так проще было, и постепенно перешел на просмотр с или без русских субтитров, но с обязательным последующим экспортом всех или только помеченных карточек для перечитывания на Kindle, подглядывая в основном в LDOCE и словарь Апресяна, иногда еще выручал Merriam-Webster's Learner's Dictionary и пару раз приходилось гуглить.

Zootopia

Со временем, надеюсь. будет время разобраться с JavsScript. Тогда, например, в AnkiDroid, да, и в AnkiMobile что-то похожее, думаю, вполне возможно, можно будет открывать словарную статью просто по клику, т.е. без долгого нажатия - https://i.imgur.com/293FpHL.mp4

В ближайших или, скорее, отдаленных планах еще хотелось бы сделать простенький Kindle конвертер для сайта со скриптами к фильмам - https://www.imsdb.com

Не знаю, как сейчас, но раньше для сериалов, особенно новых, которые только вышли, постоянно брал английские субтитры с https://www.addic7ed.com

Не уверен, что будет полезен, но выложил архив за первые 2 года с ~50 просмотренными фильмами и несколькими сериалами (8765 карточек) - https://yadi.sk/d/8m3Jf6KOFQVCKg. Там в основном только карточки с новыми для меня словами.

С русскими субтитрами сложно что-то посоветовать, думаю, подойдет любой интересный фильм или сериал, а с английскими, то, наверное, Avatar. The Last Airbender - https://yadi.sk/d/4KSRoZu6ctPI4g

Но появился еще вопрос, пытался включить английские субтитры чтобы были в видео: "is_create_clips_with_softsub" или "is_create_clips_with_hardsub" (не понял в чем разница между ними), но в файле config.ini данные позиций отсутствуют.

А, не, эти опции были чисто экспериментальные и в аддон решил их не включать, т.к. не был уверен, что кто-то будет ими пользоваться.

Опция softsub, если правильно помню, просто позволяла добавить субтитры в mp4 контейнер, которые можно было включить или отключить при просмотре на десктопе. Сейчас при использовании аддона особого смысла в этой опции нет, если смотреть на десктопе, а на телефоне, думаю, просто отсутствует возможность включить субтитры, запакованные таким образом.

Опция hardsub, т.е. неотключаемые субтитры, вшитые в картинку. На компьютере в этой опции, думаю, смысла нет, т.к. всегда можно включить субтитры, а на телефоне, возможно, проще будет разбивать фильм на более мелкие фрагменты, чем смотреть видео с неотключаемыми субтитрами.

Возможно проблема в том что субтитры нужно как то включить с начало в самом плеере, поскольку даже при обычном просмотре фильма в mvp при включений и переключений subtitle track, появляется информация что дорожка с субтитрами переключена, но самих субтитров не показывает.

Да, вы совершенно правы, я как-то упустил этот момент. Переключить субтитры можно с помощью j и J, но чтобы включить отображение субтитров в видеоплере mpv, если не удалять исходный видеофайл с субтитрами, необходимо воспользоваться клавишей v - Toggle subtitle visibility.

Единственное, что если по умолчанию включена русская раскладка, то или придется переключиться на английскую раскладку, чтобы заработали горячие клавиши, или, скорее всего, отредактировать файл input.conf, продублировав основные команды, но уже для русской раскладки.

В отдаленном будущем, конечно, хотелось бы добавить какую-то поддержку субтитров и на мобильную версию Anki, скорее всего, с помощью использования HTML5 Video с субтитрами.

Если будете обновлять аддон, добавьте функцию изменения размера видео нарезок, как в самой программе, думаю многим будет полезно.

Спасибо, обязательно сделаю, скорее всего, в течение следующей недели.

По поводу mpv.conf, нашел папку в finder и проверил если путь правильный через логфайл в терминале: Кинул туда файл, но все без изменений.

Судя по логу, настройки были успешно прочитаны. Можно попробовать для alang через запятую дополнительно добавить en, т.е. указать alang=eng,en, но, думаю, ничего не изменится, т.к. проблема в том, что многие фильмы в avi-формате не содержат информации о языке аудиодорожки и видеоплееру mpv просто неоткуда ее взять.

Самый простой, наверное, вариант - это воспользоваться MKVToolNix GUI и за пару минут перепаковать фильм в avi-формате в mkv-формат, добавив информацию о языке аудиодорожки. Или, может быть, изначально скачать фильм в mkv-формате, где обычно информация о языке аудиодорожки уже прописана.

В будущем, думаю, добавлю в аддон опцию выбора аудиодорожки при создании карточек, как изначально было сделано в программе, и в перепаковке отпадет необходимость.

Back - показывает текст рус/eng, но не воспроизводят аудиофрагмент вообще, даже при повторном нажатий на кнопку аудиофайла ничего не приходит (а кнопка видеофайла работает).

Очень странно, даже не знаю, с чем это может быть связано. Попробуйте обновить аддон через Anki - Tools - Check for Updates и перезапустить Anki. Я при исправлении парсинга субтитров в одном из предыдущих обновлений допустил глупую ошибку, которая создавала дупликаты предыдущей карточки, если попадался пустой субтитр, а не игнорировала его, как было раньше. Вряд ли это пофиксит проблему, т.е. тогда бы и видео не воспроизводилось.

Постараюсь тогда добавить на днях в аддон отдельную горячую клавишу, которая бы копировала, с какими аргументами запускается mpv при воспрозведении аудио или видео, которые потом можно было бы проверить с помощью Terminal, посмотрев на результат работы видеоплеера, если выполнить ту же команду через Terminal.

А второй аддон можно будет как то использовать в процессе просмотра видео на youtube ?

В планах, да, такая опция бы очень пригодилась, но в первую версию, думаю, будет проблематично добавить или просто не успею, и появится, скорее всего, в одном из следующих обновлений.

Например встретилось новая непонятная фраза, или наоборот, какое то выражение понравилось и добавляешь ее в виде карточки, сохраняя тайм-код или видеофрагмент, вырезая его через сервис www.clipconverter.cc. Или это уже из ряда фантастики и нужно делать кучу разных костылей, расширений под браузер и т.д. ?

Что-то, скорее всего, достаточно просто реализовать, что-то можно нагуглить, на что-то просто уйдет довольно много времени, а что-то, скорее всего, потребует достаточно глубоких технических знаний.

Похожий функционал доступен в виде отдельного скрипта к mpv, необходимо только, скорее всего, дополнительно с помощью brew установить youtube-dl, или, возможно, youtube-dl уже был установлен при установке mpv.

brew install youtube-dl

Скрипт называется sub-cut.lua и доступен по ссылке - https://github.com/kelciour/mpv-scripts
Для его установки просто создать подпапку scripts в той же папке, что и mpv.conf, т.е. ~/.config/mpv/scripts/, и кинуть sub-cut.lua в эту папку. После этого достаточно запустить mpv через Terminal, указав в качестве видеофайла ссылку на какой-нибудь YouTube-ролик. С помощью w и e можно указать начало и конец клипа и сохранить локально при помощи ctrl+x.

Вроде все.

kelciour commented 4 years ago

@niku-pal попробуйте обновить аддон Anki - Tools - Add-ons - Check for Updates, перезапустить Anki. Возможно, со звуком теперь будет все в порядке.

Как оказалось, программы, установленные с помощью brew, могут быть не видны Anki, т.к. в переменной окружения PATH отсутствует пусть к /usr/local/bin.

https://docs.brew.sh/FAQ#my-mac-apps-dont-find-usrlocalbin-utilities

И погуглив наткнулся, что на некоторых версиях macOS видеоплеер mpv может крашиться, если он был установлен с помощью brew install mpv. В качестве решения предлагают сначала выполнить команду brew uninstall mpv для удаления mpv и потом установить бинарную версию mpv через cask, т.е. brew cask install mpv.

niku-pal commented 4 years ago

Масса новой информации и материала для меня, начну потихоньку изучать. Огромное спасибо что делитесь!

После обновления аддона, звук в карточках появился. Также заработал автоматический выбор английской дорожки после перепаковки в mkv.

По поводу mpv, насколько помню ставил я его именно через cask, но на всякий случай переустановлю.

Спасибо еще раз что возитесь со мной, буду следить за обновлениями ваших программ.

kelciour commented 4 years ago

Отлично, что аддон заработал. Это очень приятная новость. Спасибо!

Пожалуйста, был рад помочь :)