Skip to content

Import nových eshop XML

cosmo-cz edited this page Jan 13, 2016 · 5 revisions

Table of Contents

Import nových eshopů

Založení nového eshopu

  • Buďto registrací na webu
  • Nebo založením záznamu v tabulce eshop
Nastavení eshopu (sloupce):
  • name - Nechat prázdný text (ne null). Používá se v speciálních případech, kdy import eshopu obsluhuje crawler "na míru"
  • try_count - 0
  • hit_count - 0
  • xmlfeed_url - URL ke stažení XML souboru
  • logo_url - relativní cesta k souboru loga v adresáři www
  • web_url - URL adresa eshopu
  • fullname - Název eshopu
  • priority - výchozí hodnota 0. Čím vyšší hodnota, tím je zdroj prioritnější. Eshopy s vyšší prioritou můžou přepsat obálku eshopů s nišší prioritou. Nejvyšší prioritu má skenovací klient.
  • process_cover - příznak, jestli eshop procesovat obrázky obálek
  • process_toc - příznak, jestli eshop procesovat obrázky obsahů
  • process_annotation - příznak, jestli eshop procesovat anotace
  • process_rating - příznak, jestli eshop procesovat hodnocení
  • process_review - příznak, jestli eshop procesovat komentáře
  • rating_multiplier - násobič hodnoty uděleného hodnocení. OKCZ ukládá hodnocení v stupnici 0-100. Pokud eshop ukladá v rozmezí 0-5, nebo 0-10 je potřeba hodnotu vynásobit 20, příp 10.
  • author_separator - Speciální případ. Pokud je autor zahrnut už v titulu, tady se definuje oddělovač. Napr.: "Jméno Autora: Titul" zadáme do tohoto sloupce ": "
  • library - Pokud eshop poskytuje komentáře, je nutné založit záznam v tabulce library a svázat s eshopem pomocí tohoto sloupce (primárním klíčem).
# Kořeňový element může být pojmenovaný libovolně
<SHOP>

   # Pokud se element nejmenuje SHOPITEM je nutné pojmenovat explicitně pomocí sloupce xml_el_shopitem
   <SHOPITEM>

      # Pokud se element nejmenuje PRODUCT, nebo PRODUCTNAME je nutné pojmenovat explicitně pomocí sloupce xml_el_title
      <PRODUCT><![CDATA[<Přemysl Pitter: "Nečekejme na velké chvíle">]]></product>

      # Pokud se element nejmenuje AUTHORS je nutné pojmenovat explicitně pomocí sloupce xml_el_authors
      <AUTHORS><![CDATA[<LAJSKOVÁ, Lenka>]]></authors>

      #
      <ROKVYDANI>0</rokvydani>

      # Pokud se element nejmenuje ISBN, EAN, PRODUCTNO, nebo PN je nutné pojmenovat explicitně pomocí sloupce xml_el_isbn
      <ISBN>978808693531</isbn>

      # Pokud se element nejmenuje NBN je nutné pojmenovat explicitně pomocí sloupce xml_el_nbn
      <NBN></nbn>

      # Pokud se element nejmenuje URL, nebo URL_PRODUCT je nutné pojmenovat explicitně pomocí sloupce xml_el_url
      <URL><![CDATA[<http://eshop/zzz>]]></url>

      # Pokud se element nejmenuje IMGURL, nebo URL_IMG je nutné pojmenovat explicitně pomocí sloupce xml_el_imgurl
      <IMGURL><![CDATA[<http://eshop/obr.jpg>]]></imgurl>

      # Pokud se element nejmenuje PRICE_VAT, nebo PRICE_MIN je nutné pojmenovat explicitně pomocí sloupce xml_el_price_min
      <PRICE_MIN></price_min>

      # Pokud se element nejmenuje PRICE_MAX je nutné pojmenovat explicitně pomocí sloupce xml_el_price_max
      <PRICE_MAX></price_max>

      # Pokud se element nejmenuje RATING_VALUE je nutné pojmenovat explicitně pomocí sloupce xml_el_rating_value
      <RATING_VALUE></rating_value>

      # Pokud se element nejmenuje RATING_COUNT je nutné pojmenovat explicitně pomocí sloupce xml_el_rating_count
      <RATING_COUNT></rating_count>

      # Anotace. Pokud se element nejmenuje DESCRIPTION, je nutné pojmenovat explicitně pomocí sloupce xml_el_description
      <DESCRIPTION></description>

      # Pokud se element nejmenuje REVIEWS je nutné pojmenovat explicitně pomocí sloupce xml_el_reviews_encap
      <REVIEWS>
         # Pokud se element nejmenuje REVIEW je nutné pojmenovat explicitně pomocí sloupce xml_el_reviews_items
         <REVIEW>
            # Primární klíč komentáře. Pokud se element nejmenuje REVIEWS je nutné pojmenovat explicitně pomocí sloupce xml_el_reviews_id
            <ID></id>
            # Čas vytvoření komentáře. Pokud se element nejmenuje REVIEWS je nutné pojmenovat explicitně pomocí sloupce xml_el_reviews_time
            <TIME></time>
            # Text komentáře. Pokud se element nejmenuje REVIEWS je nutné pojmenovat explicitně pomocí sloupce xml_el_reviews_text
            <SUMMARY></summary>
            # Číselné hodnocení. Pokud se element nejmenuje RATING je nutné pojmenovat explicitně pomocí sloupce xml_el_reviews_rating
            <RATING></rating>
         </reviews>
      </reviews>
   </shopitem>
</shop>

Testovací import

Do bash zadáme:

ID eshopu
# export OBALKY_ESHOP=7027

pocet položek, které chceme pokusně naplnit
# export OBALKY_ESHOP_ITEMS=10

spustit import (a kouknout se do DB na výsledek; SELECT * FROM product WHERE eshop=7027)
# cd /opt/obalky/bin/
# perl -w crawler.pl today

pokud se bude importovat spouštět opakovaně, je potřeba promazat dočasnou paměť (jinak by se opakovaně plnilo až po uplynutí 30 dnů)
# rm /opt/obalky/.crawler/7027.str

Výstup importu na bash konzoli:

XML contains 3960 items   # po zpracování XML struktury se zobrazí celkový počet nalezených položek
EAN or NBN not found      # pokud se u titulu nenajde pouzitelny identifikator ISBN, NBN
crawl #50                 # v teto chvili se stahuji obrazky obalek, vypisuje kazdych 50 zaznamu XML (pokud je import spusten na mene zaznamech nezobrazi se info.)
crawl #100

# probiha plneni do DB
add_product #15 at crawler.pl line 96.
media->save_to(product) saving http://flexibooks.cz/fotocache/bigorig/Nakladatelstvi_Fraus/Obcanska_vychova/obcanska_vychova_6.jpg to 601418939

# pocas plneni se na konci radku vypisuje ID produktu; takto je mozne overit co se naplnilo pod danym produktem
SELECT * FROM obalky.product WHERE id=601418939

Ostrý import

Pro naplnění všech položek v XML je potřeba proměnnou OBALKY_ESHOP_ITEMS vymazat

# cd /opt/obalky/bin/
# export OBALKY_ESHOP=7027
# unset OBALKY_ESHOP_ITEMS
# rm /opt/obalky/.crawler/7027.str
# perl -w crawler.pl today
Clone this wiki locally