Pull to refresh

Comments 53

Большое спасибо, работает (Ubuntu 10.04 amd64)
Может достаточно пользоваться плагинами-сохранялками?
Этот, например, достаточно умный, чтобы брать из кеша, когда оно есть
Вот посмотрели вы ролик на ютубе, понравился, решили сохранить его к себе на жесткий диск. Video DownloadHelper будет скачивать его заново, а автор предлагает решение без повторного скачивания.
И… ну это же unix, здесь важен сам процесс.
DownloadHelper может так поступить, если качать начали видео с другим качеством, ведь ютуб их дает несколько. Возможно по-умолчанию настроено скачивание другого качества.
Я сам в Убунте сейчас сижу и мне процесс не важен, важен результат. Если видео просмотрено до конца, то DownloadHelper вытаскивает его из кэша без повторной закачки.
читайте внимательно — из файловой системы стандартными средствами не достать — потому как не видно его в кеше, если использовать новый флешплеер.

возможно он даже и файл удаляет не при завершении закачки, а при самом ее начале.
возможно он даже и файл удаляет не при завершении закачки, а при самом ее начале.

Именно так.
Это все прекрасно, но согласитесь, что данный метод можно применить не только для решения этой задачи. Мне показалось, что это больше совокупный обзор базовых команд и особенностей linux.
Расследования, конечно, дело хорошее и нужное. Но почему бы просто не пользовать FlashGot?
Простенько и со вкусом.
Можно написать sh-скрипт для такого дела.
Типа такого
$ cat > saveflash.sh
#!/bin/sh
PID=`ps x|grep libflashplayer.so|grep -v grep|awk '{print $1}'`
FD=`lsof -p $PID|grep Flash|awk '{print $4}'|sed 's/u^//'`
cp /proc/$PID/fd/$FD ~/video.flv
# EOF
^D
в статью бы добавить, весьма полезное решение.
Уберем 2 команды :)
PID=`ps x | awk '/libflashplayer.so\ /{print $1}'`
Спасибо. Век живи, век учись, а дураком помрёшь. :)
скрипт не будет работать когда открыто несколько флеш-роликов одновременно или запущено несколько инстансов плагинов.

Примерно так можно получить список всех дескрипторов:

pgrep libflashplayer.so | xargs -I PID find /proc/PID/fd -lname '/tmp/Flash*'


После чего можно копировать все или смотреть mplayer`ом с vdpau акселерацией 8)
к своему стыду, не знал о lsof.
Все же не перестаю удивляться красоте *nix систем — для решения простых задач (смонтировать образ диска, скопировать раздел, посмотреть список открытых процессом файлов, и т.п.) есть простые решения, не требующие установки какого либо доп. софта.
к моему стыду, я тоже не знал ни осуществовании lsof, ни о том, где хранятся ссылки на открытые процессом дескрипторы.

Автору спасибо.
Ну, вообще-то lsof в Debian-based дистрибутивах вынесена в отдельный пакет, так что без (до)установки вряд ли просто так обойдётесь.
мм, я просто по своему Arch'у сделал вывод. У меня в стандартной комплектации есть lsof.
В любом случае, достаточно написать одну команду, чтобы установить этот пакет.
Ха, а в Windows у них так не получится, фиг они удалят открытый файл :)
В Windows даже без удаления файла к нему нет доступа пользователю даже на чтение (на NTFS, по крайней мере, пока с правами доступа не поколдуешь).
Unlocker'ом всегда копировал
Дело не в правах файловой системы. При открытии файла в винде процесс может его залочить от чтения и/или записи. Лок на чтение обычно не делают, а вот лок на запись сторонними процессами штука важная. Ну и при желании можно вообще файл не лочить.
Давно хотел узнать способ достать удаленный, но ещё не закрытый файл (безотносительно флеша), только до самостоятельных поисков руки не доходили. Как то так себе это и представлял. Спасибо за готовое решение.
есть еще в репозиториях хорошая утилита clive
а ещё YouTube-DL
Currently supported sites are video.google.com, youtube, photobucket, dailymotion, and metacafe.

Жаль и та, и другая написаны на скриптовых языках и требуют соответствующего интерпретатора, а в случае с clive ещё и нескольких недефолтных модулей.
cclive — версия clive написанная на с++.
занятно :)
cclive использует в свою очередь libquvi, которая реализует выдирание ссылок через Lua скрипты
непонятно, им что, регэкспов одних мало? %)
Пользуюсь Firebug — показывает что и откуда качается.
А в чём суть такого трюка? Файл остаётся на диске после удаления жёстких ссылок, если он ещё занят процессом?
Даже после удаления последней жесткой ссылки файл может ещё находиться на диске — если до удаления открыть файл на чтение и/или запись, то фс не покажет файл, но он ещё не удален, чем собственно автор и пользуется в статье.
Спасибо, хороший способ. Я же, в свою очередь, использую отличный питоновский скрипт youtube-dl
Не только, youtube-dl так же работает с Yahoo! Video и Dailymotion. Ещё я им с какого-то непонятного видеохостинга ролик успешно стянул.
А что будет в этом файле если я взял и вовремя просмотра перепрыгнул из начала в конец клипа? Ведь клип при этом скачивается не полностью.
видео с того места, где вы кликнули. HTTP content-range.
замечательная статья, спасибо. По отдельности об этих инструментах знал, а вот до такого необычного применения недодумался.
> awk '$4 ~ /^[0-9]+/ && $5 == «REG»'

Не ищете в жизни легких путей? ;) Чем уже в данном случае grep не угодил?
Запись на awk явно показывает, что мы работаем с колонками таблицы. На написание этой команды мне понадобилось секунд 15, куда уж легче-то? awk лично для меня привычный инструмент, если кому-то проще одной регуляркой, никто не мешает.
как знакомство с возможностями линукса — статья замечательная, а вот как решение конкретной задачи(сохранить видео из флешплеера) намного проще и удобнее использовать плагины для браузеров(типа downloadhelper).

еще есть замечательный сервис ru.savefrom.net/ — скармливаете ему ссылку на страницу с видео и получаете прямые линки на видео. правда для варианта достать из кеша видео этот способ не подойдет.
плагины и сервисы не всегда помогают, например видео отсюда presidium.arbitr.ru/ никакими плагинами не скачешь, или в кеше рыться или надо знать прямую ссылку на .mp4 файл, которой в коде страницы нет (я как то нашел такую ссылку окольными путями, но авторам ничего не мешает её засекретить).
в таких редких и тяжелых случаях, я обычно использую снифер хттп запросов и из них беру прямую ссылку на видео. но в большинстве случаев люди качают видео с публичных сервисов типа ютуба, вимео, рутуба итд, а с ними плагины-качалки справляются на ура.
UFO landed and left these words here
Пожалуйста, перечитайте комментарии и update к топику.
Пользовался юзер-скриптами, но после обновления ютуба всё поломалось, сейчас пользуюсь www.dirpy.com/ кстати недавно тут топик был про него
Теперь, кажется, надо так (по крайней мере у меня только так работает)

#!/bin/bash

PID=`ps x | grep libflashplayer.so | grep -v grep | awk '{print $1}'`
FD=`ls /proc/$PID/fd -l | grep tmp | awk '{print $8}'`
cp /proc/$PID/fd/$FD $1

сейчас и это не работает

ps x | grep libflashplayer.so | grep -v grep | awk '{print $1}' — получаю pid процесса
FD=`ls /proc/$PID/fd — получаю вывод в виде 1 10 2 3 4 5…
после grep tmp — пусто :(
опять изменили что то рутюбовцы :(
Only those users with full accounts are able to leave comments. Log in, please.