
Я знаю, что в Windows Internet Explorer сохраняет .flv
временные файлы во временной папке ( C:\Users\%username%\AppData\Local\Microsoft\Windows\Temporary Internet Files
) при просмотре YouTube. И то же самое делает и Google Chrome в Windows ( ). Так что найти копию этого файла C:\Users\%username%\AppData\Local\Google\Chrome\User Data\Default\Cache
несложно ..flv
А как насчет Chromium в Ubuntu? Сохраняет ли он временные данные браузера и где?
решение1
Я провел небольшое исследование и теперь могу дать ответ, который не так прост, как кажется на первый взгляд.
Я много искал в Google, и почти все указывает на ~/.cache/chromium/Default
папку. Это папка, где вы должны найти файлы кэша Google Chrome. Но там нет больших файлов Flash Video (как на YouTube), только маленькие.
В конце концов, отвечая на этот вопрос, я пришел к следующим выводам:
- Сначала вам нужно открыть видео на YouTube и запустить его потоковую передачу из интернета.
- В Терминале ( Ctrl+ Alt+ T) вы должны получить PID Chromium, который использует плагин Flash Player. Вы можете использовать различные команды, но
ps
подойдет:ps ax | grep flash
. Получив этот PID, вы можете узнать имя видеофайла, который только что транслировался на Youtube:
ls -l /proc/[*PID*]/fd | grep Flash
. В результате вы увидите что-то вроде этого:lrwx------ 1 [*user*] [*user*] 64 mai 2 09:48 [*video file name - is a number*] -> /tmp/FlashXX4PeKRY (deleted)`
А вот и ответ на вопрос: последний видеофайл, транслируемый на YouTube и кэшируемый в системе, это:
/proc/[*PID*]/fd/[*video file name - is a number*]
Теперь, если хотите, вы можете скопировать их в любое место системы:
cp /proc/[*PID*]/fd/[*video file name - is a number*] ~/Videos/[*new video file name*].flv
И теперь в вашей личной коллекции видео есть последнее просмотренное на Youtube видео.
решение2
Я написал небольшой скрипт bash, который автоматизирует превосходныйрешениеотРаду:
#!/bin/bash
pidNum=$(ps ax | grep flash | grep chromium | grep -v "grep" | sed -e 's/^ *//g' -e 's/ *$//g' | tr -s " " | cut -d " " -f 1)
procNum=$(ls -l /proc/${pidNum}/fd | grep Flash | tr -s " " | cut -d " " -f 9)
filename=$1
if [[ "$filename" == "" ]]; then
filename=$procNum
fi
echo "Copying /proc/${pidNum}/fd/${procNum} to '${filename}.flv'"
cp /proc/${pidNum}/fd/${procNum} "${filename}.flv"
ls -lah "${filename}.flv"
решение3
Я делаю это вручную так: определяю этот псевдоним в /etc/bash.bashrc
alias findflash='find /proc/ -maxdepth 1 -type d -exec lsfd.sh {} \;'
и создайте этот скрипт в /usr/local/bin/lsfd.sh
#!/bin/bash
ls -l $1/fd/ 2>/dev/null 3>/dev/null| grep -i 'flash' 1>/dev/null 2>/dev/null 3>/dev/null;
if [ $? -eq "0" ];
then
echo $1/fd/;
ls -l $1/fd/ | grep -i 'flash';
fi
результат:
root@juanmf-V570:/tmp# findflash
/proc/31591/fd/
lrwx------ 1 root root 64 Aug 19 23:59 37 -> /home/juanmf/.config/google-chrome/Default/Pepper Data/Shockwave Flash/.com.google.Chrome.9Oc0fE (deleted)
lrwx------ 1 root root 64 Aug 19 23:59 38 -> /home/juanmf/.config/google-chrome/Default/Pepper Data/Shockwave Flash/.com.google.Chrome.hcEvxv (deleted)
затем я узнаю, где находятся файлы, и использую mplayer, чтобы увидеть, какой из них мне нужен. затем вручную копирую.
решение4
Я написал новый bash-скрипт для загрузки флэш-видеофайлов с помощьюубунту 16.04ихром Версия 62. благодаряэтот примерот макбаррон
Также вы можете посмотреть на репозитории github
#!/bin/баш echo "Сканирование флэш-файлов." getPidNum=$(lsof | grep Flash | grep удален | tr -s " " | cut -d " " -f 2) pidNum="" для linePidNum в ${getPidNum}; сделать если [[ "$pidNum" != "$linePidNum" ]]; тогда pidNum=$linePidNum echo "Номер PID ${pidNum}" getProcNum=$(ls -l /proc/${pidNum}/fd | grep Flash | tr -s " " | cut -d " " -f 9) procNum="" для lineProcNum в ${getProcNum}; делать если [[ "$procNum" != "$lineProcNum" ]]; тогда procNum=$lineProcNum echo "Номер файла ${procNum}" echo "Копирование /proc/${pidNum}/fd/${procNum} в '${procNum}.flv'" cp /proc/${pidNum}/fd/${procNum} "${procNum}.flv" фи сделанный фи сделанный