>> 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 | astronomy | asus | atom.xml | awk | aws | balcerowicz | balta | bash | berlin | bibtex | bieszczady | biznes | blogger | blogging | blosxom | borne-sulinowo | breugel | bt747 | 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 | gdynia | 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 | 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 | 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 | 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 | svg | svn | swornegacie | szwajcaria | 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 | 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
Pobieranie informacji o książce/płycie o podanym numerze UPC/EAN z amazon.com

Jest gotowa aplikacja służąca do katalogowania książek za pomocą czytnika kodów kreskowych opisana w artykule A Perl script catalogs books and CDs... (tu jest wersja HTML z likiem do kodu źródłowego opisanego skryptu).

Od pierwsze strzału aplikacja nie działa. Żeby w ogóle Perl chciał program wykonać należy z przodu pliku dodać wiersz:

## http://perlmeister.com/forum/viewtopic.php?t=3596&sid=59d9cb0bda64235bda70315d6e9031e8
use POE::Loop::Tk ;

Teraz działa ale nie zawsze. Ponadto program Schilli'ego w zamierzeniu obsługuje tylko kody UPC a moje książki/płyty są oznaczane kodem UPC i/lub EAN.

Kody EAN są 13 cyfrowe a UPC 12 cyfrowe. Żeby było śmieszniej amazon.com nie rozumie kodów EAN -- trzeba odpytywać jakąś europejską filię, np. amazon.co.uk.

## moja wersja procedury amzn_fetch:
sub amzn_fetch {
  my($upc_or_ean) = @_;
  my $resp;

  my $amz_locale = 'us'; # default is US
  if ( length ("" . $upc_or_ean ) > 12) {
    $amz_locale = 'uk';
    print STDERR "*** $upc_or_ean looks like EAN code\n";
  } else {
    $amz_locale = 'us';
    print STDERR "*** $upc_or_ean looks like UPC code\n";
  }

  my $amzn = Net::Amazon->new(
      token => $amz_token,
      secret_key => $amz_secret,
      locale => $amz_locale,
      ua    => $UA,
  );

  my $req ;
  if ( $amz_locale eq 'uk') {
    print STDERR "*** Fetching from $amz_locale with mode $current_amz_cat ***\n";
    $req = Net::Amazon::Request::EAN->new(
          ean  => $upc_or_ean,
          mode => $current_amz_cat,
         );
  } else {
      print STDERR "*** Fetching from $amz_locale with mode $current_amz_cat ***\n";
       $req = Net::Amazon::Request::UPC->new(
	  upc  => $upc_or_ean,
          mode => $current_amz_cat,
       );
  }

  $resp = $amzn->request($req);

 ## ... itd ...

Skrypt Schilli'ego zakłada ponadto, że zapytanie zawiera UPC/EAN oraz nazwę kategorii (books, music DVD), bo tak kiedyś działał Amazon. Teraz wydaje się, że działa inaczej. Podanie np. kodu książki + kategorii music, daje błąd. Nie zamierzałem grzebać w pakiecie Net::Amazon, więc zmieniłem skrypt w ten sposób, że kategoria jest deklarowana explicite przez operatora:

my @MODES = qw(books music dvd);

## ... itd ...

## cf. http://www.ibm.com/developerworks/aix/library/au-perltkmodule2/
my $MODE  = $top->Label();

my $current_amz_cat = $MODES[0]; ## domyślną jest pierwsza kategoria
foreach(@MODES) { 
  $MODE->Radiobutton( 
      -text => $_, 
      -value=> $_, 
      -variable => \$current_amz_cat,
      -command => sub {
	print STDERR "*** Current mode is: $current_amz_cat \n";
      } )->pack(-side => 'left', -expand => '1', -fill => "x" )
}

Na wypadek gdyby operator zapomniał kliknąć w co trzeba:

  if($mode eq "books") {

    eval { $resp->properties()->isbn(); } ; ## bez eval będzie krasz

    if ($@) {## błąd jeżeli `item' nie zawiera isbn, tj. nie jest książką... 
      print STDERR "*** ERROR: $@\n";
      $PRODUCT->configure( -text => "NOT BOOKS TYPE ITEM / REENTER"); return 1;  }
 ## ... itd ...

Opis książki różni się od opisu CD (np. książka ma element isbn a płyta tracks). Schilli ominął ten problem ignorując elementy specyficzne, definiując jeden typ rekordu i jedną tabelę. Ostatnia zmiana w porównaniu do skryptu Schilli'ego, to dodanie do bazy pola przechowującego opis książki/CD w formacie XML (zamiast definiowania różnych tabel dla książek, płyt CD i filmów). W zależności od typu danych ten opis XML zawiera to co trzeba (czyli specyficzne dla opisywanego obiektu atrybuty). Np:


 Edward R. Tufte
 Edward R. Tufte
 The Visual Display of Quantitative Information
 Graphics Press USA
 2nd edition
 2001-01-31
 0961392142
]]>

Tak działającym skryptem skatalogowałem jakieś 30--40% zawartości mojej biblioteki. Stare książki nie mają kodu kreskowego. Część polskich książek jest w zasobach Amazona ale części nie ma (np. książki wyd. Readme -- i słusznie bo to prawie w całości badziewie:-)

Tu jest corpus delicti. Moja biblioteka jest tutajtutaj -- jakby ktoś był ciekaw.

Skrypty można znaleźć tutaj.

Dopisane 1 września 2011: Zapomniałem napisać o istotnej sprawie. Żeby móc odpytywać Amazon trzeba się zapisać do Product Advertising API, tj. założyć konto. Aby móc korzystać z ww. API trzeba wypełnić odpowiedni formularz i zgodzić się na licencję, która jest mówiąc oględnie taka sobie.

To begin the enrollment process, you must submit a complete and accurate enrollment form. In your enrollment form, you must describe the application you intend to develop and use with the Product Advertising API or on which you intend to display Product Advertising Content. We will evaluate your enrollment form and notify you of its acceptance or rejection. We may reject your enrollment form if we determine that your application is unsuitable. Unsuitable applications include those that:

do not have as their principal purpose advertising and marketing the Amazon Site and driving sales of products and services on the Amazon Site

Wygląda groźnie ale wystarczy podać -- jako opis aplikacji -- URL, pod którym będziemy ,,promować'' Amazon. Proces koncesyjny jest (póki co?) uproszczony -- nikt niczego nie rozpatruje. Ale to się może zmienić...

In addition, we may terminate or suspend your license to access and use the Product Advertising API, Data Feed, or any part of or all Product Advertising Content at any time without terminating this License Agreement by giving you written notice.

Jednym słowem do poważnych zastosowań to się nie nadaje. Ale do katalogowania własnej biblioteczki może być...

Po założeniu konta, pod adresem Manage Your AccountAccess IdentifiersClick here w rubryce Access Credentials tworzymy/zarządzamy Access Key ID/Secret Access Key -- niezbędnymi do korzystania z opisywanego wyżej skryptu:

my $amz_token = '???'; ## Access Key ID
my $amz_secret = '???'; ## Secret Access Key

url | Wed, 31/08/2011 19:35 | tagi: , ,
Katalogowanie książek -- pierwsze rezultaty

Pobieranie informacji o książce/płycie o podanym numerze UPC (z amazon.com):

#!/usr/bin/perl
# 
use Net::Amazon;
use Net::Amazon::Request::UPC;

my $code = '633367991522' ; # UPC (z kodem EAN są problemy)

# Token/secret_key do pobrania po zarejestrowaniu się na str. 
# https://aws-portal.amazon.com/gp/aws/developer/account/index.html/177-3749078-2923747
my $ua = Net::Amazon->new(
   token       => '####################',
   secret_key  => '########################################', 
);

my $req = Net::Amazon::Request::UPC->new( upc  => $code, mode => 'music', );

# Response is of type Net::Amazon::Response::UPC
my $resp = $ua->request($req);

if($resp->is_success()) {
   print $resp->as_string(), " (UPC)\n"; } else {
   print "Error: ", $resp->message(), "\n"; }
# end

url | Tue, 16/08/2011 22:55 | tagi: , ,
Kupowanie książek za granicą

Ten problem jest dyskutowany ([1] [2] [3] [4]), pojawiają się sprzeczne, często nieprawdziwe opinie. Nawet na liście GUST-l było pytanie w tej sprawie. Nie chwaląc się mam ,,w tym obszarze'' pewne doświadczenie-- w ostatnich latach kupiłem głównie via Internet kilkadziesiąt książek od różnych sprzedawców. Główne książki naukowe, literaturę fachową (informatyka), ale także trochę książek nt. historyczno-wojenne, które lubię sobie poczytać (przykładowo: Antony Beevor Stalingrad: The Fateful Siege, 1942-1943, Clay Blair, Hitler's U-Boat War, książki Martina Middlebrooka dot. różnych operacji RAF w drugiej wojnie światowej, itp.) Większość z nich oraz kilkanaście płyt CD kupiłem na amazon.com, tym amerykańskim. Opłaty za przesyłkę są na poziomie 10 USD w przypadku pojedynczej książki, jak książek jest więcej, to oczywiście jednostkowe koszty transportu są mniejsze. Uprzedzając obawy -- nie jest doliczane żadne cło. W ostatnich chyba dwóch latach wiele książek kupiłem w amerykańskich antykwariatach via Amazon. Płacę zawsze kartą debetową Visa/Electron wydaną przez Intelligo, używałem też e-karty m-Banku. Oczywiście amazon akceptuje także inne karty -- w tym, a zwłaszcza -- karty kredytowe, ale ja takowej nie posiadam.

Książki z antykwariatów są czasami dużo tańsze niż nowe, czasami różnica jest niewielka. Nie zawsze zatem opłaca się kupować z drugiej ręki, tym bardziej, że opłata za transport jest zwykle nieco większa dla książki używanej. No i kupujemy wtedy jedną książkę, więc nie ma możliwości rozłożenia kosztów transportu na wiele pozycji. Ważna sprawa: Amazon nie wysyła książek używanych do Polski. Najbliżej można wysłać do Niemiec. Można też wysłać do UK, Irlandii i jeszcze do innych krajów, ale do Polski nie da rady... Może dodadzą Polskę w najbliższym czasie do listy, ale na razie na niej nie jest. Trzeba mieć zatem ,,metę'' w tych krajach, do których książka może być wysyłana a z stamtąd sprowadzić już na własną rękę. Nie każdy antykwariat wysyła książki do Europy--jest to zaznaczone zwrotem international shipping available w opisie książki.

To czy książkę można czy nie można wysłać do Europy jest komunikowane na ostatnim etapie kupna--przy wybierze adresu do wysyłki. Klikamy ship to this address (jeżeli mamy zadeklarowany jeden adres wysyłkowy, to być może nie musimy nawet klikać -- ja mam ich kilka) i na górze strony ukazuje się niewinne ostrzeżenie ,,There is a slight problem...'' Faktycznie -- very slight -- na dole jest wyjaśnienie: this item can't be shipped to the country you selected. W tej sytuacji należy spróbować z innym sprzedającym, a zwykle jest ich wielu. Książki, które kupiłem zawsze powtarzam zawsze były w świetnym stanie, nawet te, które nie były opisane jako like new.

Inne potencjalne źródło książek to e-bay. W tym wypadku moje doświadczenie jest mniejsze: kilka pozycji. Kupiłem przykładowo Software Engineering: A Practitioner's Approach, która to książka kosztuje ca 120 USD na amazon.com, a cena używanej zaczyna się od 50 USD. Mówię o piątym wydaniu, które do tej pory ukazało się wyłącznie jako hardcover. A na e-bay można znaleźć ww. pozycję po kilka dolarów. Hmm... podejrzana sprawa. W opisie czytamy Containing exactly the same material as the US Hardcover edition... International Editions have different ISBN... This books is printed Black and White. Często koszty przesyłki są dość zaporowe, ale nie zawsze. Dla celów naukowych (tj. chciałem sprawdzić co i czy w ogóle przyjdzie) zaryzykowałem: znalazłem dostawcę z Chin(!), wydając całe 9 USD plus ca 15 USD za dostawę. BTW nie była to oferta najtańsza! Książka przyszła coś po tygodniu, jest absolutnie zgodna z opisem.

A czemu tak tanio? A bo na okładce jest napisane: This book cannot be re-exported from the country to which it is sold by Mc-Graw Hill. No i się wyjaśniło--segmentacja rynku. W USA łoimy do kaleson, a w Azji taniej bo kogo tam stać na książki po 100 dolarów. Nie jestem za to pewien czy kupowanie tych książek jest do końca zgodne z prawem. Na zdrowy chłopski rozum nie jest, ale z drugiej strony takich ofert jest na e-bay bardzo dużo, są one starannie i uczciwie opisane, łącznie z podaniem numeru ISBN (który jest różny od wydania International). Wygląda więc, że jest to co najmniej tolerowane.

Polskich pośredników unikam (ostatnie transakcje z nimi jakieś 3 lata temu, więc może coś się zmieniło). Kupując na konto UG nie miałem wyboru i korzystałem z różnych polskich importerów (bo moja firma nie pozwala na płacenie kartą kredytową). I dłużej i drożej... Przykładowo ceny książek sprowadzanych przez firmę ABE Books w porywach były wyższe o połowę od tych na amazon.com. Na pytanie czemu, odpowiedź, że to niemożliwe, bo oni kupują ,,bezpośrednio od wydawcy''. Aha, no tak, szczególnie jak się z tym wydawcą rozliczają w EUR.

Jeżeli chodzi o polskie książki, to nie kupię już niczego ani na merlin.pl ani na empik.com. Fatalna obsługa, ceny wcale nie najniższe. Do tego empik miał stronę WWW wprawdzie pstrokato-jarmarczną, ale nie działającą poprawnie w systemie Firefox/Linux. Polskie książki kupuję w małych księgarniach internetowych i jeszcze się nigdy na nich zawiodłem. A taki Merlin potrafił mi wysłać uszkodzą płytę DVD (widoczna nieuzbrojonym okiem rysa) a następnie ,,olać'' moją reklamację. Olać, tj. nic nie odpisać. Empik podpadł już przy pierwszym i zarazem ostatnim zamówieniu, wysyłając książkę przez miesiąc.

url | Wed, 26/12/2007 08:46 | tagi: , ,