mikhailnov / getcourse-video-downloader

Скрипт для скачивания видео с GetCourse
113 stars 15 forks source link

Изменение алгоритма GetCourse #16

Open molo4evan opened 3 months ago

molo4evan commented 3 months ago

На момент написания видеоурок вставлен на страницу через iframe следующего вида:

`

</div>`

(Параметр json в src сокращен из соображений анонимности)

При попытке обратиться по url из src получаю "Wrong sign. Connect to support"

json из src удалось распарсить как JWT с валдиными headers: image

Вероятно, теперь на сайте используется какая-то сторонняя технология плеера

mikhailnov commented 3 months ago

А вы смотрите сетевые обращения, как предлагается в README

ap1726 commented 2 months ago

у меня не удавалось скачать с помощью ссылки, как аргумент

я скачал из сетевых обращений файл начинающийся на 480 (они убрали у него расширение в ссылке)

указал расширение (просто так, можно не указывать, мне кажется)

затем вместо ссылки в аргументах указал файл

./getcourse-video-downloader.sh file:///home/username/480.m3u8 ./output.ts

и загрузка началась

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

mikhailnov commented 2 months ago

Интересная мысль )

tyomka896 commented 1 month ago

Привет :)

Для текущих версий важны всего два значения, которые подгружаются в при старте плеера в глобальную переменную window.configs это .supportInfo.data.VideoHash и .supportInfo.data.ViewId. Объект window.configs будет доступен в терминале, если нажать правой кнопкой мыши Inspect сразу на плеере ролика или же можно выдернуть из ссылки по твоей инструкции. Дополнительно в конце адреса указывается желаемое качество, например (случайные хеши для примера):

https://player02.getcourse.ru/api/playlist/media/815bb6ed0bdd8a7f034e59df02c36c3d/a72652863ac68622518932cd42908960/480

На основе твоего скрипта вот пример getcourse-bulk-download.sh для загрузки нескольких роликов курса сразу чтобы не тыкать по одному за раз и бонусом отображение прогресса загрузки.

norby4ever commented 1 month ago

Привет! Getcourse обновил алгоритмы. Тега <video> на странице нет, параметра data-master отдельно тоже. Если метод @ap1726 работает, вероятно, нужно обновить инструкцию)

JzfBzsJr commented 1 month ago

Помогите пожалуйста скачать видео с Геткурса. Я попробовал по инструкции, не получилось(

sasgovor commented 1 week ago

Привет! Пробовал качать скриптом от @tyomka896, но на macOS он просто так не захотел запускаться. Немного подправил и получилось скачать видео. Идентификаторы видео передавал из файла(вторая опция в скрипте), а не через терминал. GitHub не даёт грузить sh файлы, поэтому кинул в архив getcourse-bulk-download-macos.sh.zip

upd: Добавил параллельнную загрузку по сегментам, скорость скачивания стала ощутимо выше. Количество потоков можете самостоятельно поменять в скрипте - параметр MAX_JOBS. Пробовал ставить больше 4 - разницы не заметил getcourse-bulk-download-macos-parallel.sh.zip

tyomka896 commented 6 days ago

@sasgovor, привет :)

Пробовал качать скриптом от @tyomka896, но на macOS он просто так не захотел запускаться.

Тут важен контекст ошибки при запуске, вероятее всего дело было разделителе строк для MacOS, с git может скачать с разделителем для Win

Добавил параллельнную загрузку по сегментам, скорость скачивания стала ощутимо выше

Паралелльная загрузка здорово выглядит, хоть и через дополнительный каунтер job_count, находил варианты через xargs -P создать параллельность. У меня была попытка сразу все последовательные фрагменты сохранять файл, а не сохранять частями во временную директорию.

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