Python requests - парсинг аудио с подзагрузкой

Доброго времени суток, прошу помощи опытных программистов.

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

Скриншот запросов

Скриншот запросов

В самом коде страницы есть только кнопки которые отправляют запросы.

Посмотрев как работают запросы я заметил что они идут по порядку от 0 и так далее, копировав адрес ссылки "https://h6.akniga.club/b/73253/seq32.ts". Если пройти по этой ссылке скачивается файл.

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

import requests
from time import sleep

for i in range(10):
url = f'https://h6.akniga.club/b/73253/seq{i}.ts'
req = requests.get(url)
with open(f'song{i}.mp2t', 'wb') as file:
file.write(req.content)
sleep(0.5)

Беглый гугл подсказал что такой файл можно открыть с помощью - VLC media player, но это не дало результатов. Да и при запросе файл сохраняется как .ts при этом так же не открывается.

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

Кто может подсказать в каком направлении копать дальше.

ссылка на сайт - Тут

P.S. - Книгу выбрал только потому что она относительно не большая.

Правила сообщества

Публиковать могут пользователи с любым рейтингом. Однако!


Приветствуется:

• уважение к читателям и авторам

• конструктивность комментариев

• простота и информативность повествования

• тег python2 или python3, если актуально

• код публиковать в виде цитаты, либо ссылкой на специализированный сайт


Не рекомендуется:

• допускать оскорбления и провокации

• распространять вредоносное ПО

• просить решить вашу полноценную задачу за вас

• нарушать правила Пикабу

0
Автор поста оценил этот комментарий
Написано же что проблема в содержимом файла one.txt
раскрыть ветку (1)
1
Автор поста оценил этот комментарий

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

Файлы .ts относятся к видео а не к аудиофайлам https://qa.yodo.im/t/kak-mne-konvertirovat-fajly-ts-vo-chto-... , поэтому сделать сразу мп3 из них не получится (по крайней мере у меня не вышло), итоговая команда subprocess.run(['ffmpeg', "-protocol_whitelist", 'file,http,https,tcp,tls,crypto', "-i", "pl.m3u8", "-codec", "copy", "output_all.mp4"])

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

subprocess.run(['ffmpeg', '-i', 'output_all.mp4', '-c:a', 'copy', 'aac.aac', "output__all.mp3"])

Так же можно сразу сохранять по прямой ссылке на "pl.m3u8" - subprocess.run(['ffmpeg', "-protocol_whitelist", 'file,http,https,tcp,tls,crypto', "-i", "https://h6.akniga.club/b/73253/pl.m3u8?res=5P2DuWwxqwrqY6HL9...", "-codec", "copy", "output_all.mp4"])


https://superuser.com/questions/692990/use-ffmpeg-copy-codec...


Еще раз спасибо @pvrt, за помощь!

показать ответы
0
Автор поста оценил этот комментарий
Может попробовать использовать http вместо https в ссылке на файл
раскрыть ветку (1)
0
Автор поста оценил этот комментарий

subprocess.run(['ffmpeg', '-protocol_whitelist', "file, http, https, tcp, tls", '-i', './one.txt', 'track.mp3'])


-one.txt

http://h6.akniga.club/b/73253/pl.m3u8?res=5P2DuWwxqwrqY6HL91...


ошибки -

ffmpeg version 6.1.1-full_build-www.gyan.dev Copyright (c) 2000-2023 the FFmpeg developers

built with gcc 12.2.0 (Rev10, Built by MSYS2 project)

configuration: --enable-gpl --enable-version3 --enable-static --pkg-config=pkgconf --disable-w32threads --disable-autodetect --enable-fontconfig --enable-iconv --enable-gnutls --enable-libxml2 --enable-gmp --enable-bzlib --enable-lzma --enable-libsnappy --enable-zlib --enable-librist --enable-libsrt --enable-libssh --enable-libzmq --enable-avisynth --enable-libbluray --enable-libcaca --enable-sdl2 --enable-libaribb24 --enable-libaribcaption --enable-libdav1d --enable-libdavs2 --enable-libuavs3d --enable-libzvbi --enable-librav1e --enable-libsvtav1 --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxavs2 --enable-libxvid --enable-libaom --enable-libjxl --enable-libopenjpeg --enable-libvpx --enable-mediafoundation --enable-libass --enable-frei0r --enable-libfreetype --enable-libfribidi --enable-libharfbuzz --enable-liblensfun --enable-libvidstab --enable-libvmaf --enable-libzimg --enable-amf --enable-cuda-llvm --enable-cuvid --enable-ffnvcodec --enable-nvdec --enable-nvenc --enable-dxva2 --enable-d3d11va --enable-libvpl --enable-libshaderc --enable-vulkan --enable-libplacebo --enable-opencl --enable-libcdio --enable-libgme --enable-libmodplug --enable-libopenmpt --enable-libopencore-amrwb --enable-libmp3lame --enable-libshine --enable-libtheora --enable-libtwolame --enable-libvo-amrwbenc --enable-libcodec2 --enable-libilbc --enable-libgsm --enable-libopencore-amrnb --enable-libopus --enable-libspeex --enable-libvorbis --enable-ladspa --enable-libbs2b --enable-libflite --enable-libmysofa --enable-librubberband --enable-libsoxr --enable-chromaprint

libavutil 58. 29.100 / 58. 29.100

libavcodec 60. 31.102 / 60. 31.102

libavformat 60. 16.100 / 60. 16.100

libavdevice 60. 3.100 / 60. 3.100

libavfilter 9. 12.100 / 9. 12.100

libswscale 7. 5.100 / 7. 5.100

libswresample 4. 12.100 / 4. 12.100

libpostproc 57. 3.100 / 57. 3.100

[in#0 @ 00000127ecc481c0] Error opening input: Invalid data found when processing input

Error opening input file ./one.txt.

Error opening input files: Invalid data found when processing input

показать ответы
0
Автор поста оценил этот комментарий
Предполагаю что причина в этом

Protocol 'https' not on whitelist 'file,crypto,data'!
раскрыть ветку (1)
0
Автор поста оценил этот комментарий

гугл говорит -

Решение состоит в том, чтобы также добавить tcpв белый список протоколов (также tlsесли вы хотите поддерживать HTTPS). Вот моя последняя команда:


ffmpeg -f "concat" -safe "0" -protocol_whitelist "file,http,https,tcp,tls" -i "./inputs.txt" -codec "copy" "./concated.mp4"


вот что делаю я -

subprocess.run(['ffmpeg', '-protocol_whitelist', "file, http, https, tcp, tls", '-i', 'pl.m3u8', 'track.mp3'])


[hls @ 0000023ad00d1b40] Skip ('#EXT-X-VERSION:3')

[hls @ 0000023ad00d1b40] Opening 'https://h11.akniga.club/datakeys/enc.key' for reading

[https @ 0000023ad00da100] Protocol 'https' not on whitelist 'file, http, https, tcp, tls'!

[hls @ 0000023ad00d1b40] Unable to open key file https://h11.akniga.club/datakeys/enc.key

[hls @ 0000023ad00d1b40] Opening 'crypto:seq0.ts' for reading

[crypto @ 0000023ad00da180] Protocol 'crypto' not on whitelist 'file, http, https, tcp, tls'!

[hls @ 0000023ad00d1b40] Failed to open segment 0 of playlist 0

[hls @ 0000023ad00d1b40] Segment 0 of playlist 0 failed too many times, skipping

[hls @ 0000023ad00d1b40] Opening 'crypto:seq1.ts' for reading

[crypto @ 0000023ad00da100] Protocol 'crypto' not on whitelist 'file, http, https, tcp, tls'!

[hls @ 0000023ad00d1b40] Failed to open segment 1 of playlist 0

[hls @ 0000023ad00d1b40] Segment 1 of playlist 0 failed too many times, skipping

[hls @ 0000023ad00d1b40] Opening 'crypto:seq2.ts' for reading

[crypto @ 0000023ad00da100] Protocol 'crypto' not on whitelist 'file, http, https, tcp, tls'!

[hls @ 0000023ad00d1b40] Failed to open segment 2 of playlist 0

[hls @ 0000023ad00d1b40] Segment 2 of playlist 0 failed too many times, skipping

[hls @ 0000023ad00d1b40] Opening 'crypto:seq3.ts' for reading

[crypto @ 0000023ad00da100] Protocol 'crypto' not on whitelist 'file, http, https, tcp, tls'!

[hls @ 0000023ad00d1b40] Failed to open segment 3 of playlist 0

[hls @ 0000023ad00d1b40] Segment 3 of playlist 0 failed too many times, skipping

[hls @ 0000023ad00d1b40] Opening 'crypto:seq4.ts' for reading

[crypto @ 0000023ad00da100] Protocol 'crypto' not on whitelist 'file, http, https, tcp, tls'!

[hls @ 0000023ad00d1b40] Failed to open segment 4 of playlist 0

[hls @ 0000023ad00d1b40] Segment 4 of playlist 0 failed too many times, skipping

[hls @ 0000023ad00d1b40] Opening 'crypto:seq5.ts' for reading

[crypto @ 0000023ad00da100] Protocol 'crypto' not on whitelist 'file, http, https, tcp, tls'!

[hls @ 0000023ad00d1b40] Failed to open segment 5 of playlist 0

[hls @ 0000023ad00d1b40] Segment 5 of playlist 0 failed too many times, skipping

[hls @ 0000023ad00d1b40] Error when loading first segment 'seq0.ts'

[in#0 @ 0000023ad00b8680] Error opening input: Invalid data found when processing input

Error opening input file pl.m3u8.

Error opening input files: Invalid data found when processing input


Ошибок стало больше но в верхней части появилось [hls @ 0000023ad00d1b40] Skip ('#EXT-X-VERSION:3') это значит что моя версия ffmpeg устарела? врядли я установил последнюю с официального сайта.


Ругается на компоненты тоже не понятно почему все файлы скачаны в папку с исполняемым файлом и запускаются файлом pl.m3u8. Как вы и учили в комментариях выше. 

https://blog.yo1.dog/fix-for-ffmpeg-protocol-not-on-whitelis...

там человек на прямую использует только ссылку, но я попробовал так тоже не работает.

показать ответы
0
Автор поста оценил этот комментарий

Блин, ну тебе же всю инструкцию дали.

1. Парсишь все ts файлы в папку

2. Парсишь туда же pl.m3u8

3. Конвертишь в mp3


import subprocess

link = 'pl.m3u8'

subprocess.run(['ffmpeg', '-i', link, 'track.mp3'])

раскрыть ветку (1)
0
Автор поста оценил этот комментарий

Доброго времени суток, могу уточнить у вас как исправить ошибку с ffmpeg -[hls @ 000002ac88250980] Skip ('#EXT-X-VERSION:3')

[hls @ 000002ac88250980] Opening 'https://h11.akniga.club/datakeys/enc.key' for reading

[https @ 000002ac88278c40] Protocol 'https' not on whitelist 'file,crypto,data'!

[hls @ 000002ac88250980] Unable to open key file https://h11.akniga.club/datakeys/enc.key

[hls @ 000002ac88250980] Opening 'crypto:seq0.ts' for reading

[hls @ 000002ac88250980] Opening 'crypto:seq1.ts' for reading

[hls @ 000002ac88250980] Opening 'crypto:seq2.ts' for reading

[hls @ 000002ac88250980] Error when loading first segment 'seq0.ts'

[in#0 @ 000002ac88239dc0] Error opening input: Invalid data found when processing input

Error opening input file pl.m3u8.

Error opening input files: Invalid data found when processing input


Гугл говорит переустановить модуль, пробовал не помогает.

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

показать ответы
0
Автор поста оценил этот комментарий

Блин, ну тебе же всю инструкцию дали.

1. Парсишь все ts файлы в папку

2. Парсишь туда же pl.m3u8

3. Конвертишь в mp3


import subprocess

link = 'pl.m3u8'

subprocess.run(['ffmpeg', '-i', link, 'track.mp3'])

раскрыть ветку (1)
0
Автор поста оценил этот комментарий

Я дико извиняюсь, но или я дурак или лыжи не едут...


import requests

from time import sleep

pl = requests.get('https://h6.akniga.club/b/73253/pl.m3u8?res=Vldo7e6d0K-CiPGC71wrjg&expires=1698751932').content
end = requests.get('https://h11.akniga.club/datakeys/enc.key').content
with open(f'enc.key', 'wb') as file:
file.write(end)
with open('pl.m3u8', 'wb') as file:
file.write(pl)


for i in range(200):
try:
url = f'https://h6.akniga.club/b/73253/seq{i}.ts'
req = requests.get(url)
with open(f'song{i}.mp2t', 'wb') as file:
file.write(req.content)
sleep(0.25)

except Exception as ex_:
print(ex_)
break

показать ответы
0
Автор поста оценил этот комментарий

Не путай тип файла и расширение.

раскрыть ветку (1)
0
Автор поста оценил этот комментарий

Постоянно упираюсь в отсутствие теоретических знаний.

показать ответы
1
Автор поста оценил этот комментарий

Я уже попробовал, все работает))

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

раскрыть ветку (1)
Автор поста оценил этот комментарий

https://t.me/gooblin12


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

показать ответы
1
Автор поста оценил этот комментарий

Тебе нужно спарсить все ts файлы, не объединяя их в один, а также нужны файлы pl.m3u8 и enc.key. Вот уж потом с помощью vlc открывай pl.m3u8

раскрыть ветку (1)
Автор поста оценил этот комментарий

Сейчас попробую дам знать, спасибо за подсказку ;)

показать ответы
1
Автор поста оценил этот комментарий

Что значит какой формат? Там файлы в ts формате, качаешь их и файл плейлиста m3u8. Потом уже можешь ковертнуть плейлист, например, в mp3

раскрыть ветку (1)
Автор поста оценил этот комментарий

Просто я думал что используется этот формат, который указан в контент тайпе.

Иллюстрация к комментарию
показать ответы
1
Автор поста оценил этот комментарий

Тебе нужно спарсить все ts файлы, не объединяя их в один, а также нужны файлы pl.m3u8 и enc.key. Вот уж потом с помощью vlc открывай pl.m3u8

раскрыть ветку (1)
Автор поста оценил этот комментарий

А какой формат использовать при сохранении ?

показать ответы
1
Автор поста оценил этот комментарий

Нет, это векторная иконка кнопки

Иллюстрация к комментарию
раскрыть ветку (1)
Автор поста оценил этот комментарий

А, ну да точно...

2
Автор поста оценил этот комментарий

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

Скорее всего там тупо шифрование, ключ от которого есть в плеере на странице.

раскрыть ветку (1)
Автор поста оценил этот комментарий

"http://www.w3.org/2000/svg" подобная фигня есть на всех кнопках плейра на сайте. Погуглив я понял что это зашифрованные ссылки (но это не точно) но как их разобрать не понятно.

<path d="M0 12.2V1.8A1.73 1.73 0 0 1 2.71.38l7.5 5.2a1.73 1.73 0 0 1 0 2.84l-7.5 5.2A1.73 1.73 0 0 1 0 12.2z" fill-rule="nonzero"></path>

еще есть вот это но я не понял что это.

показать ответы

Темы

Политика

Теги

Популярные авторы

Сообщества

18+

Теги

Популярные авторы

Сообщества

Игры

Теги

Популярные авторы

Сообщества

Юмор

Теги

Популярные авторы

Сообщества

Отношения

Теги

Популярные авторы

Сообщества

Здоровье

Теги

Популярные авторы

Сообщества

Путешествия

Теги

Популярные авторы

Сообщества

Спорт

Теги

Популярные авторы

Сообщества

Хобби

Теги

Популярные авторы

Сообщества

Сервис

Теги

Популярные авторы

Сообщества

Природа

Теги

Популярные авторы

Сообщества

Бизнес

Теги

Популярные авторы

Сообщества

Транспорт

Теги

Популярные авторы

Сообщества

Общение

Теги

Популярные авторы

Сообщества

Юриспруденция

Теги

Популярные авторы

Сообщества

Наука

Теги

Популярные авторы

Сообщества

IT

Теги

Популярные авторы

Сообщества

Животные

Теги

Популярные авторы

Сообщества

Кино и сериалы

Теги

Популярные авторы

Сообщества

Экономика

Теги

Популярные авторы

Сообщества

Кулинария

Теги

Популярные авторы

Сообщества

История

Теги

Популярные авторы

Сообщества

Недвижимость и ремонт

Теги

Популярные авторы

Сообщества