Piero V.

Download video in streaming flash con Python

Un tempo su Linux si poteva trovare un video guardato in streaming direttamente nella directory /tmp.

In seguito, con degli aggiornamenti, flash scaricava il video sempre lì, ma veniva eliminato, anche se fisicamente presente.

Per ritrovarlo bastava trovare il processo dell’implementazione flash del browser, solitamente con ps aux | grep flash e così si trovavano i possibili pid.

Andando a vedere nella directory /proc/pid/fd, si trovavano tanti link, uno di questi a un file tipo /tmp/Flash.... In seguito si poteva trattare quel link come se fosse un file normale, quindi riprodurlo, passarlo a mencoder o ffmpeg etc… Se volevate copiarlo dovevate aspettare che il browser avesse finito di scaricare il video!

In seguito sembrava essere scomparsa anche questa possibilità, ma oggi mi sono accorto che è tornata, quindi vi lascio un breve file in python che permette di trovare automaticamente i vari file:

#!/usr/bin/env python
import os

for pid in os.listdir('/proc'):
	if not pid.isdigit():
		continue

	fdpath = '/proc/' + str(pid) + '/fd'
	try:
		fd = os.listdir(fdpath)
	except:
		continue

	for fid in fd:
		try:
			# Not a link? Raise exception
			fname = os.readlink(fdpath + '/' + fid)
			fname = fname.strip()

			if fname.lower().find('/tmp/flash') == 0:
				fname = fname.split(' ')[0]
				print fdpath + '/' + fid + ' => ' + fname

		except:
			continue

Questo script è stato scritto molto velocemente: cerca di andare in tutti i pid e di trovare i vari link. Se contengono la parola flash stampa il link e la destinazione. So che si potrebbe fare una cosa migliore ma in questo caso preferisco fare lo script kid 😊 .

Lo rilascio nel pubblico dominio.

Comunque se volete scaricare video da siti come youtube ed altri, vi consiglio di non adottare questo metodo ma di usare direttamente youtube-dl, che è fantastico!