我知道在 Windows 中,Internet Explorer在观看 YouTube 时.flv
会将临时文件存储在临时文件夹 ( C:\Users\%username%\AppData\Local\Microsoft\Windows\Temporary Internet Files
) 中。Windows 中的 Google Chrome 也是如此 ( C:\Users\%username%\AppData\Local\Google\Chrome\User Data\Default\Cache
)。因此很容易找到该.flv
文件的副本。
Ubuntu 中的 Chromium 怎么样?它会存储浏览临时数据吗?存储在哪里?
答案1
我做了一些研究,现在我得出的答案并不像乍一看那么简单。
我在 Google 上搜索了很多,几乎所有内容都指向该~/.cache/chromium/Default
文件夹。该文件夹应该是 Google Chrome 缓存文件所在的文件夹。但是没有大型 Flash 视频文件(如 YouTube 有),只有小型文件。
最后,为了回答这个问题,我得出了以下结论:
- 首先,您必须打开 YouTube 视频并让其从互联网上流式传输。
- 在终端 ( ++ Ctrl)中,您应该获取使用 Flash Player 插件的 Chromium 的 PID。您可以使用各种命令,但效果很好:。AltT
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
我编写了新的 b 脚本,用于下载 flash 视频文件Ubuntu 16.04和chromium 版本 62。 谢谢这个例子从 麦克巴伦
/bin/bash #!/bin/bash echo "正在抓取 flash 文件。" getPidNum = $(lsof | grep Flash | grep 已删除 | tr -s“ ”| cut -d“ ” -f 2) pid编号="" 对于 ${getPidNum} 中的 linePidNum;执行 如果 [[ "$pidNum" != "$linePidNum" ]]; 然后 pidNum=$linePidNum echo "PID 编号为 ${pidNum}" getProcNum = $(ls -l /proc/${pidNum}/fd | grep Flash | tr -s“ ”| cut -d“ ”-f 9) 进程号="" 对于 ${getProcNum} 中的 lineProcNum;做 如果 [[ "$procNum" != "$lineProcNum" ]]; 然后 procNum=$lineProcNum echo "文件编号为 ${procNum}" echo "将 /proc/${pidNum}/fd/${procNum} 复制到 '${procNum}.flv'" cp /proc/${pidNum}/fd/${procNum} "${procNum}.flv" 菲 完毕 菲 完毕