Сохранение flash-video из кэша браузера

    Представьте себе, вот открыли вы в браузере с десяток порно видео-роликов, они тем временем успели скачаться и вдруг оказалось, что браузер нужно закрывать. Что делать?

    Сохранить все открытые в данный момент в браузере flv-видеоролики в отдельную директорию можно вот таким простым однострочным скриптом.

    copy-cached-flv.sh


    #!/bin/bash
     
    lsof -n +L1 | grep /tmp/Flash | \
        awk '{line = "/proc/" $2 "/fd/" $4; sub("[^0-9]*$","",line); print line}' | \
        xargs -I '{}' cp -v '{}' -t "$@" --backup=t



    Использование


    ./copy-cached-flv.sh «директория назначения»

    $ ./copy-cached-flv.sh ~/my_flash_videos/
    `/proc/24624/fd/29' -> `/home/giner/my_flash_videos/29'
    `/proc/24624/fd/35' -> `/home/giner/my_flash_videos/35'


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

    $ ./copy-cached-flv.sh ~/my_flash_videos/
    `/proc/24624/fd/29' -> `/home/giner/my_flash_videos/29' (backup: `/home/giner/my_flash_videos/29.~1~')
    `/proc/24624/fd/35' -> `/home/giner/my_flash_videos/35' (backup: `/home/giner/my_flash_videos/35.~1~')


    Важно: обратите внимание, что данный способ работает, только в том случае, когда видео flash-плееру доставляется в виде flv-файла по http-протоколу.

    UPDATE:
    Очень часто во flash-видео тихий звук. В этом случае можно воспользоваться внешним плеером, в котором есть возможность сделать этот звук громче (например mplayer). Немного изменив скрипт можно сразу же загрузить playlist закэшированных видео в плеер.

    mplayer-play-cached-flash.sh


    #!/bin/bash
     
    lsof -n +L1 | grep /tmp/Flash | \
        awk '{line = "/proc/" $2 "/fd/" $4; sub("[^0-9]*$","",line); print line}' | \
        xargs mplayer -softvol-max 1000

    Переключаться между роликами в прейлисте можно клавишами '<' и '>'.
    Ads
    AdBlock has stolen the banner, but banners are not teeth — they will be back

    More

    Comments 60

      0
      У лени, как двигателя прогресса бывают недостатки. В данном случае недостаток очевиден — избыточность. Ваш скрипт копирует всё, да еще и с дублированием копий. Либо этому скрипту не хватет интеллекта, либо проще сохранить конкретный ролик из конкретного окна открыв отладочные средства самого браузера.
        +6
        По идее кто-то должен быть ещё более ленивым, чем автор и добавить в этот скрипт избегания кеширования, а потом в имя файла — время создания файла. И так далее…
          0
          Да, и главное — прицепить туда интерфейс с предпросмотром.
            0
            А это кстати запросто :)
            Перед командой cp можно запускать mplayer, а потом спрашивать «y/n?».
            • UFO just landed and posted this here
                0
                И после запуска скрипта, просматривать порно по второму разу!
          –27
          А я в виндоус для этого использовал такой такую программу как Internet Explorer. Она кроме всего умеет ещё и страницы html показывать ))
            +27
            Internet Explorer


            Ну признавайтесь, суки, кто за НИХ голосовал? Откуда у них опять 50% голосов? — вероятно, пользователи IE :)
              +18
              у меня есть друг, у которого есть знакомый. Так его родственник знает человека, который вроде как использует ie
                –11
                У меня есть знакомый который на хабре написал в шутку про IE и лешился кармы. Теперь он всегда улыбается и смотрит пустым взглядом
                  +4
                  Пустой взгляд из-за слитой кармы?
                  Вашему другу надо срочно избавляться от интернет-зависимости.
                    +2
                    Ни у кого нет никакой интернет-зависимости. Все могут бросить в любой момент. И бросают по несколько раз за день.
                      0
                      Все так говорят.
              0
              Флеш из кэша умеет?
                0
                Конечно умеет, не поверите, он его еще туда и пишет.
                  0
                  Сохранять?
                    0
                    Вообще смотреть, но при желани может и сохранить
                  –3
                  Да. Я так всегда себе песни из флешек качаю
                0
                Кажется мне, это уже изобретали на хабре, ссылку только найти не могу
                  +1
                    0
                    На сколько я вижу там нет законченного решение ни в топике, ни в комментариях. Кроме там есть избыточная привязка к имени файла flash-плагина.
                  0
                  неплохо было бы фильтр какой то сделать, обычно видео имеет средний размер от нескольких мегабайт, сразу отфильтруется реклама и пр. ненужный хлам…
                  • UFO just landed and posted this here
                    0
                    Хорошо бы добавить условие на «время изменения: несколько минут назад». Старое барахло в кэше скорее всего никому не нужно ведь.
                      0
                      Вытягиваются только открытые в данный момент ролики.
                      +7
                      Грепать можно в awk, да и формировать аргументы для cp тоже.

                      /usr/sbin/lsof -n | awk -v O="$@" '/\/tmp\/Flash/ {line = "/proc/" $2 "/fd/" $4; sub("[^0-9]*$","",line); print "cp -v "line" -t \""O"\" --backup "; } '

                      Ну и если cp всеравно форкать, то это тоже можно из awk :-))
                      /usr/sbin/lsof -n | awk -v O="$@" '/\/tmp\/Flash/ {line = "/proc/" $2 "/fd/" $4; sub("[^0-9]*$","",line); system ("cp -v "line" -t \""O"\" --backup ") ; } '

                        0
                        Круть. Спасибо!
                        0
                        Вот только вчера думал как сохранить flash-video, а тут статья готовая… и с чудесными добрыми коментами)
                          –1
                          ctrl+u вам в помощь
                            +1
                            В исходниках оно иногда зарыто настолько глубоко…
                              0
                              тогда Ctrl+Shift+I :)
                                0
                                Я про то, что в сорцах не всегда есть прямая ссылка на url. Она бывает спрятана на отдельной странице, которая скармливается флеш плееру — такое еще не сложно найти (хотя и дольше). Но есть случаи, когда такой ссылки вообще нет — есть какой-то код, который флеш-плеер переобразует в ссылку, и вот его уже довольно сложно расшифровать самому.
                                  +1
                                  wireshark :)
                                    0
                                    Вы не внимательно изучили инструмент, который открывается по Ctrl+Shift+I в ведущих браузерах. Там есть закладка «Сеть», которая позволяет увидеть что реально закачивается и с каких url. Именно так я и достал ссылку на видео, о котором зашла речь ниже.
                            0
                            Задача: сохранить ролик «Создание Национальной программной платформы»:

                            URL: ria.ru/press_video/20111014/459085193.html

                            При его проигрывании в директории /tmp не появляется файла вида FlashXXXXX.

                            Как, ваш скрипт справится?
                              0
                              Этот файл и не должен там быть. Начиная с какой-то версии, Adobe Flash сразу же удаляет появляющийся там ролик (раньше он удалялся только после закрытия вкладки с этим роликом), но хэндл файла остаётся открытым, так что фактически файл всё ещё существует, просто по имени в /tmp не доступен, однако остаётся (до момента закрытия вкладки) доступен в /proc/. Предложенный скрипт, собственно, и роется в /proc, вытягивая всё, что ссылается на /tmp/Flash*
                                0
                                Поэтому теперь я качаю через вкладку Network в хроме: с ее помощью узнаю url, копипаста в адресную строку — и готово. Правда ее надо открыть до того как флеш/… контент начнет грузиться.
                                +1
                                P.S. По вашей же ссылке, похоже, условие работы скрипта «видео flash-плееру доставляется в виде flv-файла по http-протоколу» не соблюдается, конкретно этот ролик скрипт не вытянул (с Youtube же всё ОК).
                                  +8
                                  Я смотрю ютуб через команду ytu «адрес до видео»
                                  Ибо флеш тормозит через браузер, а mplayer тянет видео в 720p
                                  вот скрипт
                                  COOKIE_FILE=/var/tmp/youtube-dl-cookies.txt
                                  mplayer -cache 10000 -cookies -cookies-file ${COOKIE_FILE} $(youtube-dl --max-quality=45 -g --cookies ${COOKIE_FILE} $*)
                                  По стандарту используется качество 720p
                                  Для скачивания можно использовать
                                  youtube-dl --max-quality=45 «адрес»
                                  Скачать сам youtube-dl в арче можно через aur.
                                    0
                                    Для VIMEO есть решение? я то на моем нетбуке это проблема.
                                  0
                                  У меня жена просто берёт и копирует из кэша оперы.
                                    0
                                    Чтобы оно работало быстрее можно не копировать, а хардлинки создавать.
                                      0
                                      А это мысль!
                                        0
                                        Как вы предлагаете создать хардлинки между физически разными разделами?
                                        А если в том же /tmp создавать, все равно потом копировать придется.
                                          0
                                          Во-первых я не предлагал между разделами т.к. /tmp далеко не у всех выделен.
                                          Во-вторых ключевое слово «потом», а браузер закрыть надо «сейчас и быстро».
                                            0
                                            Тоже верно, /home у меня обычно на другом разделе.
                                          0
                                          Неужели Minitube'ом никто не пользуется? Очень удобная штука: во-первых, позволяет создавать список закачек и качает их себе в фоне; во-вторых, не нужно в систему внедрять жуткую дырищу (flash plugin). И удобно, и безопасно.
                                            +1
                                            Я думал, скрипт будет анализировать заголовки файлов, а тут такое
                                            lsof -n | grep /tmp/Flash

                                            φ. Уж лучше тогда, если есть Firefox, поставить аддон Video DownloadHelper и не мучаться. Работает с 99% порносайтов. Ну, или переписать скрипт, но мне лень.
                                            • UFO just landed and posted this here
                                              0
                                              Ребят, не пинайте сильно, подскажите, как использовать эти все странные скрипты? Вот у меня открыт хром, я вообще ни разу не айтишник, а приобщиться к прогрессу тоже хочется.
                                                0
                                                Поставь себе какой-нибудь extension наподобие Video DownloadHelper'а для Firefox — проще будет. Гуглятся неплохо (:
                                                  –1
                                                  Спасибо, я знаю, что такое расширения, откуда их брать и зачем они нужны. Я спрашиваю именно_про_использование_скриптов. На хабре, да и вообще на просторах интернета, периодически попадаю на подобные статьи, но понятия не имею, как этими скриптами воспользоваться. Т.е. автор говорит: вот, мол, ребята, вот такой скрипт, он для того-то и того-то предназначен. И разные комментарии типа «ого!», «крутотень!» и т.д. Так не подскажете, как именно можно воспользоваться скриптами и нужно ли дополнительное ПО для их использования?
                                                    +1
                                                    Ну как сказать. Linux дополнительным ПО считается? (:
                                                    В статье приведён shell-скрипт для bash, и использует он утилиту lsof, которой в винде нет. Хотите использовать shell-скрипты — ставьте и изучайте Linux. Впрочем, в MacOS тоже есть bash и lsof, если что.
                                                      0
                                                      Спасибо!
                                                        0
                                                        Только там /proc нет :) Что-то я через lsof в macos ничего внятного не получил в отличие от линуха. У кого есть идеи?
                                                  0
                                                  Можно сделать ещё интереснее — с помощью анализатора трафика (сниффера) перехватывать запрос к нужному файлу (flv, mp4) и выводить ссылку на этот файл, чтобы его можно было просто скачать: тогда не нужно держать флэш-плеер открытым и дожидаться, пока видео в нём будет загружено до конца.

                                                  Вручную я делал это с помощью urlsnarf (входит в dsniff) — удобно тем, что сразу отображает конкретные HTTP-запросы, но там в verbose-режиме всё равно достаточно много разной информации, среди которой нужно найти ссылку на нужный файл. А вот если это дополнительно автоматизировать, то будет совсем комфортно.
                                                    0
                                                    оно уже не работает
                                                      0
                                                      Обновил немного скрипт. У меня на Arch Linux и на Ubuntu работает.

                                                    Only users with full accounts can post comments. Log in, please.