Форум сайта python.su
124
Rodegast
Я сделал простенький скрипт который от туда видео скачивает, вот только для этого нужно знать id видеопотока, а для этого приходится в отладчик лезть…
import requests resp = requests.get('https://api.altube.ru/api/v1/channels/intuit/playlists/metacomputation') print(resp.json()) import subprocess m3u8_url = "https://cdn.altube.ru/4dc475fef6/360p.m3u8" subprocess.run([ "ffmpeg", "-i", m3u8_url, "-c", "copy", "video_360p.mp4" ])
Офлайн
857
xam1816Наверное, можно как-то для верхней ссылки на видео получить m3u8. Я пока не смотрел.
там через api можно все ссылки сразу получить
Офлайн
186
> там через api можно все ссылки сразу получить, и закачать через ffmpeg
Попробовал, не получилось. Для этого нужно что бы сайт отдавал видео напрямую, а это он не делает.
Офлайн
186
Основные изменения по проекту от 16.03.2026
1) Запуск репозитория с расширениями для платформы https://gitflic.ru/project/meta-test/extensions
Сейчас доступны расширения для selebrow и Report Portal
2) Добавлено расширение для moon
3) Добавлен атрибут no_vacuum для тестов
4) Обеспечена проверка значений атрибутов команд на стадии загрузки, а не выполнения
5) Поддержка HTTP-авторизации перенесена в команду URL
6) Исправлен ряд ошибок, улучшена отказоустойчивость платформы
7) Meta Test внесён в реестр программного обеспечения минцифры
Офлайн
857
RodegastТы знаешь, он ещё отличается от других новых языков, он особенный какой-то. Там, например, его взяли и сделали ещё одним официальным, признанным языком для разработки ядра Linux. Казалось бы, столько языков есть новых, но они не становятся такими базовыми для мира разработки.
В Haskell-е конструкторы типов делают практически тоже самое. Что до Rust-а, то там компилятор интересный, но сам язык меня не очень впечатлил.
Офлайн
186
> Ты знаешь, он ещё отличается от других новых языков, он особенный какой-то.
Вот недавно видел доклад с критикой rust-а. Ну а “мир системной разработки” сидит в тупике, вот и пытается хоть за что то зацепится.
https://vkvideo.ru/video-155609632_456239242
> В питоне такого нет вообще понятия, итератор только слева направо.
Это означает что ты просто не понимаешь что такое итераторы 
> Но тут если тебе надо в рекурсии сделать break или continue, как в обычном цикле
А вот не должно в рекурсии быть подобных вещей. В этом случае язык должен жёстко “дать по рукам”.
Офлайн
857
RodegastНу критика не критика, я смотрю на сам язык обычно. За тот же Kotlin все что-то там говорят, восхваляют его, а мне он воообще не нравится. Так что я и Rust бы не стал изучать, не произведи он на меня впечатление.
Вот недавно видел доклад с критикой rust-а.
Отредактировано py.user.next (Май 22, 2026 12:25:39)
Офлайн
186
> Он какой-то мудрёный из-за больших количеств синтаксического сахара, который там постоянно добавляют с каждыми версиями языка.
Вот за это его и критикуют. С одной стороны они пытаются реализовать правильные вещи, но с другой делают это как то не очень : )
Офлайн
857
По мотивам подсказки от xam1816
xam1816import requests resp = requests.get('https://api.altube.ru/api/v1/channels/intuit/playlists/metacomputation') print(resp.json()) import subprocess m3u8_url = "https://cdn.altube.ru/4dc475fef6/360p.m3u8"
там JSON скачивается
https://altube.ru/video/6dX8cpUAuuLI -> https://api.altube.ru/api/v1/videos/6dX8cpUAuuLI -> https://cdn.altube.ru/a0fe4b98e5 -> https://cdn.altube.ru/a0fe4b98e5/360p.m3u8
#!/bin/bash make_json_url() { sed 's%.*/\(.*\)$%https://api.altube.ru/api/v1/videos/\1%' } load_json() { curl -s "$1" | sed -n 's%.*"path".*/\(.*\)","status".*%\1%p' } make_final_url() { sed 's%.*%https://cdn.altube.ru/&/360p.m3u8%' } run() { load_json $(echo "$1" | make_json_url) | make_final_url } main() { run "$1" } main "$@" || exit 1 exit 0
[guest@localhost julo-at]$ ./load.sh https://altube.ru/video/OQU798lRsfdN
https://cdn.altube.ru/cb318cb05c/360p.m3u8[guest@localhost julo-at]$
<?xml version="1.0" encoding="utf-8"?>
<site name="Altube">
<urls file="urls" search="*" replace="[" namesep=" " />
<notice name="Altube" one="loaded %file" all="all loaded" />
<patterns>
<pattern load="./load.sh %url"
start="^"
left="^"
right="$" />
</patterns>
<load cmd="yt-dlp %url -o %file" />
<temp prefix="tmp_" suffix=".mp4" random="8" />
<final prefix="t" suffix=".mp4" />
</site>
Altube urls
----------
https://altube.ru/channel/billig/playlists/programmirovanie-na-python?video=OQU798lRsfdN
*https://altube.ru/video/OQU798lRsfdN x.mp4
[https://altube.ru/video/OQU798lRsfdN billig_ariphm_types.mp4
[https://altube.ru/video/JKDpgiTnAafX billig_type_str.mp4
[https://altube.ru/video/139vpURPUbrM billig_type_bool.mp4
[guest@localhost julo-at]$ julo
Load config... Altube
Start download
[generic] Extracting URL: https://cdn.altube.ru/cb318cb05c/360p.m3u8
[generic] 360p: Downloading webpage
WARNING: [generic] Falling back on generic information extractor
[generic] 360p: Downloading m3u8 information
[generic] 360p: Checking m3u8 live status
[info] 360p: Downloading 1 format(s): 0
[hlsnative] Downloading m3u8 manifest
[hlsnative] Total fragments: 377
[download] Destination: tmp_e88db7bf.mp4
[download] 100% of 185.32MiB in 00:05:39 at 558.98KiB/s
[FixupM3u8] Fixing MPEG-TS in MP4 container of "tmp_e88db7bf.mp4"
[guest@localhost julo-at]$
Отредактировано py.user.next (Май 21, 2026 01:43:27)
Офлайн