vypivshiy / ani-cli-ru

Просмотр аниме с русской озвучкой в терминале
GNU General Public License v3.0
139 stars 6 forks source link

sh syntax error #12

Open NekonexDev opened 2 years ago

NekonexDev commented 2 years ago

Screenshot_2022-08-06-17-32-12-774_com termux

vypivshiy commented 2 years ago

CLI интерфейс предполагается для использования на desktop linux дистрибутивах, на termux работа не проверялась и вряд ли будет работать, так как для воспроизведения видео требуется mpv плеер.

Для использования на android устройствах придётся самостоятельно с помощью программного API интерфейса делать другую реализацию для вытаскивания ссылок и передачу в установленный плеер за пределы этой оболочки с поддержкой воспроизведения m3u8, mpd ссылок (vlc, например).

Также для aniboom требуется передавать дополнительные заголовки (иначе не начнёт воспроизведение), я таких плееров, которые так умеют, на android не знаю.

vypivshiy commented 2 years ago

UPD: присутствуют проблемы с передачей параметров в ffmpeg на aniboom, возвращает 403 код, а на mpv всё работает

vypivshiy commented 2 years ago

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

TLDR

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

Правильный вариант применения: ffmpeg -user_agent 'Mozilla 5.0' -referer 'https://aniboom.one/' -headers 'Accept-Language: ru-RU' -i 'https://phoebe.cdn-aniboom.com/pq/PQmM3Dx0XDl/master.m3u8' out.mp4

В скрипте неправильно передавались аргументы через ключ -headers, они друг друга перезаписывали

⋊> ~/Рабочий стол ffmpeg -v trace -headers 'user-agent: Mozilla 5.0' -headers 'referer: https://aniboom.one/' -headers 'origin: https://aniboom.one' -headers 'accept-language: ru-RU' -i 'https://phoebe.cdn-aniboom.com/pq/PQmM3Dx0XDl/master.m3u8' out.mp4
ffmpeg version n5.1.2 Copyright (c) 2000-2022 the FFmpeg developers
  built with gcc 12.2.0 (GCC)
  configuration: --prefix=/usr --disable-debug --disable-static --disable-stripping --enable-amf --enable-avisynth --enable-cuda-llvm --enable-lto --enable-fontconfig --enable-gmp --enable-gnutls --enable-gpl --enable-ladspa --enable-libaom --enable-libass --enable-libbluray --enable-libbs2b --enable-libdav1d --enable-libdrm --enable-libfreetype --enable-libfribidi --enable-libgsm --enable-libiec61883 --enable-libjack --enable-libmfx --enable-libmodplug --enable-libmp3lame --enable-libopencore_amrnb --enable-libopencore_amrwb --enable-libopenjpeg --enable-libopus --enable-libpulse --enable-librav1e --enable-librsvg --enable-libsoxr --enable-libspeex --enable-libsrt --enable-libssh --enable-libsvtav1 --enable-libtheora --enable-libv4l2 --enable-libvidstab --enable-libvmaf --enable-libvorbis --enable-libvpx --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxcb --enable-libxml2 --enable-libxvid --enable-libzimg --enable-nvdec --enable-nvenc --enable-opencl --enable-opengl --enable-shared --enable-version3 --enable-vulkan
  libavutil      57. 28.100 / 57. 28.100
  libavcodec     59. 37.100 / 59. 37.100
  libavformat    59. 27.100 / 59. 27.100
  libavdevice    59.  7.100 / 59.  7.100
  libavfilter     8. 44.100 /  8. 44.100
  libswscale      6.  7.100 /  6.  7.100
  libswresample   4.  7.100 /  4.  7.100
  libpostproc    56.  6.100 / 56.  6.100
Splitting the commandline.
Reading option '-v' ... matched as option 'v' (set logging level) with argument 'trace'.
Reading option '-headers' ... matched as AVOption 'headers' with argument 'user-agent: Mozilla 5.0'.
Reading option '-headers' ... matched as AVOption 'headers' with argument 'referer: https://aniboom.one/'.
Reading option '-headers' ... matched as AVOption 'headers' with argument 'origin: https://aniboom.one'.
Reading option '-headers' ... matched as AVOption 'headers' with argument 'accept-language: ru-RU'.
Reading option '-i' ... matched as input url with argument 'https://phoebe.cdn-aniboom.com/pq/PQmM3Dx0XDl/master.m3u8'.
Reading option 'out.mp4' ... matched as output url.
Finished splitting the commandline.
Parsing a group of options: global .
Applying option v (set logging level) with argument trace.
Successfully parsed a group of options.
Parsing a group of options: input url https://phoebe.cdn-aniboom.com/pq/PQmM3Dx0XDl/master.m3u8.
Successfully parsed a group of options.
Opening an input file: https://phoebe.cdn-aniboom.com/pq/PQmM3Dx0XDl/master.m3u8.
[NULL @ 0x55f7bd931540] Opening 'https://phoebe.cdn-aniboom.com/pq/PQmM3Dx0XDl/master.m3u8' for reading
[https @ 0x55f7bd931d80] Setting default whitelist 'http,https,tls,rtp,tcp,udp,crypto,httpproxy'
[https @ 0x55f7bd931d80] No trailing CRLF found in HTTP header. Adding it.
[tcp @ 0x55f7bd935180] Original list of addresses:
[tcp @ 0x55f7bd935180] Address 2a01:4f8:252:1763::2 port 443
[tcp @ 0x55f7bd935180] Address 157.90.210.27 port 443
[tcp @ 0x55f7bd935180] Interleaved list of addresses:
[tcp @ 0x55f7bd935180] Address 2a01:4f8:252:1763::2 port 443
[tcp @ 0x55f7bd935180] Address 157.90.210.27 port 443
[tcp @ 0x55f7bd935180] Starting connection attempt to 2a01:4f8:252:1763::2 port 443
[tcp @ 0x55f7bd935180] Starting connection attempt to 157.90.210.27 port 443
[tcp @ 0x55f7bd935180] Successfully connected to 157.90.210.27 port 443
[https @ 0x55f7bd931d80] request: GET /pq/PQmM3Dx0XDl/master.m3u8 HTTP/1.1
User-Agent: Lavf/59.27.100
Accept: */*
Range: bytes=0-
Connection: close
Host: phoebe.cdn-aniboom.com
Icy-MetaData: 1
accept-language: ru-RU

[https @ 0x55f7bd931d80] header='HTTP/1.1 403 Forbidden'
[https @ 0x55f7bd931d80] http_code=403
[https @ 0x55f7bd931d80] HTTP error 403 Forbidden
https://phoebe.cdn-aniboom.com/pq/PQmM3Dx0XDl/master.m3u8: Server returned 403 Forbidden (access denied)
⋊> ~/Рабочий стол                                                                                                                                                                    16:15:42

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

в документации написано, что можно указать referer, user_agent, headers

⋊> ~/Рабочий стол ffmpeg -v trace -user_agent 'Mozilla 5.0' -referer 'https://aniboom.one/' -headers 'accept-language: ru-RU' -i 'https://phoebe.cdn-aniboom.com/pq/PQmM3Dx0XDl/master.m3u8' out.mp4
ffmpeg version n5.1.2 Copyright (c) 2000-2022 the FFmpeg developers
  built with gcc 12.2.0 (GCC)
  configuration: --prefix=/usr --disable-debug --disable-static --disable-stripping --enable-amf --enable-avisynth --enable-cuda-llvm --enable-lto --enable-fontconfig --enable-gmp --enable-gnutls --enable-gpl --enable-ladspa --enable-libaom --enable-libass --enable-libbluray --enable-libbs2b --enable-libdav1d --enable-libdrm --enable-libfreetype --enable-libfribidi --enable-libgsm --enable-libiec61883 --enable-libjack --enable-libmfx --enable-libmodplug --enable-libmp3lame --enable-libopencore_amrnb --enable-libopencore_amrwb --enable-libopenjpeg --enable-libopus --enable-libpulse --enable-librav1e --enable-librsvg --enable-libsoxr --enable-libspeex --enable-libsrt --enable-libssh --enable-libsvtav1 --enable-libtheora --enable-libv4l2 --enable-libvidstab --enable-libvmaf --enable-libvorbis --enable-libvpx --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxcb --enable-libxml2 --enable-libxvid --enable-libzimg --enable-nvdec --enable-nvenc --enable-opencl --enable-opengl --enable-shared --enable-version3 --enable-vulkan
  libavutil      57. 28.100 / 57. 28.100
  libavcodec     59. 37.100 / 59. 37.100
  libavformat    59. 27.100 / 59. 27.100
  libavdevice    59.  7.100 / 59.  7.100
  libavfilter     8. 44.100 /  8. 44.100
  libswscale      6.  7.100 /  6.  7.100
  libswresample   4.  7.100 /  4.  7.100
  libpostproc    56.  6.100 / 56.  6.100
Splitting the commandline.
Reading option '-v' ... matched as option 'v' (set logging level) with argument 'trace'.
Reading option '-user_agent' ... matched as AVOption 'user_agent' with argument 'Mozilla 5.0'.
Reading option '-referer' ... matched as AVOption 'referer' with argument 'https://aniboom.one/'.
Reading option '-headers' ... matched as AVOption 'headers' with argument 'accept-language: ru-RU'.
Reading option '-i' ... matched as input url with argument 'https://phoebe.cdn-aniboom.com/pq/PQmM3Dx0XDl/master.m3u8'.
Reading option 'out.mp4' ... matched as output url.
Finished splitting the commandline.
Parsing a group of options: global .
Applying option v (set logging level) with argument trace.
Successfully parsed a group of options.
Parsing a group of options: input url https://phoebe.cdn-aniboom.com/pq/PQmM3Dx0XDl/master.m3u8.
Successfully parsed a group of options.
Opening an input file: https://phoebe.cdn-aniboom.com/pq/PQmM3Dx0XDl/master.m3u8.
[NULL @ 0x56145fc6d580] Opening 'https://phoebe.cdn-aniboom.com/pq/PQmM3Dx0XDl/master.m3u8' for reading
[https @ 0x56145fc6de00] Setting default whitelist 'http,https,tls,rtp,tcp,udp,crypto,httpproxy'
[https @ 0x56145fc6de00] No trailing CRLF found in HTTP header. Adding it.
[tcp @ 0x56145fc71300] Original list of addresses:
[tcp @ 0x56145fc71300] Address 2a01:4f8:252:1763::2 port 443
[tcp @ 0x56145fc71300] Address 157.90.210.27 port 443
[tcp @ 0x56145fc71300] Interleaved list of addresses:
[tcp @ 0x56145fc71300] Address 2a01:4f8:252:1763::2 port 443
[tcp @ 0x56145fc71300] Address 157.90.210.27 port 443
[tcp @ 0x56145fc71300] Starting connection attempt to 2a01:4f8:252:1763::2 port 443
[tcp @ 0x56145fc71300] Starting connection attempt to 157.90.210.27 port 443
[tcp @ 0x56145fc71300] Successfully connected to 157.90.210.27 port 443
[https @ 0x56145fc6de00] request: GET /pq/PQmM3Dx0XDl/master.m3u8 HTTP/1.1
User-Agent: Mozilla 5.0
Referer: https://aniboom.one/
Accept: */*
Range: bytes=0-
Connection: close
Host: phoebe.cdn-aniboom.com
Icy-MetaData: 1
accept-language: ru-RU

[https @ 0x56145fc6de00] header='HTTP/1.1 206 Partial Content'
[https @ 0x56145fc6de00] http_code=206
...
DownToTwo commented 1 year ago

Есть костыль, удалить mpv из термукса, поставить mpv из playmarket, скомпилить вот такой код (язык C)

int main(int argc, char** argv){
    char str[8096]="am start -n is.xyz.mpv/.MPVActivity -a android.intent.action.VIEW ";
    system(strcat(str, argv[1]));}

Переименовать в mpv и закинуть в usr/bin/ ну и все можно смотреть аниме в турмуксе (нахуя и зачем это вопрос риторический) (не бейте)

Sokuto-Desu commented 7 months ago

Костыль сверху у меня не заработал (возможно, что-то сделал не так). На данный момент видео запускается через команду mpv в sh, потому заменил /usr/bin/mpv на файлик с простой строчкой:

am start --user 0 -a android.intent.action.VIEW -d "$2" -n is.xyz.mpv/.MPVActivity

Работает идеально. Разве что названия серии не видно, но если похимичить должно быть исправимо.

Обязательно иметь установленный как приложение mpv.