(*************************************************** Ant Movie Catalog importation script www.antp.be/software/moviecatalog/ [Infos] Authors=bad4u Title=world-of-video.de Description=World Of Video (deutsch) - importiert DVD, HD-DVD und Blu-Ray / großes & kleines Cover / optional NUR Bild Site=www.world-of-video.de Language=DE Version=v.2.0.3 - 04.04.2009 Requires=3.5.0 Comments=Benutzung nur für private Zwecke, bitte beachten Sie das Copyright des Eigentümers der Daten und veröffentlichen Sie diese keinesfalls auf anderen Webseiten ! Dieses Skript dient lediglich dazu Ihnen das manuelle Copy/Paste beim Eintragen von Filmen zu erleichtern.||Wenn Ihnen dieses Skript gefällt, bedanken Sie sich doch bei World-of-Video, indem Sie mal dort einkaufen - natürlich auch in Ihrer WoV Videothek vor Ort. ||Vielen Dank :)|||Besonderheiten :|- Filmsuche für Verleih und/oder Verkauf|- grosses oder kleines Frontcover per Option|- Unterstützung für DVD, HD-DVD und Blu-Ray Medien|- Angabe einer eventuellen Limitierung (interessant für Sammler)||Einschränkungen :|- es wird "nur" die jeweils erste Suchergebnisseite unter Verleih | und unter Verkauf abgefragt und analysiert, wobei jede Seite| bis zu 20 Ergebnisse liefern kann|| License=Benutzung nur für private Zwecke, bitte beachten Sie das Copyright des Eigentümers der Daten und veröffentlichen Sie diese keinesfalls auf anderen Webseiten ! Dieses Skript dient lediglich dazu Ihnen das manuelle Copy/Paste beim Eintragen von Filmen zu erleichtern.||Wenn Ihnen dieses Skript gefällt, bedanken Sie sich doch bei World-of-Video, indem Sie mal dort einkaufen - natürlich auch in Ihrer WoV Videothek vor Ort. ||Vielen Dank :)||||Bitte erklären Sie hiermit die obigen Hinweise gelesen und verstanden zu haben und stimmen Sie der rein privaten Nutzung des Skripts und der damit gesammelten Daten zu.| GetInfo=1 [Options] Bildgroesse=1|1|1=Grosses Bild importieren (Standard)|0=Kleines Bild importieren Altersfreigabe=1|0|0=Altersfreigabe nur in den Kommentaren eintragen (Standard)|1=Altersfreigabe zusätzlich im unbenutzen Feld 'Framerate' abspeichern (ermöglicht Filtern der Titelliste nach Altersfreigabe) Kaufmovies=1|1|0=Kaufmovies bei Suche weglassen|1=Kaufmovies bei Suche einschliessen (Standard) Leihmovies=1|1|0=Leihmovies bei Suche weglassen|1=Leihmovies bei Suche einschliessen (Standard) Nur_Bild=0|0|0=Alle Daten abfragen (Standard)|1=Nur grosses Bild übernehmen ***************************************************) // World-of-Video.de Skript Version 2.0.3 (bad4u) // // v.2.0.0 - 31/08/2008 - complete rewrite using StringUtils1 after major website's change // v.2.0.1 - 01/09/2008 - new: message if search got no result // v.2.0.2 - 16/09/2008 - fix: description import fixed // v.2.0.3 - 04/04/2009 - fix: missing details on results list // // Probleme und Fehler bitte im Ant Movie Catalog Forum unter http://forum.antp.be/ melden - danke ! program wovDE; uses StringUtils1; var SearchItem, IndexPageRental, IndexPageSale: string; // Suchergebnisseiten analysieren / Analyze result pages procedure AnalyzeIndexPage(AddressRental: string; AddressSale: string); var IndexPage: TStringList; LineNr, i, c: integer; Line, MovieID, MovieTitle, MovieURL, URL: String; begin PickTreeClear; c := 0; if GetOption('Leihmovies') = 1 then begin IndexPage := TStringList.Create; IndexPage.Text := GetPage(AddressRental); // IndexPage.SaveToFile(dirScripts + 'indexpage_rental.txt'); // for debugging only if (FindLine('hat leider keine Ergebnisse erzielt', IndexPage, 0) = -1) and (FindLine('zu wenige oder unerwartete Ergebnisse', IndexPage, 0) = -1) then begin PickTreeAdd('Leihmovies',''); LineNr := FindLine('
', IndexPage, 0); while FindLine('

', ''); for i := LineNr + 10 to LineNr + 13 do begin Line := IndexPage.GetString(i); if TextBetween(Line, '', '') <> '' then MovieTitle := MovieTitle + ' | ' + TextBetween(Line, '', ''); end; MovieURL := 'http://www.world-of-video.de/index.php?id=505&no_cache=1&tx_shopengine_pi1[Artikel_ID]=' + MovieID; PickTreeAdd(MovieTitle, MovieURL); LineNr := LineNr + 1; end; c := c + 1; end; IndexPage.Free; end; if GetOption('Kaufmovies') = 1 then begin IndexPage := TStringList.Create; IndexPage.Text := GetPage(AddressSale); // IndexPage.SaveToFile(dirScripts + 'indexpage_sale.txt'); // for debugging only if (FindLine('hat leider keine Ergebnisse erzielt', IndexPage, 0) = -1) and (FindLine('zu wenige oder unerwartete Ergebnisse', IndexPage, 0) = -1) then begin PickTreeAdd('Kaufmovies',''); LineNr := FindLine('
', IndexPage, 0); while FindLine('

', ''); for i := LineNr + 10 to LineNr + 13 do begin Line := IndexPage.GetString(i); if TextBetween(Line, '', '') <> '' then MovieTitle := MovieTitle + ' | ' + TextBetween(Line, '', ''); end; MovieURL := 'http://www.world-of-video.de/index.php?id=105&no_cache=1&tx_shopengine_pi1[Artikel_ID]=' + MovieID; PickTreeAdd(MovieTitle, MovieURL); LineNr := LineNr + 1; end; c := c + 1; end; IndexPage.Free; end; if c = 0 then begin ShowMessage('Die Suche hat leider keine Treffer ergeben.'); Exit; end; if PickTreeExec(URL) then AnalyzeMoviePage(URL) else Exit; end; // Filmseite analysieren / Analyze movie Page procedure AnalyzeMoviePage(URL :String); var Page: TStringList; Line, Value, Temp: string; LineNr, StartNr, i: integer; begin Page := TStringList.Create; Page.Text := GetPage(URL); // Page.SaveToFile(dirScripts + 'itempage.txt'); // for debugging only StartNr := FindLine('
', Page, 0); // Bild importieren / Picture import if CanSetPicture then begin LineNr := FindLine('
', Page, StartNr); if LineNr > -1 then Line := Page.GetString(LineNr); if (GetOption('Bildgroesse') = 1) and (LineNr > -1) then Value := 'http://www.world-of-video.de/' + TextBetween(Line, 'target="thePicture"> -1) then Value := 'http://www.world-of-video.de/' + TextBetween(Line, '"> '' then GetPicture(Value); end; if GetOption('Nur_Bild') = 1 then Exit; // Medientyp / Mediatype if CanSetField(fieldMediaType) then begin LineNr := FindLine('
System:', Page, StartNr); if LineNr > -1 then begin Line := Page.GetString(LineNr); Value := TextBetween(Line, 'class="value">', '<'); HTMLRemoveTags(Value); SetField(fieldMediaType, Value); end; end; // Bewertung / Rating if CanSetField(fieldRating) then begin LineNr := FindLine('
', Page, StartNr); if LineNr > -1 then begin i := 0; Line := Page.GetString(LineNr); while Pos('star.gif', Line) > 0 do begin i := i + 1; Line := TextAfter(Line, 'star.gif'); end; Value := IntToStr(i * 2); HTMLRemoveTags(Value); if Value <> '0' then SetField(fieldRating, Value); end; end; // Originaltitel / Original title if CanSetField(fieldOriginalTitle) then begin LineNr := FindLine('
Originaltitel:', Page, StartNr); if LineNr > -1 then begin Line := Page.GetString(LineNr); Value := TextBetween(Line, '
', '<'); HTMLRemoveTags(Value); SetField(fieldOriginalTitle, Value); end; end; // Übersetzter Titel / Translated title if CanSetField(fieldTranslatedTitle) then begin LineNr := FindLine('
', Page, StartNr); if LineNr > -1 then begin Line := Page.GetString(LineNr); Value := TextBetween(Line, '

', '

'); HTMLRemoveTags(Value); SetField(fieldTranslatedTitle, Value); end; end; // Regisseur / Director if CanSetField(fieldDirector) then begin LineNr := FindLine('
Regie:', Page, StartNr); if LineNr > -1 then begin Line := Page.GetString(LineNr); Value := TextBetween(Line, '
', '
'); HTMLRemoveTags(Value); SetField(fieldDirector, Value); end; end; // Land / Country if CanSetField(fieldCountry) then begin LineNr := FindLine('
Produktionsland:', Page, StartNr); if LineNr > -1 then begin Line := Page.GetString(LineNr); Value := TextBetween(Line, '
', '
'); HTMLRemoveTags(Value); SetField(fieldCountry, Value); end; end; // Kategorie / Genre if CanSetField(fieldCategory) then begin LineNr := FindLine('
Genre:', Page, StartNr); if LineNr > -1 then begin Line := Page.GetString(LineNr); Value := TextBetween(Line, '
', '
'); HTMLRemoveTags(Value); SetField(fieldCategory, Value); end; end; // Jahr / Year if CanSetField(fieldYear) then begin LineNr := FindLine('
Produktionsjahr:', Page, StartNr); if LineNr > -1 then begin Line := Page.GetString(LineNr); Value := TextBetween(Line, '
', '
'); HTMLRemoveTags(Value); SetField(fieldYear, Value); end; end; // Filmlänge / Duration if CanSetField(fieldLength) then begin LineNr := FindLine('
Laufzeit:', Page, StartNr); if LineNr > -1 then begin Line := Page.GetString(LineNr); Value := TextBetween(Line, '
', ' min'); Value := StringReplace(Value, ' min.', ''); Value := StringReplace(Value, ' min', ''); Value := StringReplace(Value, ' Minuten', ''); HTMLRemoveTags(Value); SetField(fieldLength, Value); end; end; // Schauspieler / Actors if CanSetField(fieldActors) then begin LineNr := FindLine('
Darsteller:', Page, StartNr); if LineNr > -1 then begin Line := Page.GetString(LineNr); Value := TextBetween(Line, '
', '
'); HTMLDecode(Value); HTMLRemoveTags(Value); SetField(fieldActors, Value); end; end; // Internetadresse / URL if CanSetField(fieldURL) then SetField(fieldURL, URL); // Beschreibung / Description if CanSetField(fieldDescription) then begin Value := TextBetween(Page.Text, '
', '
'); Value := StringReplace(Value, #13#10, ' '); Value := StringReplace(Value, '
', #13#10); Value := StringReplace(Value, '€', '€'); Value := StringReplace(Value, '–', '-'); Value := StringReplace(Value, '„', '"'); Value := StringReplace(Value, '“', '"'); HTMLDecode(Value); HTMLRemoveTags(Value); FullTrim(Value); while Pos(#9, Value) > 0 do Value := StringReplace(Value, #9, ''); while Pos(#13#10 + ' ', Value) > 0 do Value := StringReplace(Value, #13#10 + ' ', #13#10); while Pos(' ', Value) > 0 do Value := StringReplace(Value, ' ', ' '); while Pos(' ', Value) = 1 do Value := Copy(Value, 2, Length(Value) - 1); SetField(fieldDescription, Value); end; // Kommentare initialisieren / Initializing comments if CanSetField(fieldComments) then begin Value := ''; Temp := ''; // Vertrieb / Distributor LineNr := FindLine('
Label:', Page, StartNr); if LineNr > -1 then begin Line := Page.GetString(LineNr); Value := Value + 'Vertrieb: ' + TextBetween(Line, '
', '
') + #13#10; end; // Erscheinungstermin / Release date LineNr := FindLine('
Erscheinungstermin:', Page, StartNr); if LineNr > -1 then begin Line := Page.GetString(LineNr); Value := Value + 'Veröffentlichung: ' + TextBetween(Line, '
', '
') + #13#10; end; // Altersfreigabe / Age Rating LineNr := FindLine('
Altersfreigabe:', Page, StartNr); if LineNr > -1 then begin Line := Page.GetString(LineNr); Temp := TextBetween(Line, '
', '
'); HTMLRemoveTags(Temp); if GetOption('Altersfreigabe') = 1 then setfield(fieldframerate, Temp); Temp := StringReplace(Temp, 'o.A.', 'o.A. (ohne Altersbeschränkung)'); Temp := StringReplace(Temp, 'FSK 6','ab 6 Jahren (FSK6)'); Temp := StringReplace(Temp, 'FSK 12','ab 12 Jahren (FSK12)'); Temp := StringReplace(Temp, 'FSK 16','ab 16 Jahren (FSK16)'); Temp := StringReplace(Temp, 'KJ','keine Jugendfreigabe (FSK18)'); Temp := StringReplace(Temp, 'FSK 18','keine Jugendfreigabe (FSK18)'); Temp := StringReplace(Temp, 'JK/Spio','keine Jugendfreigabe, strafrechtlich geprüft (JK/Spio)'); Temp := StringReplace(Temp, 'Indiziert','keine Jugendfreigabe, indiziert durch BPjM (Indiziert)'); Temp := StringReplace(Temp, 'Keine schwere J', 'keine schwere Jugendgefährdung (FSK18)'); Value := Value + 'Altersfreigabe: ' + Temp + #13#10; end; // Regionalcode / CountryCode LineNr := FindLine('
Regionalcode:', Page, StartNr); if LineNr > -1 then begin Line := Page.GetString(LineNr); Temp := TextBetween(Line, '
', '
'); Temp := StringReplace(Temp,':',' ('); Temp := Temp + ')'; Value := Value + 'Veröffentlichung: ' + Temp + #13#10; end; // Verpackung / Packaging LineNr := FindLine('
Verpackung:', Page, StartNr); if LineNr > -1 then begin Line := Page.GetString(LineNr); Value := Value + 'Veröffentlichung: ' + TextBetween(Line, '
', '
') + #13#10; end; // Limitierung (wenn limitierte Edition) / Limitation (if limited edition) LineNr := FindLine('Limitiert auf ', Page, StartNr); if LineNr > -1 then begin Line := Page.GetString(LineNr); Value := Value + #13#10 + 'Limitiert auf ' + TextBetween(Line, 'Limitiert auf ', ' Stück') + 'Stück !' + #13#10; end; // Leerzeile einfügen / include an empty row Value := Value + #13#10; // World-of-Video Artikelnummer / World-of-Video Identnumber LineNr := FindLine('
Artikel Nr.:', Page, StartNr); if LineNr > -1 then begin Line := Page.GetString(LineNr); Value := Value + 'WoV Artikelnummer: ' + TextBetween(Line, '
', '
') + #13#10; end; // Kaufpreis / Price LineNr := FindLine('

', Page, StartNr); if LineNr > -1 then begin Line := Page.GetString(LineNr); Value := Value + 'WoV Preis: ' + TextBetween(Line, '

', '

') + #13#10; end; // Bonusmaterial / DVD features LineNr := FindLine('
', Page, StartNr); if LineNr > -1 then begin Temp := ''; LineNr := LineNr + 1; Line := Page.GetString(LineNr); while Pos('
', Line) = 0 do begin if Pos('
', Line) > 0 then Temp := Temp + '- ' + TextBetween(Line, '
', '
') + #13#10; LineNr := LineNr + 1; Line := Page.GetString(LineNr); end; HTMLDecode(Temp); HTMLRemoveTags(Temp); FullTrim(Temp); Value := Value + #13#10 + 'Bonusmaterial:' + #13#10 + '=========' + #13#10 + Temp + #13#10; end; Value := StringReplace(Value,'€','€'); Value := StringReplace(Value,'–','-'); HTMLDecode(Value); HTMLRemoveTags(Value); SetField(fieldComments, Value); end; // Kommentare / Comments // Bildformate / VideoFormat if CanSetField(fieldVideoFormat) then begin LineNr := FindLine('
Bildformate:', Page, StartNr); if LineNr > -1 then begin Line := Page.GetString(LineNr); Value := TextBetween(Line, '
', '
'); Value := StringReplace(Value, ', ', ','); Value := StringReplace(Value, ',', ', '); HTMLDecode(Value); HTMLRemoveTags(Value); SetField(fieldVideoFormat, Value); end; end; // Tonformate / Audioformat if CanSetField(fieldAudioFormat) then begin LineNr := FindLine('
Tonformat:', Page, StartNr); if LineNr > -1 then begin Line := Page.GetString(LineNr); Value := TextBetween(Line, '
', '
'); Value := StringReplace(Value, ', ', ','); Value := StringReplace(Value, ',', ', '); HTMLDecode(Value); HTMLRemoveTags(Value); SetField(fieldAudioFormat, Value); end; end; // Sprache / Language if CanSetField(fieldLanguages) then begin LineNr := FindLine('
Sprachformat:', Page, StartNr); if LineNr > -1 then begin Value := ''; Line := Page.GetString(LineNr); Line := TextBetween(Line, '
', '
'); while Pos(' alt="', Line) > 0 do begin Value := Value + TextBetween(Line, ' alt="', '"') + ', '; Line := TextAfter(Line, ' alt="'); end; Value := Copy(Value, 0, Length(Value) - 2); HTMLDecode(Value); HTMLRemoveTags(Value); SetField(fieldLanguages, Value); end; end; // Untertitel / Subtitles if CanSetField(fieldSubtitles) then begin LineNr := FindLine('
Untertitel:', Page, StartNr); if LineNr > -1 then begin Value := ''; Line := Page.GetString(LineNr); Line := TextBetween(Line, '
', '
'); while Pos(' alt="', Line) > 0 do begin Value := Value + TextBetween(Line, ' alt="', '"') + ', '; Line := TextAfter(Line, ' alt="'); end; Value := Copy(Value, 0, Length(Value) - 2); HTMLDecode(Value); HTMLRemoveTags(Value); SetField(fieldSubtitles, Value); end; end; // Anzahl Disks / Number of disks if CanSetField(fieldDisks) then begin LineNr := FindLine('
Setinhalt:', Page, StartNr); if LineNr > -1 then begin Line := Page.GetString(LineNr); Value := TextBetween(Line, '
', ' '); SetField(fieldDisks, Value); end; end; end; // Suche Titel in Leihmovies & Kaufmovies / Search for movie title within 'rental' & 'sale' begin if CheckVersion(3,5,0) then begin if AcceptLicense(2) = False then Exit; IndexPageRental := ''; IndexPageSale := ''; SearchItem := GetField(fieldTranslatedTitle); if SearchItem = '' then SearchItem := GetField(fieldOriginalTitle); if Input('World-of-Video.de - Die ganze Welt des Home-Entertainment', 'Filmtitel eingeben (ohne Sonderzeichen):', SearchItem) then begin if GetOption('Leihmovies') = 1 then IndexPageRental := 'http://www.world-of-video.de/index.php?no_cache=1&tx_shopengine_pi1%5Blookfor%5D='+URLEncode(SearchItem)+'&id=505'; if GetOption('Kaufmovies') = 1 then IndexPageSale := 'http://www.world-of-video.de/index.php?no_cache=1&tx_shopengine_pi1%5Blookfor%5D='+URLEncode(SearchItem)+'&id=105'; if (IndexPageRental <> '') or (IndexPageSale <> '') then AnalyzeIndexPage(IndexPageRental, IndexPageSale) else begin ShowMessage('Sie haben in den Skriptoptionen die Suche für Leihmovies UND Kaufmovies ausgeschaltet. Bitte wählen Sie mindestens eine Option für die Suche.'); Exit; end; end else Exit; end else ShowMessage('Dieses Script benötigt eine aktuellere Version von Ant Movie Catalog (Version 3.5.0 oder höher)'); end.