Open NekonexDev opened 2 years ago
CLI интерфейс предполагается для использования на desktop linux дистрибутивах, на termux работа не проверялась и вряд ли будет работать, так как для воспроизведения видео требуется mpv плеер.
Для использования на android устройствах придётся самостоятельно с помощью программного API интерфейса делать другую реализацию для вытаскивания ссылок и передачу в установленный плеер за пределы этой оболочки с поддержкой воспроизведения m3u8, mpd ссылок (vlc, например).
Также для aniboom требуется передавать дополнительные заголовки (иначе не начнёт воспроизведение), я таких плееров, которые так умеют, на android не знаю.
UPD: присутствуют проблемы с передачей параметров в ffmpeg на aniboom, возвращает 403 код, а на mpv всё работает
Начал потихоньку переделывать проект, всё же с передачей аргументов была проблема
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
...
Есть костыль, удалить 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/ ну и все можно смотреть аниме в турмуксе (нахуя и зачем это вопрос риторический) (не бейте)
Костыль сверху у меня не заработал (возможно, что-то сделал не так). На данный момент видео запускается через команду mpv в sh, потому заменил /usr/bin/mpv на файлик с простой строчкой:
am start --user 0 -a android.intent.action.VIEW -d "$2" -n is.xyz.mpv/.MPVActivity
Работает идеально. Разве что названия серии не видно, но если похимичить должно быть исправимо.
Обязательно иметь установленный как приложение mpv.