memory heap
368 subscribers
2.48K photos
505 videos
52 files
3.07K links
science ∩ art = wonder

all memory blocks here are allocated by @a_v_p

GitHub: https://github.com/artyom-poptsov
Mastodon: https://fosstodon.org/@avp

https://memory-heap.org/~avp/
Download Telegram
memory heap
В Хьюстоне, штат Техас (США) строят первый двухэтажный дом методом печати на 3D-принтере. Источник: https://www.reuters.com/technology/3d-printing-reaches-new-heights-with-two-story-home-2023-01-12/ Обратите внимание, что часть печатающей головки, через…
Отдельная история о том, как мне удалось скачать видео с сайта reuters.com.

Дело в том, что сайт использует проигрыватель видео, который скачивает видео по частям в формате ts ("MPEG transport stream", также называемый "MPEG-TS") "на лету", и никаких официальных средств скачать видео нет. Пришлось открыть панель разработчика в браузере (Ctrl+Shift+i в Firefox) и посмотреть, какие файлы загружаются по сети.

В итоге выяснил, что части видео подгружаются по таким ссылкам:
https://ajo.prod.reuters.tv/95011abd-c4fc-43bc-b87c-1ad3cb487d55/hls/OV207112012023RP1v1_5473245000_00001.ts
...
https://ajo.prod.reuters.tv/95011abd-c4fc-43bc-b87c-1ad3cb487d55/hls/OV207112012023RP1v1_5473245000_00017.ts

Поскольку мы знаем теперь, в каком диапазоне идёт нумерация фрагментов, и видим также, что ссылка в остальном не меняется, то можем написать скрипт на Bash, который скачивает части видео через wget, склеивает их в один файл и конвертирует в mp4 через ffmpeg:
#!/bin/bash

for num in $(seq -f %02g 1 17); do
wget "https://ajo.prod.reuters.tv/95011abd-c4fc-43bc-b87c-1ad3cb487d55/hls/OV207112012023RP1v1_5473245000_000${num}.ts"
done

cat *.ts > all.ts
ffmpeg -i all.ts -acodec copy -vcodec copy all.mp4

Где:
- Команда seq -f %02g 1 17 генерирует последовательность чисел 01..17 с добавлением дополнительных нулей перед числом, если оно однозначное (благодаря формату %02g.
- Цикл for подставляет значения из диапазона чисел, как значение переменной num — эта переменная используется в цикле для подстановки номера фрагмента видео в ссылку для скачивания.
- Собственно wget скачивает видео по ссылке. ${num} — это как раз место подстановки номера видео.
- cat *.ts > all.ts склеивает фрагменты в один файл.
- ffmpeg конвертирует формат ts в mp4.

#bash #linux #hacks
2