elgatito / plugin.video.elementum

Elementum add-on for Kodi. Development of this addon has been stopped!
http://elementum.surge.sh
MIT License
474 stars 157 forks source link

Elementum library update for TV Shows does not work property when in “\userdata\sources.xml” library path use Kodi's "Special Protocol" like “special://temp/elementum_library/Shows/”. #949

Closed pavelmxx closed 8 months ago

pavelmxx commented 10 months ago

Строчка в userdata\addon_data\plugin.video.elementum\settings.xml - special://temp/elementum_library/ Много лет использовал редирект папки библиотеки Elementum в c:\Kodi\portable_data\elementum\. По умолчанию предлагается хранение библиотеки в c:\Kodi\portable_data\cache\elementum_library\, но т.к. я посчитал, что папка cache, это TEMP папка как для Kodi, так и для Elementum, вследствие чего что-нибудь когда-нибудь захочет в автоматическом режиме почистить временную папку, то я перенес все папки Elementum на один уровень вверх и укоротил их имена. Дело было на самом деле не в этом, как я выяснил позже. Дело в sources.xml Kodi. Все работало исправно, но где-то полгода назад перестали автоматически добавляться новые, только вышедшие, серии сериалов, которые через аккаунт Trakt добавлялись с каждым автоматическим обновлением библиотеки. В логе появились следующие записи:

2023-10-20 00:43:03.349 T:668   warning <general>: [plugin.video.elementum] INFO  library      ? SyncShowsList    Shows list (5349582) added 104 items
2023-10-20 00:43:03.349 T:4528     info <general>: JSONRPC Server: New connection added
2023-10-20 00:43:03.356 T:4528     info <general>: JSONRPC Server: Disconnection detected
2023-10-20 00:43:03.357 T:668   warning <general>: [plugin.video.elementum] INFO  library      ? func2            Trakt sync finished in 4.5029667s
2023-10-20 00:43:03.391 T:2768  warning <general>: XFILE::CFileFactory::CreateLoader - unsupported protocol(sources) in sources://music.tbn
2023-10-20 00:43:05.300 T:3796     info <general>: VideoInfoScanner: Finished scan. Scanning for video info took 5059 ms
2023-10-20 00:43:05.865 T:668   warning <general>: [plugin.video.elementum] ERRO  library      ? writeShowNFO     Could not write NFO file: open .\special:\home\elementum\Shows\Deadwood (2004)\tvshow.nfo: The filename, directory name, or volume label syntax is incorrect.
2023-10-20 00:43:05.875 T:668   warning <general>: [plugin.video.elementum] ERRO  library      ? writeShowNFO     Could not write NFO file: open .\special:\home\elementum\Shows\Castle (2009)\tvshow.nfo: The filename, directory name, or volume label syntax is incorrect.
2023-10-20 00:43:05.886 T:668   warning <general>: [plugin.video.elementum] ERRO  library      ? writeShowNFO     Could not write NFO file: open .\special:\home\elementum\Shows\Ray Donovan (2013)\tvshow.nfo: The filename, directory name, or volume label syntax is incorrect.
2023-10-20 00:43:05.908 T:668   warning <general>: [plugin.video.elementum] ERRO  library      ? writeShowNFO     Could not write NFO file: open .\special:\home\elementum\Shows\Justified (2010)\tvshow.nfo: The filename, directory name, or volume label syntax is incorrect.
2023-10-20 00:43:05.915 T:668   warning <general>: [plugin.video.elementum] ERRO  library      ? writeShowNFO     Could not write NFO file: open .\special:\home\elementum\Shows\Spooks (2002)\tvshow.nfo: The filename, directory name, or volume label syntax is incorrect.
2023-10-20 00:43:05.927 T:668   warning <general>: [plugin.video.elementum] ERRO  library      ? writeShowNFO     Could not write NFO file: open .\special:\home\elementum\Shows\2057 (2007)\tvshow.nfo: The filename, directory name, or volume label syntax is incorrect.
2023-10-20 00:43:05.932 T:668   warning <general>: [plugin.video.elementum] ERRO  library      ? writeShowNFO     Could not write NFO file: open .\special:\home\elementum\Shows\Storm of the Century (1999)\tvshow.nfo: The filename, directory name, or volume label syntax is incorrect.
2023-10-20 00:43:05.937 T:668   warning <general>: [plugin.video.elementum] ERRO  library      ? writeShowNFO     Could not write NFO file: open .\special:\home\elementum\Shows\Hotel Room (1993)\tvshow.nfo: The filename, directory name, or volume label syntax is incorrect.
2023-10-20 00:43:05.941 T:668   warning <general>: [plugin.video.elementum] ERRO  library      ? writeShowNFO     Could not write NFO file: open .\special:\home\elementum\Shows\In Treatment (2008)\tvshow.nfo: The filename, directory name, or volume label syntax is incorrect.
2023-10-20 00:43:05.959 T:668   warning <general>: [plugin.video.elementum] ERRO  library      ? writeShowNFO     Could not write NFO file: open .\special:\home\elementum\Shows\The Brink (2015)\tvshow.nfo: The filename, directory name, or volume label syntax is incorrect.
…
… Еще две сотни строк, что соответствует полному списку сериалов моей библиотеки.
…
2023-10-20 00:43:06.846 T:668   warning <general>: [plugin.video.elementum] ERRO  library      ? writeShowNFO     Could not write NFO file: open .\special:\home\elementum\Shows\1923 (2022)\tvshow.nfo: The filename, directory name, or volume label syntax is incorrect.
2023-10-20 00:43:06.854 T:668   warning <general>: [plugin.video.elementum] ERRO  library      ? writeShowNFO     Could not write NFO file: open .\special:\home\elementum\Shows\Hijack (2023)\tvshow.nfo: The filename, directory name, or volume label syntax is incorrect.
2023-10-20 00:43:06.855 T:668   warning <general>: [plugin.video.elementum] INFO  library      ? updateLibraryShows  Library updated in 1.0108488s
2023-10-20 00:43:07.844 T:4528     info <general>: JSONRPC Server: New connection added
2023-10-20 00:43:07.880 T:4528     info <general>: JSONRPC Server: Disconnection detected
2023-10-20 00:43:07.922 T:3796     info <general>: VideoInfoScanner: Starting scan ..
2023-10-20 00:44:50.062 T:3796     info <general>: VideoInfoScanner: Finished scan. Scanning for video info took 102141 ms
2023-10-20 00:44:50.106 T:2768  warning <general>: XFILE::CFileFactory::CreateLoader - unsupported protocol(sources) in sources://music.tbn

На практике Elementum не может получить доступ к nfo и strm файлам, не может положить strm файлы для новых серий сериалов. Новые серии в Kodi не появляются. Причем при заполнении пустой (чистой) базы данных Kodi и Elementum с перенаправлением папки библиотеки Elementum все хорошо – Trakt закидывает все nfo и strm в нужное место, затем обновление библиотеки Kodi посредством TMDB TV Show все в себя подгружает. Но при первом же перезапуске Kodi в логе появляется Could not write NFO…. Другими словами, перенаправление для уже добавленных ранее сериалов перестает работать. Но если я попробую добавить новый сериал или фильм через Trakt, то он успешно добавится, т.е. перенаправление в таком варианте работает. Не работает ТОЛЬКО на добавление новых серий к сериалу, который уже в базе данных Kodi и Elementum.

Перенаправление по пути для библиотеки c:\Kodi\portable_data\cache\elementum\ не работает по понятным причинам, это temp Elementum, который он чистит сам. Но почему мой путь c:\Kodi\portable_data\elementum\, уровнем выше, не работает? Путь для библиотеки c:\Kodi\portable_data\elementum_library\ не работает. Хоть и одним уровнем выше изначального расположения.

Если я в c:\Kodi\Kodi_portable\Kodi\portable_data\userdata\sources.xml в строчке special://home/elementum/Shows/ поменяю на полный путь c:\Kodi\portable_data\elementum_library\Shows, потом заполню библиотеку с нуля, то все и дальше будет работать исправно. Только при этом пропадает портативность Kodi. При таком поведении получается, что Elementum не может корректно извлечь из userdata\Database\MyVideos121.db путь формата special://* к сериалу при добавлении новых серий в сериал. Хоть и у меня достаточно большая обвязка к пути библиотеки Elementum, я легко все переделаю под место по умолчанию. Для других пользователей Elementum надо учесть, что перенаправление библиотеки Elementum в другое место может не работать как надо. А точнее - будет работать все, кроме обновления для новых серий сериалов. Рассуждения: Раньше такое написание special://home\elementum\ (и с прямым, и с обратным слэшем) для Kodi и Elementum являлось корректным и использовалось в.т.ч. для «по умолчанию». Сейчас записи везде приобрели такой вид: special://home/elementum/Movies/ - все слэши прямые. Может где-то в коде Elementum проблема с «защитным слэшем», который ставится второй раз, для прочтения первого, не знаю как оно сейчас правильно называется, не гуглится чего-то. Ошибку выдает именно Elementum, а не Kodi VideoInfoScanner. Записи всех путей для сериалов внутри c:\Kodi\portable_data\userdata\Database\MyVideos121.db у меня корректные – special://home/elementum/Shows/Aquarius (2015)/ То, что в логе пишет .\special:\home\elementum\Shows\, а не special:\\home\elementum\Shows\, т.е. без одного обратного слэша после special:\ может свидетельствовать о версии с «защитным слэшем». Кстати, форма отправки этого сообщения тут на гитхабе тоже сжирает второй обратный слэш, поэтому в предыдущем предложении я их написал три раза, а не два. Теперь я владею форматированием текста сообщений гитхаба и пишу слэш два раза. Чем посмотреть \userdata\addon_data\plugin.video.elementum\storm.db и \userdata\addon_data\plugin.video.elementum\cache.db? Разные SQL-вьюверы их не открывают. Я так понимаю, что это BoltDB, есть ли портативный маленький вьювер под Windows для нее? Ах да, такая проблема как на Windows 7, так и на Windows 10. Как на Leia 18.9, так и на Nexus 20.2.

pavelmxx commented 10 months ago

Сейчас выяснил, что при использовании в «portable_data\userdata\sources.xml» для библиотеки сериалов пути в формате «special://» добавление новых серий не происходит ни при каких обстоятельствах, в.т.ч. с настройками путей Elementum по умолчанию. А с полным путем формата «c:\kodi\...» внутри sources.xml работает. Этот момент несколько изменяет суть написанного выше. Видимо действительно Elementum не может прочитать пути со «special://» для сериалов из MyVideos121.db.

antonsoroko commented 10 months ago

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

при использовании в «portable_data\userdata\sources.xml» для библиотеки сериалов пути в формате «special://» добавление новых серий не происходит ни при каких обстоятельствах

в настройках elementum эти special:// разворачиваются в настоящие пути при старте elementum. дальше и работа с внутренней библиотекой идёт с настоящими путями. https://github.com/elgatito/elementum/blob/3056084780529a8bab9327861ef4b804d4716def/config/config.go#L448

если вы включаете интеграцию с библиотекой коди, то тогда пути приходят из коди. думаю тут никто ещё не пробовал делать пути в самом коди в виде "special://" соответственно и кода для того чтобы их разворачивать нету. кажется, что где-то примерно сюда https://github.com/elgatito/elementum/blob/3056084780529a8bab9327861ef4b804d4716def/library/library.go#L1371 надо добавить TranslatePath().

но весьма возможно таких мест больше. было бы хорошо услышать мнение автора elementum ещё.

лог у меня такой:

warning <general>: [plugin.video.elementum] ERRO  library      ▶ writeShowStrm    mkdir special:/home/elementum_library/Shows/Supernatural (2005): no such file or directory
warning <general>: [plugin.video.elementum] ERRO  library      ▶ updateLibraryShows  Error updating show: mkdir special:/home/elementum_library/Shows/Supernatural (2005): no such file or directory

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

это лучше удалить (или зачеркнуть, см ниже как), так как у меня это точно работает и у вас вроде тоже, судя по второму сообщению.

форма отправки этого сообщения тут на гитхабе тоже сжирает второй обратный слэш,

используйте markdown форматирование: https://docs.github.com/ru/get-started/writing-on-github/getting-started-with-writing-and-formatting-on-github/basic-writing-and-formatting-syntax#quoting-code

Я так понимаю, что это BoltDB

я под linux использовал TUI браузер https://github.com/br0xen/boltbrowser/releases , там в релизах есть и для windows. но если поищите по "boltdb browser"/"boltdb viewer" в интернете или сразу тут на гитхабе, то думаю найдёте и GUI. но там, емнип, нету путей, данные для связывания торрентов с внутренними id коди в storm.db и кэш tmbd в cache.db. но для интереса - посмотрите сами.

pavelmxx commented 10 months ago

Большое спасибо за разъяснения. Теперь понятно, что самому исправить это в полной мере не выйдет и можно перестать этим заниматься и ломать голову. Дело еще в том, что я пользуюсь Elementum как минимум с 2018 года, возможно что и гораздо раньше. На страничке Trakt у меня «MEMBER SINCE AUG, 2018», а Trakt я завел исключительно для Elementum, когда в нем появилась интеграция Trakt (или когда я сам узнал об этом). В sources.xml формат пути special:// использую года с 2014, т.к. свою конфигурацию Kodi использую на разных устройствах и слежу за тем, чтобы портативный запуск Kodi работал из любого пути, был полностью отвязан от своего расположения. Я практически уверен, что добавление новых серий у меня происходило всегда, пока не истекал срок действия токена Trakt (пару месяцев срок, вроде). Я обновлял авторизацию Trakt и новые серии прилетали в библиотеку. Может я ошибаюсь, но я вообще не помню, чтобы у меня были большие проблемы с этим. Полгода назад, а может и год я заметил ошибки в логе и полное отсутствие новых серий. Это я к тому, что может в коде старых версий Elementum этот special:// разворачивался в путь правильно. Писать сюда полгода назад, не обладая полной информацией и результатами тестов, я посчитал несерьезным. За последние 5 дней я перескрапил библиотеку раз 20 с разными настройками путей в Elementum и sources.xml. У меня полный скрап длится около 8 часов, делался на нескольких виртуальных машинах. Поленился новый, не такой тяжелый, аккаунт для Trakt создавать для этих целей и чистоту эксперимента нарушать не хотел. И все равно вышла сумятица, как видно, за которую извиняюсь. Почти уверен, что special:// в sources.xml используют многие, равно и как Kodi Portable mode. Еще интересно, что иногда какие-то новые серии отдельных сериалов добавляются автоматически. Подозреваю, что такое происходит, если сериал добавлялся каким-то другим способом после первоначального скрапинга. Например через копирование папки сериала с nfo файлом вручную, когда этого сериала нет в Trakt или добавлением через GUI Elementum. Вот конкретно сейчас сам прилетел в библиотеку сезон от этой осени «Спецагент Арчер» каким образом – понятия не имею. Месяца два назад заметил, что если удалить все nfo и strm файлы и/или папки из библиотеки сериалов Elementum, то новые серии придут после перезапуска Kodi, когда Elementum пересоздаст эти файлы. Но срабатывает такое через раз и не для всех сериалов, почему-то. Надеюсь, что это сообщение-дополнение к проблеме поможет до конца понять суть и исправить проблему. Или поможет найти временный фикс, хотя бы в виде ручного актуализирования серий в библиотеке. Никакие действия в виде «Сведения>Обновить» или «Сканировать содержимое» над сериалом внутри библиотеки Kodi не помогают. Не помогает также «Elementum>Сериалы>%имясериала%>Обновить в библиотеке». Пока с использованием special:// помогает только полный перескрапинг с пустой базой.

antonsoroko commented 10 months ago

@pavelmxx если оно раньше работало, то я прям не знаю как и почему оно сломалось. я мог бы предположить, что может из-за новой версии kodi - например, если раньше коди сам разворачивал пути, а сейчас стал отдавать их как есть, со special в начале, но вы пишете? что перестало работать и на 18.9, а 18 это довольно старая версия. если только они в нескольких последних мажорных версиях не поменяли (аля 18 19 20), что вряд ли, так как это ломало бы совместимость.

я посмотрел все коммиты про библиотеку с января 2021 - не увидел изменений на тему обработки путей. но я мог что-то упустить.

может @elgatito сможет сказать больше, если у него будет время сюда заглянуть.

antonsoroko commented 10 months ago

@pavelmxx

2 вещи:

  1. если есть возможность проверить на старых минорных (аля 18.0 или 20.0) версиях коди, то было бы интересно. не ясно, как оно могло раньше то работать.
  2. сделал для вас тестовый билд (windows-x64 как я понял, но если надо другой - напишите), вот с такими изменениями https://github.com/elgatito/elementum/compare/master...antonsoroko:elementum:fix-library-special-paths-integration?expand=1 скачать https://disk.yandex.ru/d/aUIfcZV0VH7hqA на моём тестовом стенде работает теперь библиотека с special:// путями. для проверки, в логе будут сообщения аля:
    [plugin.video.elementum] WARN  library      ▶ getShowPathsByTMDB  Got special e.File: special://home/elementum_library/Shows/The Responder (2022)/The Responder (2022) S01E01.strm
    [plugin.video.elementum] WARN  library      ▶ getShowPathsByTMDB  TranslatePath for e.File: /home/user/.kodi/elementum_library/Shows/TheResponder (2022)/The Responder (2022) S01E01.strm

    ну и сообщения об ошибках должны будут пропасть.

pavelmxx commented 10 months ago

@antonsoroko Пока что успел протестировать только 20.0x64 и 20.2x64. Новые серии добавляет, в логе криминала нет, вроде. Сейчас дозаполняются базы 18.9 и 18.0, т.к. они только наполовину соответствуют текущему актуальному профилю Trakt в части сериалов. После заполнения подменю elementum.exe и проверю. Потом Matrix. Это займет какое-то время.

Размышления: Может год тому назад скраперы TMDB и TheTVDB пометились «испорченными» в Kodi и перестали поддерживаться. Оба скрапера перешли на Python 3 и работали только в Matrix и выше. Потом для Leia и младше вышел script.module.future, который обеспечивал поддержку Python 3 для Коди старых версий. Предлагалось установить на ту же Leia уже новые скраперы TMDB и TheTVDB с поддержкой Python 3. Может старые скраперы по-другому библиотеку Kodi заполняли? Дело еще в том, как я писал ранее, я с самых первых дней использования Elementum грешил тем, что ряд задач по резервированию, копированию, добавлению в библиотеку решал копированием nfo и strm файлов вручную и скриптами. В первое время мне не удавалось заставить методом Elementum-Trakt все работать стабильно. А библиотека по фильмам и сериалам у меня и тогда была очень большая. Что-то терялось, что-то дублировалось и база росла в геометрической прогрессии и падала, вот и выходил так из ситуации. Хотя автор меня еще тогда предупреждал, что все на свой страх и риск, и что других приемов синхронизации, кроме Trakt, не предусмотрено. Возможно какая-то частичная работоспособность автоматического обновления серий раньше была вызвана именно наличием nfo и strm файлов в папке и отсутствием записи в Trakt или наоборот. С другой стороны, мои последние эксперименты с копированием руками nfo и strm закончились в апреле 2021, а автоматическое добавление серий частично работает даже по сей день, как в случае с «Спецагент Арчер» пару дней назад. Оно сто процентов как-то работало, хоть и не всегда и не со всеми сериалами, и sources.xml был у меня с полными путями последний раз году так в 2012. Еще есть версия, что на TMDB и TheTVDB часто устраивают войну правок. Бывает, что для фильма или сериала по три раза за год меняют дату премьеры. Одни хотят как на IMDB, другие как на Википедии, третьи датируют с премьеры на фестивале. Для сериалов еще сложнее, т.к. премьерный показ по регионам может отличаться сильно. Если сериал снят в Латинской Америке и вышел там раньше, чем в США, с какой радости ставить дату выхода по США, хоть это и основной рынок с точки зрения IMDB? Не вникал в регламентирующие правила TMDB и TheTVDB, но остается фактом то, что какой-нибудь «Revenge (2017)" был недавно "Revenge (2018)", а еще незадолго снова "Revenge (2017)". А это новая папка, новые nfo и strm. Может из-за этого у меня что-то обновлялось раньше. Или же вообще это все из-за ошибочно созданных разными людьми двух записей для одного сериала, на Trakt такое вообще часто встретить можно. А потом кто-то заметил и запросил слияние у модераторов “Trakt>report show>duplicate”. Вот и снова новые nfo и strm, а мне обновление сериала прилетело. Вспомнил пошлый анекдот про старого вампира и девушку в пустыне… Так и обновлял сериалы, от правки модератором до следующей правки. Извините.

antonsoroko commented 10 months ago

@pavelmxx я уточню, я имел ввиду проверить обычную версию elementum на старых kodi (если вдруг что-то именно в kodi поменялось). А мой тестовый билд - на новых версиях. Можно (или даже лучше, так так быстрее и нагляднее) на уже существующих, которые дают ошибки в логи, чтобы сразу была видна разница.

По поводу scrapers, не думаю что они хоть как-то влияют на пути, они также получают данные из kodi, как и elementum, как я себе это представляю с технической точки зрения. В нашем случае, Elementum запрашивает сериал из базы коди, kodi ему отдаёт свою локальную информацию о сериале и пути. Ну и вот для спец путей у нас или таинственным способом пропал код, или его не было но kodi сам разворачивал спец пути. Кстати возможно в changelog у kodi есть что-то про спец пути.


Update: посмотрел список изменений для kodi 18.* версий, там ничего про пути. Поиск по "kodi release special path" тоже ничего не дал. Так что остаётся только руками проверить на 18.0.

pavelmxx commented 10 months ago

@antonsoroko В 18.0, 18.9, 19.0, 20.0, 20.2 для x64 добавление новых серий в текущих окружающих условиях не работает вообще. С использованием Вашего elementum.exe добавление серий происходит во всех версиях Kodi, ошибок в логе не заметил. Самая древняя MyVideos116.db, которую мне удалось найти у себя в бэкапах конфигураций, датирована апрелем 2020 года, и все пути там special://. Есть бэкапы с 2013 по 2018 год, но там еще нет Elementum. Промежуточных между 2018-2020 не нашел. Видимо причина добавления серий у меня заключалась в том, что я описывал выше, и никак не связана с изменением способа трансляции пути Kodi. Собственно, я в Вашей версии не сомневался, а работало оно у меня в результате того бардака, который я сам себе нагородил. Обычно выход нового сезона происходит в течение 3 недель раз в год. 90% сериалов в библиотеках – завершенные. Личное время на просмотр сериалов можно найти в выходные или реже. С учетом присутствия в библиотеке 200 сериалов заметить не добавление новых серий какого-то сериала получается проблематично. А то, что добавлялось автоматически, являлось результатом того беспорядка у меня в библиотеке. Да и логически оно в голове не укладывалось – добавление новых сериалов через тракт в Kodi работает, а новые серии уже после добавления не приходят. Наверное так, мог не заметить частичную неработоспособность добавления новых серий. Но что-то все равно приходило само без явных на то причин, не знаю как.

antonsoroko commented 10 months ago

@pavelmxx Если мои изменения для вас работают, тогда я создам PR (но когда именно автор плагина сможет посмотреть мои правки - не подскажу). Если вы уже закончили с тестами, то напишите сейчас и я создам PR сейчас, если ещё тестируете, то напишите пожалуйста как закончите. Чтобы мы точно знали, что всё работает. Изменения не должны ничего сломать, будет пытаться что-то разворачивать, только если в пришедшем из kodi пути есть special:.


Кстати, я так понял у вас такой проблемы нет, но на всякий случай уточню, сейчас, для того чтобы работал tmdb в elementum (да и в других плагинах, я думаю) для РБ и РФ нужен VPN. Альтернативно можно включить опцию использовать только trakt, но не всё будет работать, насколько я помню.

susobaco commented 10 months ago

Hi, I think I also have this problem on Kodi 20 on ubuntu 22 and python 3.8. I can't get the library to update. If I search for the series again and hit merge it does. What is the patch that should be applied to see if it works?

pavelmxx commented 10 months ago

@antonsoroko У меня было несколько библиотек Kodi в разном наполнении и два аккаунта Trakt. Все оно в разных комбинациях актуализировалось по сериалам успешно и одинаково, strm пофайлово сравнивал. Какие-то дополнительные тесты возможны только с течением времени по мере выхода новых серий, насколько я понимаю. Хотел напомнить не забыть логирование до стандартного уровня свернуть. А то лог файл 10мб за первые минуты вырастает. Работать с ним сложно будет.

Кстати, я так понял у вас такой проблемы нет

Таких проблем нет. Но на заметку скажу, что tmdb блокируют по dns зоне и для обхода достаточно найти правильный (но самый обычный - 4.2.2.1 port 53, с этим работало, вроде, а dns гугл и яндекс не хотели) dns сервер. А GoodbyeDPIтут же на гитхабе может использовать dns redirect селективно. Ну и решать все остальные задачи на всех интернет провайдерах РФ и РБ для Elementum, если приложить усилие. Надо будет протестировать возможности dns redirect Elementum`а на тему tmdb, кстати.

@susobaco

What is the patch that should be applied to see if it works?

Test version only for win64 for now.

antonsoroko commented 10 months ago

@susobaco Hi. This issue is only about the case when you configured your Kodi library (and I repeat - Kodi library, not just elementum library setting) to use special:// paths (to make your library portable). If it is the case for you - tell me your platform (e.g. linux_x64, see all options here https://github.com/elgatito/plugin.video.elementum/releases/tag/v0.1.98 ) and I will try to make a test build for you. The code of the patch is below.

Otherwise - please create separate issue (please use issue the template, to avoid misinformation).

antonsoroko commented 10 months ago

@pavelmxx по той же ссылке залил билд без логирования. будет писать только если вдруг прилетит каким-то чудом путь со special несмотря на то, что мы его попытались развернуть. если вдруг будет в логе Got UNEXPECTED special path - напишите пожалуйста. PR сделал.

antonsoroko commented 10 months ago

@pavelmxx

на заметку скажу, что tmdb блокируют по dns зоне

не знал. забавно, они просто отдают 127.0.0.1 как ответ, если, как я понял, ip самого dns сервера из заблокированной страны или если dns сервер частично раскрывает ip своего клиента через EDNS/ECS (чтобы получить ближайший сервер искомого сайта). соответственно cloudflare не работает или работает не всегда, потому что у них есть сервера в рф (и для рб они выдают их), а google или потому что у них ещё остались сервера в рф или из-за ecs. до этого пользовался cloudflare, сейчас для интереса поменял на quad9. спасибо за информацию.

antonsoroko commented 10 months ago

@susobaco try this file: https://disk.yandex.ru/d/CpjG00-lp2Q2TQ put it into addons/plugin.video.elementum/resources/bin/linux_x64/ e.g. /home/user/.kodi/addons/plugin.video.elementum/resources/bin/linux_x64/. if all ok - you will see version 0.1.99 in log file. please check if this fix will help you with special:// paths in your library (this fix is only about this issue).

susobaco commented 10 months ago

@antonsoroko Well, I have made the substitution you instructed and the library has not been updated. I even set the default directories with a shortcut to where the library is (renaming them to Movies and Shows) and it hasn't updated. I don't know where in the log the error could be because I can't find it. There are only these entries referring to it.

'LD_LIBRARY_PATH': '/home/kodi/.kodi/userdata/addon_data/plugin.video.elementum/bin/linux_x64:'}, 'close_fds': True}

warning : [plugin.video.elementum] NOTI config ▶ Reload Paths translated by Kodi: Download: /tmp , Library: /home/kodi/Librería , Torrents: /home/kodi/.kodi/temp/elementum_torrents , Profile: /home/kodi/.kodi/userdata/addon_data/plugin.video.elementum/ , Default Storage: Memory

warning : [plugin.video.elementum] INFO config ▶ Reload Using library path: /home/kodi/Librería

warning : [plugin.video.elementum] LibraryPath: "/home/kodi/Librería",

warning : [plugin.video.elementum] LibraryEnabled: true, warning : [plugin.video.elementum] LibrarySyncEnabled: true, warning : [plugin.video.elementum] LibrarySyncPlaybackEnabled: true, warning : [plugin.video.elementum] LibraryUpdate: 0, warning : [plugin.video.elementum] StrmLanguage: "en", warning : [plugin.video.elementum] LibraryNFOMovies: true, warning : [plugin.video.elementum] LibraryNFOShows: true,

warning : [plugin.video.elementum] AutoScrapeLibraryEnabled: true,

I am at your service

antonsoroko commented 10 months ago

@susobaco i am not sure that i understood you correctly, but looks like you do not use special:// path for library. is it correct?

if you do not use special:// path for library:

  1. create a new issue (since this issue is only about special:// paths in Kodi library) and please do follow the template it has. also add:
    1. full log with debug messages. see https://elementum.surge.sh/contribute/log/
    2. content of .kodi/userdata/sources.xml
    3. also, we need to know your setup - how you configured Kodi library and elementum library and any other non-standard things that you configured.

if you use special:// path for library, then provide here:

  1. full log with debug messages. see https://elementum.surge.sh/contribute/log/
  2. content of .kodi/userdata/sources.xml
  3. also, i need to know your setup - how you configured Kodi library and elementum library and any other non-standard things that you configured.

P.S. just to clarify: if you are not sure what i mean by "special:// paths", then you do not use it. also you can read https://kodi.wiki/view/Special_protocol

elgatito commented 8 months ago

@antonsoroko @pavelmxx

В sources.xml формат пути special:// использую года с 2014, т.к. свою конфигурацию Kodi использую на разных устройствах и слежу за тем, чтобы портативный запуск Kodi работал из любого пути, был полностью отвязан от своего расположения.

Не совсем понимаю как это работает в Коди. Если писать special://home/elementum/Movies/ то где реально файлы будут лежать? Куда оно смотреть будет?

Как Антон писал правильно выше, раньше Elementum просто писал в свою папку. В последних версиях Elementum проверяет куда уже пишется сериал/фильм, и пишет в ту же папку. Уже добавляли исключение не использовать эту логику если Коди ведёт на сетевой ресурс с strm файлами.

Есть 2 варианта:

В каких случаях использование special:// в sources.xml может помочь и как?

pavelmxx commented 8 months ago

@elgatito

Если писать special://home/elementum/Movies/ то где реально файлы будут лежать? Куда оно смотреть будет?

В соответствии с Special protocol, то получается для Windows в C:\Users\[username]\AppData\Roaming\Kodi\elementum\Movies\ или в [папка расположения исполняемых файлов Kodi]/portable_data/elementum/Movies/ в случае запуска Kodi на Windows с ключом -p для использования портативного профиля. Для iOS, Android, Linux, Mac OS X и.т.д. пути профиля и портативного профиля иные. Для Android, например, можно положить в корень storage файл xbmc_env.properties, где можно указать кастомный путь расположения портативного профиля, чтобы не лезть каждый раз по дефолтному пути профиля /sdcard/Android/data/org.xbmc.kodi/files/.kodi/.

Как Антон писал правильно выше, раньше Elementum просто писал в свою папку.

Оно и раньше трансформировало пути из “специальных” в полные, но только не для новых, вышедших серий к сериалу, который в библиотеке уже давно. Получается так: в sources.xml указан путь вида special://, добавляю сериал или фильм, он успешно скрапится и добавляется в библиотеку, проходит год, выходит второй сезон сериала, но новые серии уже не добавляются. Как я для себя догадываюсь, это отчасти вызвано какой-то процедурой, которая перепроверяет наличие прошлых серий (это про “уже пишется“), чтобы избежать появления дубликатов серий в библиотеке. Ведь добавление новых серий к сериалу происходит другим блоком кода (вроде как), чем при изначальном добавлении нового сериала в библиотеку. Именно там и отсутствует трансформаця специального пути в полный, как объяснял мне @antonsoroko. Или я многое не так понял, что более вероятно. @antonsoroko меня поправит, думаю.

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

С конца октября тестирую elementum.exe для Windows 64, тот, что лежит тут выше по тексту, который любезно скомпилировал и предоставил @antonsoroko. Никаких багов не заметил, все работает так же быстро. Новые серии добавляются в библиотеку. У меня в библиотеке 15000 серий в 290 сериалах. Что на Core i5-2500K с HDD десятилетней давности, что на Core i7-4770 с SSD, на все 15000 трансформаций уходит одинаково 28 секунд судя по логам, что есть небольшая плата, как мне кажется. У меня есть в наличии экстремально древние неттопы с Kodi на Intel Atom с Nvidia ION, посмотрю на них чуть позже, не подумал сначала, т.к. не пользуюсь почти ими. На Android нет возможности протестировать, т.к. я забыл попросить @antonsoroko выложить бинарник с исправлениями для Android.

каких случаях использование special:// в sources.xml может помочь и как?

Конкретно в моем случае при наличии в библиотеке 1500 фильмов, 290 сериалов, 11000 музыкальных композиций на полный перескрапинг всего уходит около 10 часов на Core i7. Узкое место, из-за которого все так долго, естественно API TMBD и API Universal Album Scraper. Из-за всяких багов, изменений, апдейтов и прочего библиотеку приходится перестраивать раз в год, а то и два раза. Часто API TMBD, TheTVBD, Trakt.tv может отправить меня в cooldown на неопределенное время, и возобновлять обновление библиотеки приходится вручную чуть позже. Сколько времени займет такое построение библиотеки на телефоне с Android или iOS – даже представить боюсь. Поэтому у меня своя конфигурация Kodi, которая полностью отвязана от полных путей и профиль может быть развернут в любой момент на любой ОС. Перенести профиль Kodi для Elementum на другую платформу только правкой путей в sources.xml не получится. Надо изменять запись на каждую серию и фильм внутри userdata\Database\MyVideos121.db, что, наверное, можно и SQL скриптом к базе данных сделать. Я уверен, что много кто использует Kodi исключительно в режиме портативного профиля, т.к. его возможности как кроссплатформенного плеера раскрываются шире в портативном режиме. Именно для этого они и добавили в Kodi “Special protocol” для относительных путей формата special://. Как и кому special:// в следующий раз понадобится, представить не берусь. Ну да, разве что:

antonsoroko commented 8 months ago

@elgatito

Если писать special://home/elementum/Movies/ то где реально файлы будут лежать? Куда оно смотреть будет?

я для теста сделал так

<sources>
    <video>
        <default pathversion="1"></default>
        <source>
            <name>Movies</name>
            <path pathversion="1">special://home/elementum_library/Movies/</path>
            <allowsharing>true</allowsharing>
        </source>
        <source>
            <name>Shows</name>
            <path pathversion="1">special://home/elementum_library/Shows/</path>
            <allowsharing>true</allowsharing>
        </source>
    </video>
</sources>

и в MyVideos121.db реально хранятся именно special://home/elementum_library/*: image

а в elementum стали приходить пути с special://. (физически файлы лежат в /home/user/.kodi/elementum_library/, но коди стал отдавать спец пути.) поэтому я и сделал фикс через TranslatePath().

но я так сделал, так как не нашёл изменения про "В последних версиях Elementum проверяет куда уже пишется сериал/фильм, и пишет в ту же папку."

  1. получается, что мы реально можем просто писать как и прежде в собственную папку библиотеки elementum, у нас по умолчанию тоже special://, но мы его сразу разворачиваем в реальный путь, а пути от kodi (которые он не разворачивает) мы будем тогда игнорировать. но в итоге, и коди и элементум будут указывать в одну директорию. правильно я понял?

  2. я так понимаю, что "В последних версиях Elementum проверяет куда уже пишется сериал/фильм, и пишет в ту же папку." было сделано, чтобы не создавались дубликаты, так? или были ещё причины?

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

3.

В каких случаях использование special:// в sources.xml может помочь и как?

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

pavelmxx commented 8 months ago

Совсем забыл, в сам Kodi можно заходить под разными профилями, выбирать какие свойства новый профиль будет наследовать от мастерпрофиля Kodi. Возможно там, в режиме использования нескольких профилей Kodi будут подводные камни, которые решаются с помощью special://. Это догадки, я никогда не пользовался мультипрофилями. Хотя иметь отдельный профиль для детей с детским контентом и обрезанным управлением – хорошая идея.

Даже не понимаю как можно использовать Elementum без относительных путей special://. В Windows, Linux, Mac OS сами профили пользователя лежат по разным путям. Соответственно и профили Kodi будут лежать в разных путях, например /home/[username]/.kodi. То есть получается, что если я перелогонюсь под другим пользователем или изменю имя учетной записи, скопирую себе в профиль OC профиль Kodi, то записи полного пути в userdata\Database\MyVideos121.db не дадут мне воспользоваться библиотекой в Elementum.

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

Интересно узнать статистику, но что-то мне подсказывает, что 95% пользователей используют Elementum исключительно по схеме Elementum>Фильмы>Trakt>Популярные. И не нужны им никакие библиотеки и синхронизации с Trakt.

Пользуясь случаем еще маленькое замечание, давно бросается в глаза опечатка в слове “Буфферизируется”, написанном с двумя “фф” в окне буферизации перед началом проигрывания фильма. Тем более, что вариант “буферизуется” вместо “буферизируется” был бы более каноничным, как мне кажется. Хотя не думаю, что это уже было закреплено правилами языка. Некоторые вообще используют как англицизм на кириллице “буфферинг”, с правильными в таком случае двумя “фф”.

antonsoroko commented 8 months ago

@pavelmxx

давно бросается в глаза опечатка в слове “Буфферизируется”,

https://github.com/elgatito/plugin.video.elementum/blob/master/resources/language/Russian/strings.po#L1955 жмите в правом верхнем углу на карандаш и вносите правки :-) сейчас для простых правок даже не надо клонировать git репозиторий локально и использовать редактор кода, всё в браузере.

Интересно узнать статистику

лично я использую "мой прогресс" для сериалов (я бы сказал, что это была та самая киллер фича, из-за которой я начал использовать elementum вместо quasar) и список "мои просматриваемые" для фильмов. т.е. библиотека мне не нужна, а синхронизации с Trakt нужна.

pavelmxx commented 8 months ago

@elgatito Протестировал на неттопе ~2011 года "Intel(R) Atom(TM) CPU D425 1.80GHz, 1 Гб, Nvidia ION, HDD, Windows 10 x64", может справится с теми же 15000 трансформациями за 6 минут, если ничто другое его не загружает.

Сегодня при первом запуске для тестирования трансформаций, Elementum захотел пописать в userdata\addon_data\plugin.video.elementum\cache.db на всех компьютерах. Судя по диспетчеру задач, процесс Elementum отправил на запись 2,6 Гб, писал около получаса на неттопе Intel Atom. Поэтому в этот конкретный раз трансформация длилась 40 минут. Последующие разы успевал за 6 минут. Было еще 15 минут, но там Windows Defender, видимо, быструю проверку проводил. 1Гб RAM, одно ядро 1,8гГц на Windows 10… ну понятно же. В целом, даже на таком железе трансформации кажутся юзабильными. Остальные операции, как отметки о просмотренном или добавление нескольких десятков новых фильмов, там происходят не быстрее. Тем более, что когда трансформации происходят, ни HDD, ни ЦП, особо не загружает, не заметил. Бутылочным горлышком для трансформации является скорость работы с оперативной памятью, что ли? Надо все-таки со счетчиками в "системном мониторе" понаблюдать будет. Собственно, это и так должно быть ясно тому, кто знает как Python и его компилятор работает.

ПК на Core i7 при той же работе с cache.db в том же объеме в 2,6 Гб, затратил на трансформацию 8 минут. Собственно, все эти 8 минут и длилось обновление/заполнение кэша Elementum. Во второй запуск Kodi на трансформации ушло те же 28 секунд, как и раньше, и с кэшем Elementum уже в этот раз не работал.

Я так и не понял точно, что же там за кэш. Вроде Trakt.tv и TMDB. Для чего он нужен и какой алгоритм его заполнения/обновления. Нормально ли, что процесс Elementum совершает операций записи на запись 2,6 Гб, когда размер самого файла cache.db 250Мб. В любом случае, настроить счетчики в "системном мониторе", чтобы более детально посмотреть как писались эти 2,6Гб, я не успел, не предвидел, да и безразлично.

Если бы @antonsoroko поделился бинарником на Android, то интересно было бы посмотреть на нем, используя мою библиотеку сериалов. У меня все настроено. Пути в special://.

По поводу целесообразности, если у кого трансформация будет долгой. Возможно, можно было бы добавить в настройки Elementum пункт Использовать special:// в пути библиотеки. Или Сделать проверку sources.xml или settings.xml на предмет <setting id="library_path">special://*/</setting>, а потом уже запускать либо старый вариант работы с путями, либо через TranslatePath(). Таким образом, если кому-то длительность трансформаций будет досаждать, то пусть использует полные пути или смирится с отсутствием новых серий/длительным ожиданием на старом железе. Но, наверное, это все необязательные хотелки, ничего критичного, все и так зашибись. Скриптом подкладывать новые .strm файлы серий никто не запрещал. @antonsoroko

сейчас для простых правок даже не надо клонировать git репозиторий

Надо клонировать, не дает ничего иначе. Клонировал в вебе (нажал clone). Теперь доступны "edit in place" и "commit changes". Раньше Git ставить надо было, я так понимаю. Попробую освоить на досуге. Действительно будет проще и быстрее. Но как бы только из исщуc пушера быстро не превратиться в граммар-нази или еще что похуже. Все равно Автор все в одно лицо делает, ну и Вы где-то подсобить можете. Не думаю, что какая-то стилистическая полировка в Elementum будет уместна. Интересно было бы FAQ подробный к Elementum все-таки иметь, но я разве что половину понимаю, что и как работает. Уже, наверное, несколько лет мучает вопрос, что же там за "Автоматический поиск" и как он работает. Тот который "Автоматический поиск позволяет искать среди подключенных провайдеров для поиска фильмов…", включаю – ничего не происходит. Или как настроить работу Elementum через прокси. Ну никак не получается послать Elementum в прокси http или socks. Может оно все и вовсе не работает. Да много всего непонятно, в частности алгоритм работы с Burst в плане настроек и ответственности, где Burst, где Elementum виноват. Да и никто не понимает, поэтому в ветку Burst не пишут.

antonsoroko commented 8 months ago

@pavelmxx

бинарником на Android,

С андроид надо знать архитектуру и версию системы, чтобы скомпилировать правильно или как бинарник или как .so библиотеку. на всякий случай я скомпилировал и то и другое, но под arm: https://disk.yandex.ru/d/I681OA3NP1m0Jg все файлы положите в .kodi/addons/plugin.video.elementum/resources/bin/android_arm/.

если у вас что-то другое - пишите архитектуру и версию.

можно было бы добавить в настройки Elementum пункт Использовать special:// в пути библиотеки.

можно конечно, но по-моему, слишком сложно для такой редкой фичи, если у человека special://, значит он знает что делает и ему скорее нужен TranslatePath, чем нет. Если у человека нет special:// - то он ничего и не заметит по скорости, код не запускает TranslatePath на обычных путях.

Надо клонировать, не дает ничего иначе.

я имел ввиду локально не надо, на свой пк. соответственно, локально редактировать тоже не надо. ну \то для простых вещей, конечно.

Не думаю, что какая-то стилистическая полировка в Elementum будет уместна.

почему бы и нет. грамотный перевод - это хорошо.

Интересно было бы FAQ подробный к Elementum все-таки иметь, но я разве что половину понимаю, что и как работает.

это да :-) я и сам много чего не знаю как именно работает, каждый раз приходится смотреть код и не всегда понимаю всё равно :-) но мало кто любит писать документацию.

что же там за "Автоматический поиск" и как он работает

судя по коду он смотрит в "trending movies from Trakt" и делает по ним поиск торрентов, если торрент был найден - то добавляет в библиотеку. см. https://github.com/elgatito/elementum/blob/636ec924ce75d69eefd176ee81f9f5855c6ce2d3/scrape/scraper.go#L216 https://github.com/elgatito/elementum/blob/636ec924ce75d69eefd176ee81f9f5855c6ce2d3/scrape/scraper.go#L203

где Burst, где Elementum виноват

если коротко, то elementum только говорит что искать, а burst (или любой другой провайдер поиска, как jackett) ищет и фильтрует по качеству/типу релиза/прочему. ещё elementum сортирует полученные данные, но по большому счету к самому поиску он не имеет отношения. ищет именно burst. правда если включить прокси через elementum, но сетевые запросы пойдут через, насколько я помню, но это больше для обхода блокировок было сделано когда-то. честно говоря, более подробно я наверное и не расскажу, я ещё знаю как парсинг сайтов burst делает, так как писал свои парсеры, но вот про реализацию прокси не знаю, так как не пользовался.

pavelmxx commented 8 months ago

все файлы положите в .kodi/addons/plugin.video.elementum/resources/bin/android_arm/.

если у вас что-то другое - пишите архитектуру и версию.

Не хочет. Мне так казалось, что Android ARM64, это уже лет 10 как дефолтная платформа.

2023-12-17 19:48:39.966 T:3996     info <general>: -----------------------------------------------------------------------
2023-12-17 19:48:39.966 T:3996     info <general>: Starting Kodi (20.2 (20.2.0) Git:20230629-5f418d0b13). Platform: Android ARM 64-bit
2023-12-17 19:48:39.966 T:3996     info <general>: Using Release Kodi x64
2023-12-17 19:48:39.966 T:3996     info <general>: Kodi compiled 2023-06-29 by Clang 9.0.9 (https://android.googlesource.com/toolchain/llvm-project a2a1e703c0edb03ba29944e529ccbf457742737b) for Android ARM 64-bit API level 21 (API level 21)
2023-12-17 19:48:39.967 T:3996     info <general>: Running on samsung SM-G965F with Android 10.0.0 API level 29, kernel: Linux ARM 64-bit version 4.9.118-23733710
2023-12-17 19:48:39.967 T:3996     info <general>: FFmpeg version/source: 4.4.1-Kodi
2023-12-17 19:48:39.967 T:3996     info <general>: 8 CPU cores available
2023-12-17 19:48:39.967 T:3996     info <general>: Product: star2ltexx, Device: star2lte, Board: exynos9810 - Manufacturer: samsung, Brand: samsung, Model: SM-G965F, Hardware: samsungexynos9810
2023-12-17 19:48:39.972 T:3996     info <general>: External storage path = /storage/emulated/0; status = ok
2023-12-17 19:48:39.972 T:3996     info <general>: ARM Features: Neon enabled
2023-12-17 19:48:39.972 T:3996     info <general>: special://xbmc/ is mapped to: /data/user/0/org.xbmc.kodi/cache/apk/assets
2023-12-17 19:48:39.972 T:3996     info <general>: special://xbmcbin/ is mapped to: /data/user/0/org.xbmc.kodi/cache/apk/assets
2023-12-17 19:48:39.972 T:3996     info <general>: special://xbmcbinaddons/ is mapped to: /data/user/0/org.xbmc.kodi/cache/apk/assets/addons
2023-12-17 19:48:39.972 T:3996     info <general>: special://masterprofile/ is mapped to: /storage/emulated/0/Android/data/org.xbmc.kodi/files/.kodi/userdata
2023-12-17 19:48:39.972 T:3996     info <general>: special://envhome/ is mapped to: /storage/emulated/0/Android/data/org.xbmc.kodi/files
2023-12-17 19:48:39.972 T:3996     info <general>: special://home/ is mapped to: /storage/emulated/0/Android/data/org.xbmc.kodi/files/.kodi
2023-12-17 19:48:39.972 T:3996     info <general>: special://temp/ is mapped to: /storage/emulated/0/Android/data/org.xbmc.kodi/files/.kodi/temp
2023-12-17 19:48:39.973 T:3996     info <general>: special://logpath/ is mapped to: /storage/emulated/0/Android/data/org.xbmc.kodi/files/.kodi/temp
2023-12-17 19:48:39.973 T:3996     info <general>: Webserver extra whitelist paths: 
2023-12-17 19:48:39.973 T:3996     info <general>: The executable running is: /data/app/org.xbmc.kodi-ElvwY1FqAmo-m_uo5YVx6Q==/lib/arm64/libkodi.so
2023-12-17 19:48:39.980 T:3996     info <general>: Local hostname: 
2023-12-17 19:48:39.980 T:3996     info <general>: Log File is located: /storage/emulated/0/Android/data/org.xbmc.kodi/files/.kodi/temp/kodi.log
2023-12-17 19:48:39.980 T:3996     info <general>: -----------------------------------------------------------------------
…………………………………………………………………………………………………………
2023-12-17 19:48:46.256 T:4550  warning <general>: [plugin.video.elementum] Cannot automatically detect platform. Falling back to legacy way.
2023-12-17 19:48:46.258 T:4550  warning <general>: [plugin.video.elementum] Detected binary folder: /storage/emulated/0/Android/data/org.xbmc.kodi/files/.kodi/addons/plugin.video.elementum/resources/bin/android_arm64
2023-12-17 19:48:46.261 T:4550  warning <general>: [plugin.video.elementum] Binary detection. Version: v0.1.98, Source: /storage/emulated/0/Android/data/org.xbmc.kodi/files/.kodi/addons/plugin.video.elementum/resources/bin/android_arm64/elementum, Destination: /data/user/0/org.xbmc.kodi/cache/apk/assets/files/plugin.video.elementum/bin/android_arm64/elementum
2023-12-17 19:48:46.270 T:4550  warning <general>: [plugin.video.elementum] Updating elementum daemon from /storage/emulated/0/Android/data/org.xbmc.kodi/files/.kodi/addons/plugin.video.elementum/resources/bin/android_arm64 => /data/user/0/org.xbmc.kodi/cache/apk/assets/files/plugin.video.elementum/bin/android_arm64 ...
2023-12-17 19:48:46.435 T:4550  warning <general>: [plugin.video.elementum] Deleting stale files set()
2023-12-17 19:48:46.435 T:4550  warning <general>: [plugin.video.elementum] Binary detection: [ Source: /storage/emulated/0/Android/data/org.xbmc.kodi/files/.kodi/addons/plugin.video.elementum/resources/bin/android_arm64/elementum, Destination: /data/user/0/org.xbmc.kodi/cache/apk/assets/files/plugin.video.elementum/bin/android_arm64/elementum ]
2023-12-17 19:48:46.435 T:4550  warning <general>: [plugin.video.elementum] Binary dir: /data/user/0/org.xbmc.kodi/cache/apk/assets/files/plugin.video.elementum/bin/android_arm64, item: /data/user/0/org.xbmc.kodi/cache/apk/assets/files/plugin.video.elementum/bin/android_arm64/elementum 
2023-12-17 19:48:46.480 T:4550  warning <general>: [plugin.video.elementum] elementumd: start args: ['/data/user/0/org.xbmc.kodi/cache/apk/assets/files/plugin.video.elementum/bin/android_arm64/elementum', '-remotePort=65221', '-localPort=65220'], kw: {'stdout': -1, 'stderr': -2, 'cwd': '/data/user/0/org.xbmc.kodi/cache/apk/assets/files/plugin.video.elementum/bin/android_arm64', 'env': {'PATH': '/sbin:/system/sbin:/product/bin:/apex/com.android.runtime/bin:/system/bin:/system/xbin:/odm/bin:/vendor/bin:/vendor/xbin', 'MOUNT_SYSTEM_OK': 'true', 'ANDROID_BOOTLOGO': '1', 'ANDROID_ROOT': '/system', 'ANDROID_ASSETS': '/system/app', 'ANDROID_DATA': '/data', 'ANDROID_STORAGE': '/storage', 'ANDROID_RUNTIME_ROOT': '/apex/com.android.runtime', 'ANDROID_TZDATA_ROOT': '/apex/com.android.tzdata', 'EXTERNAL_STORAGE': '/sdcard', 'ASEC_MOUNTPOINT': '/mnt/asec', 'BOOTCLASSPATH': '/apex/com.android.runtime/javalib/core-oj.jar:/apex/com.android.runtime/javalib/core-libart.jar:/apex/com.android.runtime/javalib/okhttp.jar:/apex/com.android.runtime/javalib/bouncycastle.jar:/apex/com.android.runtime/javalib/apache-xml.jar:/system/framework/framework.jar:/system/framework/ext.jar:/system/framework/telephony-common.jar:/system/framework/voip-common.jar:/system/framework/ims-common.jar:/system/framework/knoxsdk.jar:/system/framework/knoxanalyticssdk.jar:/system/framework/smartbondingservice.jar:/system/framework/securetimersdk.jar:/system/framework/fipstimakeystore.jar:/system/framework/timakeystore.jar:/system/framework/sec_sdp_sdk.jar:/system/framework/sec_sdp_hidden_sdk.jar:/system/framework/drutils.jar:/system/framework/android.test.base.jar:/system/framework/ucmopensslenginehelper.jar:/system/framework/esecomm.jar:/apex/com.android.conscrypt/javalib/conscrypt.jar:/apex/com.android.media/javalib/updatable-media.jar', 'DEX2OATBOOTCLASSPATH': '/apex/com.android.runtime/javalib/core-oj.jar:/apex/com.android.runtime/javalib/core-libart.jar:/apex/com.android.runtime/javalib/okhttp.jar:/apex/com.android.runtime/javalib/bouncycastle.jar:/apex/com.android.runtime/javalib/apache-xml.jar:/system/framework/framework.jar:/system/framework/ext.jar:/system/framework/telephony-common.jar:/system/framework/voip-common.jar:/system/framework/ims-common.jar:/system/framework/knoxsdk.jar:/system/framework/knoxanalyticssdk.jar:/system/framework/smartbondingservice.jar:/system/framework/securetimersdk.jar:/system/framework/fipstimakeystore.jar:/system/framework/timakeystore.jar:/system/framework/sec_sdp_sdk.jar:/system/framework/sec_sdp_hidden_sdk.jar:/system/framework/drutils.jar:/system/framework/android.test.base.jar:/system/framework/ucmopensslenginehelper.jar:/system/framework/esecomm.jar', 'SYSTEMSERVERCLASSPATH': '/system/framework/services.jar:/system/framework/ethernet-service.jar:/system/framework/wifi-service.jar:/system/framework/com.android.location.provider.jar:/system/framework/uibc_java.jar:/system/framework/ssrm.jar', 'DOWNLOAD_CACHE': '/data/cache', 'MC_AUTH_TOKEN_PATH': '/efs', 'KNOX_STORAGE': '/data/knox/ext_sdcard', 'ENC_EMULATED_STORAGE_TARGET': '/storage/enc_emulated', 'ANDROID_SOCKET_zygote': '15', 'ANDROID_SOCKET_usap_pool_primary': '16', 'KODI_ANDROID_SYSTEM_LIBS': '/system/lib64', 'KODI_ANDROID_LIBS': '/data/app/org.xbmc.kodi-ElvwY1FqAmo-m_uo5YVx6Q==/lib/arm64', 'KODI_ANDROID_APK': '/data/app/org.xbmc.kodi-ElvwY1FqAmo-m_uo5YVx6Q==/base.apk', 'KODI_BIN_HOME': '/data/user/0/org.xbmc.kodi/cache/apk/assets', 'KODI_HOME': '/data/user/0/org.xbmc.kodi/cache/apk/assets', 'KODI_BINADDON_PATH': '/data/user/0/org.xbmc.kodi/cache/lib', 'HOME': '/storage/emulated/0/Android/data/org.xbmc.kodi/files', 'PYTHONHOME': '/data/user/0/org.xbmc.kodi/cache/apk/assets/python3.11', 'PYTHONPATH': '', 'PYTHONOPTIMIZE': '1', 'PYTHONNOUSERSITE': '1', 'SSL_CERT_FILE': '/data/user/0/org.xbmc.kodi/cache/apk/assets/system/certs/cacert.pem', 'OS': 'Linux', 'LC_CTYPE': 'C.UTF-8', 'LD_LIBRARY_PATH': '/data/user/0/org.xbmc.kodi/cache/apk/assets/files/plugin.video.elementum/bin/android_arm64:'}, 'close_fds': True}
2023-12-17 19:48:46.485 T:4550  critical <general>: [plugin.video.elementum] Unable to start binary: [Errno 13] Permission denied: '/data/user/0/org.xbmc.kodi/cache/apk/assets/files/plugin.video.elementum/bin/android_arm64/elementum'
2023-12-17 19:48:46.499 T:4550  warning <general>: [plugin.video.elementum] elementumd: loading shared library from /data/user/0/org.xbmc.kodi/cache/apk/assets/files/plugin.video.elementum/bin/android_arm64/elementum.so
2023-12-17 19:48:46.500 T:4550  critical <general>: [plugin.video.elementum] Unable to start library: dlopen failed: "/data/data/org.xbmc.kodi/cache/apk/assets/files/plugin.video.elementum/bin/android_arm64/elementum.so" is 32-bit instead of 64-bit
2023-12-17 19:48:46.823 T:4265     info <general>: service.watchedlist: WatchedList Database Service starting...
antonsoroko commented 8 months ago

@pavelmxx ох, у вас android просто, не android TV, я использую android TV и там до сих пор 32 это дефолт (для ОС, не для проца, но важна именно ОС). Новые файлы https://disk.yandex.ru/d/XoJ-juiuI6lmIg

pavelmxx commented 8 months ago

@antonsoroko Серии добавляет. Но точно оценить продуктивность невозможно, т.к. это версия без логирования. Непонятно где начинается и заканчивается TranslatePath. Предположительно:

2023-12-18 21:41:01.575 T:23873    info <general>: VideoInfoScanner: Starting scan ..
2023-12-18 21:41:01.764 T:22814 warning <general>: [plugin.video.elementum] INFO  library      ▶ SyncMoviesList   Movies list (5349578) added 864 items
2023-12-18 21:41:04.767 T:22814 warning <general>: [plugin.video.elementum] INFO  library      ▶ func2            Trakt sync finished in 5.08544565s
2023-12-18 21:41:07.823 T:23873    info <general>: VideoInfoScanner: Finished scan. Scanning for video info took 6250 ms
2023-12-18 21:44:31.677 T:22814 warning <general>: [plugin.video.elementum] INFO  library      ▶ updateLibraryShows  Library updated in 3m23.246024778s
2023-12-18 21:44:32.185 T:22778    info <general>: JSONRPC Server: New connection added

Это в условиях отсутствия нового содержимого, естественно. 3 минуты, значит.

antonsoroko commented 8 months ago

@pavelmxx

updateLibraryShows

да, это оно. вроде терпимо для огромной библиотеки и мобильного устройства. а сколько времени занимало для обычных путей (или для special путей, но с версией елементума без TranslatePath) не известно?

pavelmxx commented 8 months ago

С оригинальным бинарником:

2023-12-18 23:00:45.832 T:29105 warning <general>: [plugin.video.elementum] ERRO  library      ▶ writeShowStrm    mkdir special:/home/elementum/Shows/1923 (2022): no such file or directory
2023-12-18 23:00:45.832 T:29105 warning <general>: [plugin.video.elementum] ERRO  library      ▶ updateLibraryShows  Error updating show: mkdir special:/home/elementum/Shows/1923 (2022): no such file or directory
2023-12-18 23:00:45.833 T:29105 warning <general>: [plugin.video.elementum] ERRO  library      ▶ writeShowStrm    mkdir special:/home/elementum/Shows/Hijack (2023): no such file or directory
2023-12-18 23:00:45.833 T:29105 warning <general>: [plugin.video.elementum] ERRO  library      ▶ updateLibraryShows  Error updating show: mkdir special:/home/elementum/Shows/Hijack (2023): no such file or directory
2023-12-18 23:00:45.834 T:29105 warning <general>: [plugin.video.elementum] INFO  library      ▶ updateLibraryShows  Library updated in 4.635389228s
2023-12-18 23:00:46.081 T:29034    info <general>: JSONRPC Server: New connection added
2023-12-18 23:00:46.115 T:29034    info <general>: JSONRPC Server: Disconnection detected
2023-12-18 23:00:46.190 T:31672    info <general>: VideoInfoScanner: Starting scan ..
2023-12-18 23:00:52.036 T:31672    info <general>: VideoInfoScanner: Finished scan. Scanning for video info took 5852 ms
2023-12-18 23:00:52.077 T:29034    info <general>: JSONRPC Server: New connection added
antonsoroko commented 8 months ago

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

в любом случае, я думаю как и прежде:

если у человека special://, значит он знает что делает и ему скорее нужен TranslatePath, чем нет. Если у человека нет special:// - то он ничего и не заметит по скорости, код не запускает TranslatePath на обычных путях.

соответственно, я за то чтобы замержить https://github.com/elgatito/elementum/pull/88 , а не сделать "Просто не учитывать пути начинающиеся с special://. Т.е. писать просто в папку как раньше, а дальше как Коди эти файлы возьмёт - уже дело Коди." так как, как я понял, это может привести к дубликатам.

но про дубликаты я бы выслушал что скажет Денис, я может не правильно понял зачем было сделана запись в директории отдаваемые коди, а не те, что в настройках у элементума.

pavelmxx commented 8 months ago

@antonsoroko

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

Где же медленнее? Для updateLibraryShows "4.635389228s" = 5 секунд. Или я что-то не понял. А "VideoInfoScanner" за "5852 ms" = 6 секунд. Просто в предпоследний раз Kodi саму библиотеку не сканировал, а может по логу ниже было или выше. Ошибки вида warning <general>: [plugin.video.elementum] [31mERRO library ▶ writeShowStrm [0mmkdir special:// заняли около 500 строк и писались 4 секунды. У меня 238 сериалов на аккаунте Trakt.tv на андроиде, а не 290.

соответственно, я за то чтобы замержить

Двумя руками за. Тем более что добавление десятка фильмов или сериала может занять не меньше времени на слабом железе.

но про дубликаты я бы выслушал что скажет Денис

Точно помню, что либо я когда-то эти дубликаты сам ловил, либо читал где-то тут. Полное ощущение, что такой баг был, и его поправили давно. Может такое происходит в случае слияния случайно созданных дубликатов на TMBD, TVDB, Trakt.tv. Или имя сериала TVDB меняют с The Bridge (2011) на BronBroen (2011), другая папка, дублирующий набор серий в библиотеке. А "חטופים (2010)" с 2010 года была Prisoners of War, Hatufim, Khatufim, папка, соответственно, менялась.

Update. ShowID не изменился, а имя поменяли, к примеру, а папку с новым именем, взятым только что с TVDB, Elementum найти не может. Он лезет в MyVideos121.db и смотрит в какой папке под этим ShowID лежит сериал, а там как раз путь special://. Это гипотеза, не знаю как он работал что раньше, что сейчас. Update 2. Как я понял, изначально библиотеку MyVideos121.db из nfo и strm файлов заполняет только сам Kodi и его скраперы, которые успешно работают со special://. Elementum этим не занимается совсем. А добавление новых серий происходит другим путем. Elementum посредством Trakt.tv получает информацию о новых сериях, и чтобы создать новый strm файл, имя папки берет напрямую с TVDB, если папку с таким именем не находит, то уточняет через ShowID в MyVideos121.db место, куда класть новые strm. Опять же – гипотеза. Чего-то ерунду немного написал, не сходится, а если папка не менялась. Но ход его мыслей должен быть приблизительно такой. Значит, подразумевая возможное изменение папки, Elementum вообще не смотрит на папки, а сразу лезет в MyVideos121.db при добавлении серий.

antonsoroko commented 8 months ago

@pavelmxx случайно опять зашёл сюда и прочитал апдейты вашего сообщения. гитхаб не шлёт уведомления при изменении сообщения, как и большинство других, учитывайте это, когда добавляете что-то большое. так сказать "хозяйке на заметку" :-)