sadr0b0t / yashlang

PeerTube and YouTube player for Android with local playlists and whitelisted recommendations
GNU General Public License v3.0
50 stars 3 forks source link

Обновить NewPipeExtractor до v0.22.4 или последнего билда #161

Closed sadr0b0t closed 1 year ago

sadr0b0t commented 1 year ago

Оказывается, NewPipeExtractor со времени 0.22.1 (апрель 2022) публиковал релизы, просто маркировал их как "пре-релиз", поэтому они не появлялись на главной https://github.com/TeamNewPipe/NewPipeExtractor/releases

Текущий последний релиз 0.22.4 https://github.com/TeamNewPipe/NewPipeExtractor/releases/tag/v0.22.4 ноябрь 2022 и, надеюсь, в нем ютюб должен быть починен.

Плюс они публикуют билды на https://jitpack.io/, а там, оказывается, можно указывать в качестве зависимости не только таги, но и коммиты и немаркированные билды.

У NewPipe, к примеру, в зависимостях сейчас стоит какой-то коммит или билд, а не маркированная версия https://github.com/TeamNewPipe/NewPipe/blob/v0.24.1/app/build.gradle

implementation 'com.github.TeamNewPipe:NewPipeExtractor:eb07d70a2ce03bee3cc74fc33b2e4173e1c21436'

Поэтому можно обновиться и запулить, наконец, релиз.

https://jitpack.io/

Список опубликованных версий NewPipeExtractor: https://jitpack.io/#TeamNewPipe/NewPipeExtractor/

--

плюс сдесь же между делом заменим jcenter() (на который среда ругается мне уже давно) на mavenCentral() https://github.com/TeamNewPipe/NewPipe/blob/dev/build.gradle

    repositories {
        google()
        mavenCentral()
    }
sadr0b0t commented 1 year ago

И здесь начался какой-то треш.

Для начала здесь https://jitpack.io/#TeamNewPipe/NewPipeExtractor/ версия 0.22.4 маркирована ошибкой, 0.22.3 помечана как ок.

Указал просто новую версию в app/build/gradle как всегда делал

было:

implementation "com.github.TeamNewPipe:NewPipeExtractor:v0.22.1"

стало:

implementation "com.github.TeamNewPipe:NewPipeExtractor:v0.22.3"

получаю при билде:

1: Task failed with an exception.
-----------
* What went wrong:
Execution failed for task ':app:checkDebugAarMetadata'.
> Could not resolve all files for configuration ':app:debugRuntimeClasspath'.
   > Could not find com.github.TeamNewPipe.NewPipeExtractor:NewPipeExtractor:v0.22.3.
     Searched in the following locations:
       - https://dl.google.com/dl/android/maven2/com/github/TeamNewPipe/NewPipeExtractor/NewPipeExtractor/v0.22.3/NewPipeExtractor-v0.22.3.pom
       - https://repo.maven.apache.org/maven2/com/github/TeamNewPipe/NewPipeExtractor/NewPipeExtractor/v0.22.3/NewPipeExtractor-v0.22.3.pom
       - https://jitpack.io/com/github/TeamNewPipe/NewPipeExtractor/NewPipeExtractor/v0.22.3/NewPipeExtractor-v0.22.3.pom
     Required by:
         project :app > com.github.TeamNewPipe:NewPipeExtractor:v0.22.3

т.е. не может найти библиотеку этой версии причем, указывает, что пытается скачать по адресу: https://jitpack.io/com/github/TeamNewPipe/NewPipeExtractor/NewPipeExtractor/v0.22.3/NewPipeExtractor-v0.22.3.pom

и по этому адресу, действительно, ничего нет. Но здесь видно, что оно каким-то фигом подставило в адрес лишний участок NewPipeExtractor

после ручной правки в таком виде адрес работает: https://jitpack.io/com/github/TeamNewPipe/NewPipeExtractor/v0.22.3/NewPipeExtractor-v0.22.3.pom

Но сборочный плагин почему-то не в курсе, откуда он берет этот сегмент - не ясно.

Сначала подумал, что дело, может, в устаревшей сборочной системе (каки-нибудь не дружит с jitpack.io), попытался обновить (по схеме из проекта NewPipe) в build.gradle в корне https://github.com/TeamNewPipe/NewPipe/blob/dev/build.gradle

    dependencies {
        classpath 'com.android.tools.build:gradle:7.4.0'
...
}

(у меня сейчас 'com.android.tools.build:gradle:4.2.0')

но при обновлении вылезли еще какие-то ошибки (судя по всему, последние версии грейдла хотят java 11, а не 8 как у меня, но это не точно). Попытался откатить всё обратно, но проект перестал собираться с версией NewPipeExtractor:v0.22.1, с которой еще вчера всё работало (вероятно, она хранилась где-то в кеше, почему она выкачивалась раньше - не ясно вообще).

Пока мудохался с обновлениями, почистил кэш грейдла ~/.cache/Google ~/.gradle/caches

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

Дальше еще интереснее.

Если посмотреть внимательнее на страницу библиотеки https://jitpack.io/#TeamNewPipe/NewPipeExtractor/

в общем виде шаблон добавления в зависимости он придлагает такой:

    dependencies {
            implementation 'com.github.TeamNewPipe:NewPipeExtractor:Tag'
    }

(как у меня сейчас)

а если кликнуть на конкретную версию, он заполняет шаблон автоматом и он выглядит уже по-другому:

    dependencies {
            implementation 'com.github.TeamNewPipe.NewPipeExtractor:NewPipeExtractor:v0.22.3'
    }

В названии пэкэджа (в мейвене это groupId) появляется NewPipeExtractor в конце. Такое название больше соответствует ссылке, по которой эту зависимость пытается искать билд-скрипт грейдл. Но, сука, ссылки на закачку у них по этой схеме не работают, а работают по схеме без этого дополнительного уточнения.

Если указать в проекте так, как они предлагают, то ошибка ровно та же. Причем, файл pom пытается искать ровно по той же ссылке. Значит он ссылку на закачку по этой схеме не генерит сам, а берет откуда-то еще. Например, из индекса репозитория, в котором она почему-то битая или у меня кэш нужно обновить.

Дальше стал проверять, получится ли выкачать хоть какую старую версию NewPipeExtractor, как-то же собиралось же раньше с ним. Спустился вниз до v0.21.12 - она устанавливается. Версия v0.21.13 уже не устанавливается с абсолютно аналогичной ошибкой. Ниже 0.21.12 тоже устанавливаются (взял несколько навскидку)

У меня в версии 0.9.0 NewPipeExtractor версии 0.22.1 https://github.com/sadr0b0t/yashlang/blob/v0.9.0/app/build.gradle В версии 0.8.0 - v0.21.13 https://github.com/sadr0b0t/yashlang/blob/v0.8.0/app/build.gradle В 0.7.0 - v0.21.9 https://github.com/sadr0b0t/yashlang/blob/v0.7.0/app/build.gradle

Еще появилось предположение, что, может, более новые версии библиотеки собираются, к примеру, с Java11, а у меня Java8 и установщик, к примеру, просто не даёт их качать как недоступные для момоей системы, но при этом выдает какую-то дикую фигню вместо нормальной ошибки.

Смотрю сборочные логи jitpack.io

Эти качаются: https://jitpack.io/com/github/TeamNewPipe/NewPipeExtractor/v0.21.11/build.log https://jitpack.io/com/github/TeamNewPipe/NewPipeExtractor/v0.21.12/build.log

Эти не качаются: https://jitpack.io/com/github/TeamNewPipe/NewPipeExtractor/v0.21.13/build.log https://jitpack.io/com/github/TeamNewPipe/NewPipeExtractor/v0.21.14/build.log https://jitpack.io/com/github/TeamNewPipe/NewPipeExtractor/v0.22.3/build.log

https://jitpack.io/com/github/TeamNewPipe/NewPipeExtractor/v0.21.12/build.log (эта качается)

Build starting...
Start: Sat Dec 11 15:17:51 UTC 2021 6ffdb1d6db27
Git:
v0.21.12-0-g7484b6a
commit 7484b6a098df46731a6c02d722e9aa3de594d84e
Merge: 0b0c39a 795e6df
Author: litetex 
Date:   Sat Dec 11 16:14:11 2021 +0100

    Merge pull request #758 from litetex/release/v0.21.12

Found gradle
Gradle build script
Found gradle version: 7.1.1.
Using gradle wrapper
Picked up JAVA_TOOL_OPTIONS: -Dfile.encoding=UTF-8 -Dhttps.protocols=TLSv1.2
Downloading https://services.gradle.org/distributions/gradle-7.1.1-bin.zip
.10%.20%.30%.40%.50%.60%.70%.80%.90%.100%

------------------------------------------------------------
Gradle 7.1.1
------------------------------------------------------------

Build time:   2021-07-02 12:16:43 UTC
Revision:     774525a055494e0ece39f522ac7ad17498ce032c

Kotlin:       1.4.31
Groovy:       3.0.7
Ant:          Apache Ant(TM) version 1.10.9 compiled on September 27 2020
JVM:          1.8.0_252 (Private Build 25.252-b09)
OS:           Linux 4.14.63-xxxx-std-ipv6-64 amd64

Getting tasks: ./gradlew tasks --all
0m2.952s
Picked up JAVA_TOOL_OPTIONS: -Dfile.encoding=UTF-8 -Dhttps.protocols=TLSv1.2
Tasks: publishToMavenLocal,
Found javadoc task
Running: ./gradlew clean -Pgroup=com.github.TeamNewPipe -Pversion=v0.21.12 -xtest build publishToMavenLocal
Picked up JAVA_TOOL_OPTIONS: -Dfile.encoding=UTF-8 -Dhttps.protocols=TLSv1.2
> Task :clean UP-TO-DATE
> Task :extractor:clean UP-TO-DATE
> Task :timeago-parser:clean UP-TO-DATE
> Task :timeago-parser:compileJava
...

https://jitpack.io/com/github/TeamNewPipe/NewPipeExtractor/v0.21.13/build.log (эта не качается)

Build starting...
Start: Tue Feb 1 12:37:03 UTC 2022 113c08c8b235
Git:
v0.21.13-0-gebc129c
commit ebc129c392316c922d647104712c79623dd46718
Author: TobiGr 
Date:   Tue Feb 1 13:20:34 2022 +0100

    NewPipe Extractor 0.21.13

Init SDKMan
Found gradle
Gradle build script
Found gradle version: 7.1.1.
Using gradle wrapper
Picked up JAVA_TOOL_OPTIONS: -Dfile.encoding=UTF-8 -Dhttps.protocols=TLSv1.2
Downloading https://services.gradle.org/distributions/gradle-7.1.1-bin.zip
.10%.20%.30%.40%.50%.60%.70%.80%.90%.100%

------------------------------------------------------------
Gradle 7.1.1
------------------------------------------------------------

Build time:   2021-07-02 12:16:43 UTC
Revision:     774525a055494e0ece39f522ac7ad17498ce032c

Kotlin:       1.4.31
Groovy:       3.0.7
Ant:          Apache Ant(TM) version 1.10.9 compiled on September 27 2020
JVM:          1.8.0_292 (Private Build 25.292-b10)
OS:           Linux 4.14.63-xxxx-std-ipv6-64 amd64

Getting tasks: ./gradlew tasks --all
0m3.034s
Tasks: publishToMavenLocal,
Found javadoc task
Running: ./gradlew clean -Pgroup=com.github.TeamNewPipe -Pversion=v0.21.13 -xtest assemble publishToMavenLocal
Picked up JAVA_TOOL_OPTIONS: -Dfile.encoding=UTF-8 -Dhttps.protocols=TLSv1.2
> Task :clean UP-TO-DATE
> Task :extractor:clean UP-TO-DATE
> Task :timeago-parser:clean UP-TO-DATE
> Task :timeago-parser:compileJava
...

Никаких существенных отличий на первый взгляд нет. Версия Java и там и там 8, но в 13-й немного освежился билд JVM: 1.8.0_252 (Private Build 25.252-b09) JVM: 1.8.0_292 (Private Build 25.292-b10)

Можно было бы подумать не этот адейт. Но у меня ровно такой же билд, как в 0.21.13:

$ java -version
openjdk version "1.8.0_292"
OpenJDK Runtime Environment (build 1.8.0_292-8u292-b10-0ubuntu1~16.04.1-b10)
OpenJDK 64-Bit Server VM (build 25.292-b10, mixed mode)

Еще отличие - в 0.22.12 команда сборки "gradle build", а начиная с 0.22.12 - "gradle assemble". Но судя по сообщениям в интернетах, у них принципиальной разницы нет, просто билд кроме сборки еще запускает какие-то дополнительные тесты.

В 0.22.3 примерно то же, только обновился gradle, java та же https://jitpack.io/com/github/TeamNewPipe/NewPipeExtractor/v0.22.3/build.log

В 0.22.4 как раз ошибка из-за того, что пытаются использовать 11-ю жабу https://jitpack.io/com/github/TeamNewPipe/NewPipeExtractor/v0.22.4/build.log

sadr0b0t commented 1 year ago

В названии пэкэджа (в мейвене это groupId) появляется NewPipeExtractor в конце. Такое название больше соответствует ссылке, по которой эту зависимость пытается искать билд-скрипт грейдл. Но, сука, ссылки на закачку у них по этой схеме не работают, а работают по схеме без этого дополнительного уточнения.

Так, с этой частью понятно. Корневой проект NewpPipeExtractor у них содержит в засимостях еще три подпроекта, один из которых называется так же - NewPipeExtractor. При загрузке корневого проекта он обращается к одноименному дочернему. https://jitpack.io/com/github/TeamNewPipe/NewPipeExtractor/v0.22.3/NewPipeExtractor-v0.22.3.pom

<?xml version="1.0" encoding="UTF-8"?>
<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.github.TeamNewPipe</groupId>
  <artifactId>NewPipeExtractor</artifactId>
  <version>v0.22.3</version>
  <dependencies>
    <dependency>
      <groupId>com.github.TeamNewPipe.NewPipeExtractor</groupId>
      <artifactId>extractor</artifactId>
      <version>v0.22.3</version>
    </dependency>
    <dependency>
      <groupId>com.github.TeamNewPipe.NewPipeExtractor</groupId>
      <artifactId>NewPipeExtractor</artifactId>
      <version>v0.22.3</version>
    </dependency>
    <dependency>
      <groupId>com.github.TeamNewPipe.NewPipeExtractor</groupId>
      <artifactId>timeago-parser</artifactId>
      <version>v0.22.3</version>
    </dependency>
  </dependencies>
</project>

Это видно в файле pom, интерфейс jitpack это тоже показывает

И в случае с NewPipeExtractor v0.21.12 на месте оба файла - и корневой и дочерний https://jitpack.io/com/github/TeamNewPipe/NewPipeExtractor/v0.21.12/NewPipeExtractor-v0.21.12.pom https://jitpack.io/com/github/TeamNewPipe/NewPipeExtractor/NewPipeExtractor/v0.21.12/NewPipeExtractor-v0.21.12.pom

А в случае с NewPipeExtractor v0.21.13 и всеми старшими сейчас на месте только корневой https://jitpack.io/com/github/TeamNewPipe/NewPipeExtractor/v0.21.13/NewPipeExtractor-v0.21.13.pom - этот ок https://jitpack.io/com/github/TeamNewPipe/NewPipeExtractor/NewPipeExtractor/v0.21.13/NewPipeExtractor-v0.21.13.pom - этот not found

Поэтому их система сборки загрузить не и неможет. Значит ни в репозиториях ни в системе сборки логических глюков никаких нет - всё ок. Остаётся открытым вопрос, куда эти дочерние библиотеки делись, если они раньше точно были. И как собирается обычный NewPipe, если у него в зависимостях указаны именно эти версии из этого репозитория.

sadr0b0t commented 1 year ago

В таком виде интересней:

https://jitpack.io/com/github/TeamNewPipe/NewPipeExtractor/NewPipeExtractor/v0.21.12/

NewPipeExtractor-v0.21.12.jar
NewPipeExtractor-v0.21.12.jar.sha1
NewPipeExtractor-v0.21.12.module
NewPipeExtractor-v0.21.12.module.sha1
NewPipeExtractor-v0.21.12.pom
NewPipeExtractor-v0.21.12.pom.sha1

https://jitpack.io/com/github/TeamNewPipe/NewPipeExtractor/NewPipeExtractor/v0.21.13/

Not found

На последней ссылке на секунду поймал сообщение

File not found. Build ok

сейчас уже просто "Not found"

на других версиях ловится вариант "File not found. Build ok" https://jitpack.io/com/github/TeamNewPipe/NewPipeExtractor/NewPipeExtractor/v0.21.14/

Интересно еще посмотреть, какая версия NewPipe в репозитории F-droid. По идее там должны билды происходить на своих серверах, поэтому все зависимости внешние дожны из публики тянуться.

sadr0b0t commented 1 year ago

О, вот здесь вроде дочерний проект на месте https://jitpack.io/com/github/TeamNewPipe/NewPipeExtractor/NewPipeExtractor/v0.22.2/

NewPipeExtractor-v0.22.2.jar
NewPipeExtractor-v0.22.2.module
NewPipeExtractor-v0.22.2.pom
NewPipeExtractor-v0.22.2.pom.md5
NewPipeExtractor-v0.22.2.pom.sha1

а здесь https://jitpack.io/com/github/TeamNewPipe/NewPipeExtractor/NewPipeExtractor/v0.22.4/

File not found. Build Error
sadr0b0t commented 1 year ago

О, вот здесь вроде дочерний проект на месте https://jitpack.io/com/github/TeamNewPipe/NewPipeExtractor/NewPipeExtractor/v0.22.2/

С этой версией (точнее, произвольным срезом, т.к. это не релиз):

попробую найти рабочие билды посвежее

sadr0b0t commented 1 year ago

NewPipe последний релиз - 0.25.0 (9-е февраля, свежак) https://github.com/TeamNewPipe/NewPipe/blob/v0.25.0/app/build.gradle

NewPipeExtractor указан не тег, а какой-то билд или коммит:

    implementation 'com.github.TeamNewPipe:NewPipeExtractor:7e793c11aec46358ccbfd8bcfcf521105f4f093a'

Билд дочернего проекта на месте https://jitpack.io/com/github/TeamNewPipe/NewPipeExtractor/NewPipeExtractor/7e793c11aec46358ccbfd8bcfcf521105f4f093a/

sadr0b0t commented 1 year ago

implementation 'com.github.TeamNewPipe:NewPipeExtractor:7e793c11aec46358ccbfd8bcfcf521105f4f093a'

Короче, билд норм https://github.com/sadr0b0t/yashlang/commit/5f88af85d6af59d883e3b824ea7f3cf0db65c8f1

Можно релизить. Только ссылки на иконки каналов, похоже, поменялись. Нужно поправить в рекомендациях и, видимо, како-то обновить еще старые внутри базы.

sadr0b0t commented 1 year ago

https://github.com/sadr0b0t/yashlang/commit/5f88af85d6af59d883e3b824ea7f3cf0db65c8f1 https://github.com/sadr0b0t/yashlang/commit/98b54d9e4075749d38ba288cc2cc91a2232febe5

sadr0b0t commented 1 year ago

плюс сдесь же между делом заменим jcenter() (на который среда ругается мне уже давно) на mavenCentral()

https://github.com/sadr0b0t/yashlang/commit/71f630eb876f56b6da352e14028f464dcb3f3897 https://github.com/sadr0b0t/yashlang/commit/8f1ab889b0d6cbc70960b79c39e755eab1f4c9a3