Na potrzeby dostosowana adresów URL do innej konfiguracji innego serwera wykorzystałem następujący skrypt:
#!/usr/bin/perl -w use strict; undef $/; ## na potrzeby czytania każdego pliku (process_file) sub recurse($) { my($path) = @_; ## append a trailing / if it's not there $path .= '/' if($path !~ /\/$/); ## print the directory being searched print STDERR $path,"\n"; ## loop through the files contained in the directory for my $eachFile (glob($path.'*')) { ## if the file is a directory if( -d $eachFile) { ## pass the directory to the routine ( recursion ) recurse($eachFile); } else { ## przetwarzaj plik process_file ($eachFile); } } } sub process_file { my $file = shift; ## Tylko pliki .html i .php if ($file =~ /\.html|\.php$/) { my $tmp_file = "$file.temp"; rename($file, $tmp_file); open (F, $tmp_file); open (FO, ">$file"); my $ff = <F>; ## zamień bezwględne URLe na lepsze $ff =~ s/href=(["'])http:\/\/gnu.univ.gda.pl\/~tomasz/href=$1/g; ## zamień $ff =~ s/src=(["'])http:\/\/gnu.univ.gda.pl\/~tomasz/src=$1/g; ## zamień print STDERR "-> $file\n"; print FO $ff; close(F); close (FO); } } ## initial call ... $ARGV[0] is the first command line argument recurse($ARGV[0]);
Wymieniając procedurę process_file
można oczywiście ww. skrypt zaadaptować do innych zadań, np. poprawienia
zepsutej daty modyfikacji plików:-)
Ponieważ opisany
poprzednio
uploader filmów na YT przestał działać przyjrzałem się bliżej skryptowi
youtube-upload.py.
Od pierwszego strzału nie działa, ale...
Skrypt ten
wymaga do działania programu ffmpeg
, który to program
służy wyłącznie do obliczenia czasu trwania filmu.
W przypadku szewy uruchamianie ffmpeg
chyba nie jest dobrym pomysłem, a uruchamianie
tylko po to żeby obliczyć ile trwa film to w ogóle beznadziejna sprawa...
Zatem ,,rozbroiłem'' skrypt, wpisując na zicher w odpowiednie miejsce długość filmu jako 60 (pewnie sekund):
def get_video_duration(video_path): """Return video duration in seconds.""" #errdata = ffmpeg("-i", video_path) #match = re.search(r"Duration:\s*(.*?),", errdata) #if not match: # return #strduration = match.group(1) #return sum(factor*float(value) for (factor, value) in # zip((60*60, 60, 1), strduration.split(":"))) return 60
Wygląda że działa.... Opis filmu dodaję po załadowaniu...
Skrypt youtube-upload.py
korzysta z API jest zatem dużo większa szansa,
że nagle przestanie działać (jak to było z poprzednio
wykorzystywanym
programem).
Do działania potrzebna jest też biblioteka
python-gdata, która wszakże zainstalowała
się na szewie w/o problems.