Script Para Recuperar Videos Do Youtube

Introdução

Desenvolvi esse script para facilitar o processo descrito no post:

https://daemoniolabs.wordpress.com/2011/07/23/para-onde-foram-os-arquivos-flash-do-tmp/

Usando-o você poderá salvar todos os vídeos abertos no momento em seu computador.

Código

#!/bin/bash
# Autor: Daemonio (Marcos Paulo Ferreira)
# Contato: undefinido gmail com
#          daemoniolabs.wordpress.com
#
# [getfla.sh]
# Script que copia para a pasta $PASTA
# todos os videos flash abertos pelo
# plugin do flash. Esse script foi feito
# para recupar arquivos de videos de sites
# como Youtube que "nao estao" mais na pasta
# /tmp.
#
# [Uso]
# $ ./getfla.sh
#
# [Exemplo]
# $ ./getfla.sh
# [+] Checando lista de arquivos abertos... Espere.
# [+] Copiando /proc/8403/fd/30 para /home/daemonio\
#             /FLV_Videos/video_2279.flv ... ok!
#
# OBS: Evite copiar e distribuir ilegalmente
#      videos protegidos (copyright).
#
# Sun Jul 24 18:15:09 BRT 2011
#

# Variaveis do script.
PASTA=${HOME}/FLV_Videos
PREFIX='video_'

# Se preciso cria a pasta destino e fecha o script
# se nao eh possivel cria-la.
if [ ! -d $PASTA ]
then
    read -p "Criar pasta \`${PASTA}' (y/n)? " q
    if [ "$q" = "y" ]
    then
        mkdir $PASTA
        [ ! -d $PASTA ] && exit
    else
        exit
    fi
fi

# Essa checagem realmente pode demorar um pouco ...
echo '[+] Checando lista de arquivos abertos... Espere.'

for PIDFD in $(lsof -n | grep 'FlashXX' | awk '{print $2"/fd/"$4}')
do
    # TODO: Passar isso para o awk. Mas
    # primeiro aprender AWK. ;-O
    PIDFD='/proc/'$(echo $PIDFD | sed 's/[^0-9]*$//')

    # RANDOM para tentar evitar nomes iguais.
    DEST=${PASTA}'/'${PREFIX}${RANDOM}'.flv'

    # Processo de copia.
    echo -n "[+] Copiando $PIDFD para $DEST ... "
    cp $PIDFD $DEST
    echo 'ok!'
done

#EOF

Como usar

Salve o código do script com o nome getfla.sh e dê permissão de execução para ele. Após isso, digite o nome do script para executá-lo.

$ ./getfla.sh

Exemplo de utilização

Estou com três vídeos abertos no youtube e agora quero salvá-los em meu computador. Para isso digito:

$ ./getfla.sh
Criar pasta `/home/daemonio/FLV_Videos' (y/n)? y
[+] Checando lista de arquivos abertos... Espere.
[+] Copiando /proc/8403/fd/17 para /home/daemonio/FLV_Videos/video_2618.flv ... ok!
[+] Copiando /proc/8403/fd/43 para /home/daemonio/FLV_Videos/video_9585.flv ... ok!
[+] Copiando /proc/8403/fd/44 para /home/daemonio/FLV_Videos/video_17639.flv ... ok!

Como podemos ver, todos os três vídeos foram salvos na pasta /home/daemonio/FLV_Videos.

Observações

A checagem de arquivos abertos (comando lsof) pode demorar um pouco. Em uma ocasião esperei aproximadamente 1 minuto para o lsof retornar. Irei ver futuramente algum modo de agilizar esse processo.

2 pensamentos sobre “Script Para Recuperar Videos Do Youtube

Deixe um comentário