>> wybierz styl >> es :: ns :: bs

Weblog Tomasza Przechlewskiego [Zdjęcie T. Przechlewskiego] [[Ikona]]


scrum
random image [Photo gallery]
Zestawienie tagów
1-wire | 18b20 | 1wire | 2140 | 3rz | alsamixer | amazon | anniversary | antypis | apache | api | arm | armenia | astronomy | asus | atom.xml | awk | aws | bakłażan | balcerowicz | balta | bash | berlin | bibtex | bieszczady | biznes | blogger | blogging | blosxom | borne-sulinowo | breugel | bt747 | budapeszt | canon | cedewu | chello | chown | chujowetaśmy | cmentarz | contour | cron | css | csv | curl | d54250wykh | debian | dejavu | dhcp | dht22 | dia | docbook | dom | ds18b20 | dyndns | dynia | ebay | economy | ekonomia | elka | elm | emacs | emacs23 | english | ess | eu | excel | exif | exiftool | f11 | fc | fc11 | fc15 | fc5 | fc8 | fedora | fedora21 | fenix | ffmpeg | finepix | firefox | flickr | fontforge | fontspec | fonty | fop | foto | france | francja | fripp | fuczki | fuji | fuse | gammu | garmin | gawk | gazwyb | gdańsk | gdynia | gender | geo | georgia | gft | git | github | gmail | gnokii | gnus | google | googlecl | googleearth | googlemaps | gphoto | gphoto2 | gps | gpsbabel | gpsphoto | gpx | gpx-viewer | greasemonkey | gruzja | grzyby | haldaemon | handbrake | historia | history | hitler | holocaust | holokaust | hpmini | humour | iblue747 | ical | iiyama | ikea | imap | inkscape | inne | internet | j10i2 | javascript | jhead | k800i | kajak | kamera | kleinertest | kml | kmobiletools | knuth | kod | kolibki | komorowski | konwersja | krutynia | kuchnia | kurski | latex | latex2rtf | latex3 | lcd | legend | lenny | lesund | lewactwo | liberation | linux | lisp | lisrel | litwa | logika | ltr | lubowla | lwp | m2wś | mapsource | marvell | math | mathjax | mazury | mbank | mediolan | mencoder | mh17 | michalak | microsoft | monitor | mp4box | mplayer | ms | msc | msw | mtkbabel | museum | muzyka | mymaps | mysql | nanopi | natbib | navin | neo | neopi | netbook | niemcy | niemieckie zbrodnie | nikon | nmea | nowazelandia | nuc | nxml | oauth | oauth2 | obituary | okular | olympus | ooffice | ooxml | opera | otf | otftotfm | other | overclocking | panoramio | pdf | pdfpages | pdftex | pdftk | perl | photo | photography | picasa | picasaweb | pim | pine | pit | plotly | pls | plugin | po | politics | polityka | polsat | postęp | powerpoint | prelink | problem | propaganda | pstoedit | putin | python | r | radio | random | raspberry pi | refugees | relaxng | ridley | router | rower | rowery | rpi | rsync | rtf | ruby | rugby | russia | rwc | rwc2007 | rwc2011 | rzym | samba | sem | sheevaplug | sienkiewicz | signature | sks | skype | skytraq | smoleńsk | sqlite | srtm | ssl | statistics | stats | statystyka | stix | suwałki | svg | svn | swornegacie | szwajcaria | słowacja | tbilisi | terrorism | tex | texgyre | texlive | thunderbird | tomato | tourism | tramp | trang | truetype | ttf | turystyka | tusk | tv | tv5monde | twitter | typetools | ubuntu | uchodźcy | udev | umap | unix | upc | updmap | ups | utf8 | varia | video | vienna | virb edit | vostro | wammu | wdc | wdfs | webcam | webdav | wh2080 | wiedeń | wikicommons | wilno | windows | windows8 | wine | wioślarstwo | word | wordpress | wrt54gl | ws1080 | wtyczka | ww2 | www | wybory | wybory2015 | włochy | węgry | xemex | xetex | xft | xhtml | xine | xml | xmllint | xsd | xslt | xvidtune | youtube | yum | zakopane | zakupy | zdf | łeba | świdnica
Pobrania via google: [[Ikona]]
Archiwum
Inne blogi
N. Walsh | Morten H. Frederiksen | B. Clementson | prawo.vagla.pl | F. Hecker | M. Olson | J. Tennison | J. Clark | M. Nottingham | M. Shuttleworth | T. Isakowicz-Zalewski | J. Anglim | José A. Ortega Ruiz Modern Perl
Inne tematyczne
Ashwin Amanna | wiesia.nets.pl | Wojt | rwm.org.pl | DataBlog | Revolutions | Learning R | A. Gelman | C. Nel | J. Vogelgesang | ubl.xml.org/ | J.D. Long |
O stronie
wykorzystywany jest blosxom plus następujące wtyczki: tagging, flatarchives, rss10, lastbuilddatexhtmlmime. Niektóre musiałem dopasować nieco do swoich potrzeb. Więcej o blosxom jest tutaj
Subskrypcja
RSS 1.0
Ładowanie filmów na YouTube off-line

Trudno jest znaleźć gotowe i działające rozwiązanie pn. jak wysłać (upload) film na YT, nie używając formularza i przeglądarki. Teoretycznie jest API; jest tam nawet to opisane, ale jakoś tak na tyle pokrętnie, że nie mogę się połapać na szybko jak to zaimplementować. Szukałem po linii Pythona, por. Getting comments from youtube via... oraz python uploading scripts for youtube. Nic z tego nie wyszło...

Działa za to skrypt opisany na stronie How to Upload YouTube Videos Programmatically. Nie korzysta on wprawdzie z API--udaje przeglądarkę i analizuje kod HTML metodą data scrapping. Data scrapping ma ten minus, że w każdej chwili może przestać działać ale może nie będzie aż tak źle. Takie sztuczki sam kiedyś stosowałem, zresztą (por. Czy flickr umie liczyć -- rozwiązanie).

Przechodząc do konkretów. Uruchomienie skryptu ytup.pl wygląda następująco:

perl ytup.pl -l login -p hasło -c nr_kategorii -d opis - t tytuł_filmu -x słowa-kluczowe -f plik

Ja chcę uruchamiać ytup.pl w nocy, jak wszyscy śpią. W tym celu opis filmu wstawiam do pliku z rozszerzenie .descr, np.:

-t Elka plays accordion
-d Elka's warm-up exercises
-x elka,accordion,weltmaister,rehearsal,music,warm-up
-c 24
-f Zi6_0042.MOV

Jak widać, plik zawiera wszystko co trzeba do uruchomienia skryptu ytup.pl. Teraz inny plik przegląda wybrane katalogi, czyta pliki .descr i uruchamia ytup.pl [pliki Video i pliki .descr muszą być w tym samym katalogu]:

#!/usr/bin/perl
use File::Spec;
use File::Basename;

my $YTlogin = 'login'; ## wstaw login 
my $YTpassword = 'hasło'; ## wstaw hasło
my $YTlog_file = "/home/tomek/SD/ytube/logs/YT_Upload.log";
my $PerlProg = "/usr/bin/perl";
my $PerlScript = '/home/tomek/bin/ytup.pl';
my @YT_watch_dirs=('/home/tomek/SD/ytube/upload', '/public/sheeva/winstuff/YTube');

open LOG, ">>$YTlog_file";

for my $dir (@YT_watch_dirs) {
    # Read directory and collect description files.
    opendir(DIR, $dir) or die "*** Can't open directory $dir: $!.";

    print STDERR "*** Processing directory: $dir\n";

    my $count = 0;
    while (defined(my $file = readdir(DIR))) {
       if ($file =~ /^\./) { next ; } # pomin plik z kropka na poczatku
       if ($file =~ /\.descr$/) {
          $file = File::Spec->rel2abs(File::Spec->join($dir,$file));
          print STDERR "*** Description file: $file\n";
          Upload_video($file);
          rename($file, "${file}_") || print LOG "Problem ze zmiana $file => ${file}_\n";
          $count++;
       }
    }
    closedir(DIR);
    print STDERR " $count .dscr file" . ($count!=1?'s':'') . ".\n";
}

close(LOG);

### ### ###

sub Upload_video {
# Przeczytaj plik z opisem, wyslij plik video za pomoca system(...)
   my $file_name = shift ;
   my $key, $val;

   my @Options = ();

   open (DESCRIPTION, $file_name);

   while (<DESCRIPTION>) {
      # plik zawiera w kazdym wierszu: opcja spacja wartosc-opcji
      $_ =~ /([-\w]+)\s+(\S.*)/;
      $key = $1; $val = $2; # na wszelki wypadek
      if ($key =~ /-f/) { $val = dirname($file_name) . "/$val" ; 
   }
   push (@Options, ("$key", "$val"));  }
   my @UploadScript = ($PerlProg, $PerlScript, '-l', $YTlogin, '-p', $YTpassword, @Options);
   print STDERR "*** Executing: @UploadScript\n";

   system ( @UploadScript ) == 0 || print LOG "Problem z zaladowaniem pliku $file_name\n" ;
}

Powyższy plik jest uruchamiany -- w stosownym momencie -- przez crona, a przesłany film jest tutaj.

url | Sat, 13/02/2010 09:01 | tagi: , ,