Use some simple, free http server software to make the files available for http requests locallytrekkie wrote:I've downloaded Covers for many movies and using Shift -F7 for
Each file is cumbersome. So i tried to write a script.

Use some simple, free http server software to make the files available for http requests locallytrekkie wrote:I've downloaded Covers for many movies and using Shift -F7 for
Each file is cumbersome. So i tried to write a script.
To resolve problems like yours viewtopic.php?t=4171 I Installed and used wampserver.trekkie wrote:Hello
Is There a Way to Import a picture from local hard disk files ?
Thanks in advance
Code: Select all
if (GetOption('UserRatings') = 1) and (Value <> '') and (CanSetField(fieldMediaLabel)) then
SetField(fieldMediaLabel, Value);
Code: Select all
if (GetOption('UserRatings') = 1) and (Value <> '') and (CanSetField(fieldMedia)) then
SetField(fieldMedia, Value);
That's my faultthe_observer wrote: There was not variable MediaLabel as i originally thought.
As i found from the help of the program the correct name of the variable for MediaLabel field is Media.
Code: Select all
//------------------------------------------------------------------------------
// returns the string with the year digits only
// clear_year := GetYear(string_with_year);
//------------------------------------------------------------------------------
function GetYear(str: string) :String;
var
i: integer;
res, pstr, po: string;
digits: TStringList;
begin
res := '';
digits := TStringList.Create;
digits.Text := '0' + #13#10 + '1' + #13#10 + '2' + #13#10 + '3'
+ #13#10 + '4' + #13#10 + '5' + #13#10 + '6' + #13#10 +
'7' + #13#10 + '8' + #13#10 + '9' + #13#10;
if (TextBetween(str, '(',')') <> '') then
str := TextBetween(str, '(',')');
for i := 1 to Length(str) do
begin
po := IntToStr(i);
pstr := Copy(str, i, 1);
if (FindLine(pstr, digits, 0) <> -1 ) then
res := res + pstr;
end;
result := res;
end;
Done, downloaded the source and did some read to that ifps documentation (more like a quick 30 seconds search) but now Im used to search for functions on the source itself.bad4u wrote:For documentation of AMC scripting functions you should have a look on AMC help file / Script files creation and for innerfuse pascal script documentation you could download AMC source code from http://www.antp.be/software/moviecatalog/sources , there is a ifps documentation for the script engine version used in AMC included (I think it is in main sources in ifps folder if I remember correct, start index.html there).
For the more specific questions you will have to wait for antp's answer
Code: Select all
(***************************************************
Ant Movie Catalog importation script
www.antp.be/software/moviecatalog/
[Infos]
Authors=Fulvio53s03 based on original by Penanders (2006)
Title=Kultvideo
Description=Script per Kultvideo.it
Site=http://www.kultvideo.it
Language=IT
Version=2 - 2. 9.2010
Requires=3.5.1
Comments=Kultvideo offre poche informazioni, su film davvero introvabili
License=This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. |
GetInfo=1
[Options]
***************************************************)
program KultVideo;
uses
StringUtils7552;
var
MovieName, Pagestr: string;
//TheMovieAddress: string;
const
SITE = 'http://www.kultvideo.it/';
SITE1 = 'http://www.kultvideo.it/';
// SITE1 = 'http://www.kultvideo.it/scheda.asp';
// http://www.kultvideo.it/articles/ArticleSheet.aspx?__langG=it-IT&aid=7244
// ../articles/ArticleSheet.aspx?__langG=it-IT&aid=7244
// -- Formatta la stringa cercando le prime lettere rendendole maiuscole
function PrimeMaiu(str: string): string;
begin
str := AnsiLowerCase(str);
str := AnsiMixedCase(str, ' -/');
Result := str;
end;
// ---
procedure AnalyzePage(Address: string);
var
Page: TStringList;
LineNr: integer;
BeginPos: integer;
forceHTTP11: boolean;
forceEncodeParams: boolean;
begin
Page := TStringList.Create;
Page.Text := GetPage(Address);
Page.Text := UTF8Decode(Page.Text);
Pagestr := Page.Text;
LineNr := FindLine('Risultati della ricerca per i termini', Page, 0);
if LineNr = -1 then
begin
ShowError('Spiacente, nessun film trovato');
end
else // Trovati film ! Nota: possono esserci + pagine -> non ancora gestito !
begin
// Crea la lista di film
forceHTTP11 := true;
forceEncodeParams := true;
PickTreeClear;
PickTreeAdd('Risultati ricerca per "' + UrlDecode(MovieName) + '":', '');
AddMoviesTitles(Page);
if PickTreeExec(Address) then
begin
// <form name="aspnetForm" method="POST" action="ArticleSheet.aspx?__langG=it-IT&aid=2610" onkeypress="javascript:return WebForm_FireDefaultButton(event, 'ctl00_btnSearch')" id="aspnetForm">
Page.Text := PostPage2(SITE, Address, content, BaseAddress, forceHTTP11, forceEncodeParams);
//fulvio <form name="fmAdultsOK" method="post" action="ArticleSheet.aspx">
<input type="hidden" name="aid" value='2610' />
<input type="hidden" name="adtst" id="adtst" value="1" />
</form>
//fulvio .
// <form action="search.php" method="post" enctype="application/x-www-form-urlencoded" name="search">
// <input name="search" type="text" size="16" maxlength="50">
// <input name="go" type="image" src="image/go.gif" usemap="go">
// </form>
//fulvio
// Page.Text := GetPage(Address); // Richiede la pagina del film
Page.Text := UTF8Decode(Page.Text);
Pagestr := Page.Text;
SetField(FieldUrl, Address);
//Page.savetofile('D:\Prova.txt');
AnalyzeMoviePage(Page); // Analizza la pagina del film
end;
end;
Page.Free;
end;
// ---
// Analisi ed estrazione dati dalla pagina del film
procedure AnalyzeMoviePage(Page: TStringList);
var
//Fine: Integer;
Line, Line2, Line3, Comm: string;
InitChar, EndChar, SaveNationYear: string;
LineNr: Integer;
BeginPos, EndPos: Integer;
Field: integer;
begin
//Debug
//Page.SaveToFile(PATHLOG+MovieName+'.film');
// data di estrazione dati
SetField(fieldDate, DateToStr(Date));
// Immagine
LineNr := FindLine('id="article_sheet_picture"', Page, 0);
//showmessage(intToStr(LineNR));
if LineNr>-1 then
begin
LineNr := LineNr + 1;
Line := Page.GetString(LineNr);
Line := TextBetween(Line, '<img src="../', '" width="');
if length(Line) > 0 then
begin
Line := SITE1 + Line;
setfield(fieldAudioFormat, Line);
GetPicture2(Line, GetField(FieldUrl));
end;
end;
// elimina caratteri x debug
// Cerca il titolo tradotto
InitChar := '<td align="left" valign="top" class="article_sheet_filmtitle">'; //tipo 1 http://www.kultvideo.it/articles/ArticleSheet.aspx?__langG=it-IT&aid=6821
BeginPos := Pos(InitChar, Pagestr);
Delete(Pagestr, 1, BeginPos - 1);
Line := '>' + TextBetween(Pagestr, InitChar, '<') + '<';
Line := TextBetween(Line, '>', '<');
HTMLRemoveTags(Line);
HTMLDecode(Line);
Line := Fulltrim(Line);
SetField(fieldTranslatedTitle, PrimeMaiu(Line) );
// SetField(fieldOriginalTitle, PrimeMaiu(Line) );
// Cerca il titolo originale
//<span class="article_sheet_subtitle">
//<span class="article_sheet_subtitle">
InitChar := '<span class="article_sheet_filmsubtitle">';
BeginPos := Pos(InitChar, Pagestr);
if BeginPos = 0 then
begin
InitChar := '<span class="article_sheet_subtitle">';
BeginPos := Pos(InitChar, Pagestr);
end;
Delete(Pagestr, 1, BeginPos - 1);
EndChar := '<';
LineNr := FindLine(InitChar, Page, 0);
Line := Page.GetString(LineNr);
InitChar := '>';
Line := InitChar + TextBetween(Line, '<span class="article_sheet_filmsubtitle">', EndChar) + EndChar;
Line := TextBetween(Line, '>', EndChar);
BeginPos := Pos(InitChar, Pagestr);
HTMLRemoveTags(Line);
HTMLDecode(Line);
Line := Fulltrim(Line);
Line := UTF8Decode(Line);
SetField(fieldOriginalTitle, PrimeMaiu(Line) );
Delete(Pagestr, 1, BeginPos - 1);
// Cerca nazionalità e anno
InitChar := '<td';
EndChar := '</td>';
Line := InitChar + Textbetween(Pagestr, InitChar, EndChar) + EndChar;
HTMLRemoveTags(Line);
HTMLDecode(Line);
Line := Fulltrim(Line); //'Francia (1987) - Colore'
SaveNationYear := Line;
Line := TextBefore(SaveNationYear, '(', '');
SetField(fieldCountry, PrimeMaiu(Trim(Line)));
// esempio: MovieName := TextBefore(MovieName, '[', '') + TextAfter(MovieName, ']');
Line := TextBetween(SaveNationYear, '(', ')');
SetField(fieldYear, Line);
// Cerca genere
InitChar := '<span class="article_sheet_datalabel">';
Line := Textbetween(Pagestr, InitChar, '</td>');
BeginPos := Pos(InitChar, Pagestr);
Delete(Pagestr, 1, BeginPos);
Line := stringreplace(Line, 'Genere:', '');
HTMLRemoveTags(Line);
HTMLDecode(Line);
Line := Fulltrim(Line);
SetField(fieldCategory, PrimeMaiu(Line));
// Cerca regia
InitChar := '<span class="article_sheet_datalabel">';
Line := Textbetween(Pagestr, InitChar, '</td>');
BeginPos := Pos(InitChar, Pagestr);
Delete(Pagestr, 1, BeginPos);
Line := stringreplace(Line, 'Regia:', '');
HTMLRemoveTags(Line);
HTMLDecode(Line);
Line := Fulltrim(Line);
SetField(fieldDirector, PrimeMaiu(Line));
// Cerca cast
InitChar := '<span class="article_sheet_datalabel">';
Line := Textbetween(Pagestr, InitChar, '</td>');
BeginPos := Pos(InitChar, Pagestr);
Delete(Pagestr, 1, BeginPos);
Line := stringreplace(Line, 'Cast:', '');
HTMLRemoveTags(Line);
HTMLDecode(Line);
Line := Fulltrim(Line);
SetField(fieldActors, PrimeMaiu(Line));
// Cerca distributore (al posto del produttore)
InitChar := '<span class="article_sheet_datalabel">';
Line := Textbetween(Pagestr, InitChar, '</td>');
BeginPos := Pos(InitChar, Pagestr);
Delete(Pagestr, 1, BeginPos);
// Line := stringreplace(Line, 'Cast:', '');
HTMLRemoveTags(Line);
HTMLDecode(Line);
Line := stringreplace(Line, crlf, '');
Line := stringreplace(Line, #09, '');
Line := Fulltrim(Line);
SetField(fieldProducer, Line);
// Cerca la durata
InitChar := '<span class="article_sheet_datalabel">Durata:'; //tipo 1 http://www.kultvideo.it/articles/ArticleSheet.aspx?__langG=it-IT&aid=6821
// InitChar := '<span class="article_sheet_datalabel">'; //tipo 2
Line := Textbetween(Pagestr, InitChar, '</td>');
BeginPos := Pos(InitChar, Pagestr);
Delete(Pagestr, 1, BeginPos);
Line := stringreplace(Line, 'Durata:', '');
HTMLRemoveTags(Line);
HTMLDecode(Line);
Line := Fulltrim(Line);
SetField(fieldLength, Line);
comm := '';
InitChar := 'Trama:</span>';
BeginPos := pos(Pagestr, InitChar);
Delete(Pagestr, 1, BeginPos);
Pagestr := Pagestr + InitChar;
Line := Textbetween(Pagestr, InitChar, '</td>');
HTMLRemoveTags(Line);
HTMLDecode(Line);
Line := stringreplace(Line, crlf, '');
Line := stringreplace(Line, #09, '');
Line := Fulltrim(Line);
SetField(fieldDescription, Line);
InitChar := '<span class="article_sheet_datalabel">';
Line := Textbetween(Pagestr, InitChar, '</td>');
BeginPos := Pos(InitChar, Pagestr);
Delete(Pagestr, 1, BeginPos);
HTMLRemoveTags(Line);
HTMLDecode(Line);
Line := stringreplace(Line, crlf, '');
Line := stringreplace(Line, #09, '');
Line := Fulltrim(Line);
// Comm := Comm + Line + crlf;
SetField(fieldComments, Comm);
end;
// ---
// Riempie la lista con i film trovati
procedure AddMoviesTitles(Page: TStringList);
var
LineNr, Linesup: Integer;
Line, Supporto: string;
MovieTitle, MovieAddress: string;
BeginPos, EndPos: Integer;
Pagina: TStringList;
begin
//TheMovieAddress := '*';
LineNr := 0;
LineNr := FindLine('<div class="artlist_artpicture">', Page, LineNr);
// LineSup := LineNr;
While LineNR <> -1 Do
Begin
// LineNr := 0;
If LineNR = -1 Then Break;
//Showmessage(intToStr(LineNr));
Line := Page.GetString(LineNr);
// Crea l'url per la pagina completa del film
LineNr := LineNr + 1;
Line := Page.GetString(LineNr);
//Showmessage(line);
MovieAddress := TextBetween(Line, '<a href="../', '"><img src="');
MovieAddress := SITE1 + MovieAddress;
//ShowMessage(MovieAddress);
Page.SetString(lineNR, ' ');
//Estrazione Tipo supporto
Linesup := FindLine('src="../img/entities/articletype/', Page, Linesup);
Supporto := Page.GetString(Linesup);
Linesup := LineSup + 1;
//Decodifica il supporto
Supporto := TextBetween(Supporto, 'articletype/', '"');
if supporto = '1_1a.jpg' then supporto := ' (dvd)';
if supporto = '2_1a.jpg' then supporto := ' (BluRay)';
if supporto = '4_1a.gif' then supporto := ' (VHS)';
if (supporto = '10_1a.jpg') or (supporto = '15_1a.jpg')or (supporto = '18_1a.jpg') then
supporto := ' (poster)';
//Estrazione Titolo film
LineNr := FindLine('<td class="artlist_arttitle">', Page, LineNr);
LineNr := LineNr + 1;
MovieTitle := Page.GetString(LineNr);
//ShowMessage(MovieTitle);
//Ripulisce il titolo
HTMLRemoveTags(MovieTitle);
HTMLDecode(MovieTitle);
MovieTitle := Fulltrim(MovieTitle);
HTMLRemoveTags(MovieTitle);
HTMLDecode(MovieTitle);
MovieTitle := Fulltrim(MovieTitle) + Supporto;
// Controlla se ci sono altre pagine di risultati
//LineNr := FindLine('Pagina Successiva',Page,0);
// if LineNr<>-1 then
// begin
// idx := idx+1;
// end;
//Line := Page.GetString(LineNr);
// Estrae l'URL della pagina successiva
//BeginPos := pos('href="', Line)+5;
//Delete( Line, 1, BeginPos);
//BeginPos := 1;
//EndPos := pos('"', Line);
//Line := SITE1 + copy(Line, BeginPos, endPos-BeginPos);
//ShowMessage(Line);
// Richiama la pagina successiva e la analizza
//Page.text := GetPage(Line);
//Page.Text := UTF8Decode(Page.Text);
//Pagestr := Page.Text;
// Debug
//Page.SaveToFile(PATHLOG+MovieName+'.res'+IntToStr(idx));
//Page.LoadFromFile(PATHLOG+MOVIE+'.res');
PickTreeAdd(MovieTitle, MovieAddress);
LineNr := FindLine('<div class="artlist_artpicture">', Page, LineNr);
end;
end;
// ----- main()
Var
TempVar: String;
begin
if CheckVersion(3,5,1) then
begin
MovieName := GetField(fieldtranslatedTitle);
if MovieName = '' then
MovieName := GetField(fieldTranslatedTitle);
if Input('KultVideo.it', 'Inserire il nome del film:', MovieName) then
begin
MovieName := UrlEncode(MovieName);
// TempVar:='http://www.kultvideo.it/cerca.asp?page=1&Genre=&key=&cerca='+UrlEncode(MovieName)+'&tipocerca=titolo&radiobutton=ALL';
TempVar:='http://www.kultvideo.it/search/Search.aspx?st=' + MovieName;
SetField(fieldURL, Tempvar); // Memorizza il campo URL
analyzepage(TempVar);
end;
end else
ShowMessage('This script requires a newer version of Ant Movie Catalog (at least the version 3.5.1)');
end.
Code: Select all
onclick="document.forms.fmAdultsOK.submit()
antp wrote:...if you check other scripts using it, it should be easy
Code: Select all
paramOK := '&adtst=1';
Page.Text := PostPage(Address, paramOK);
Code: Select all
if (UseCommaDelimiter) then
Delimiter := ','
Code: Select all
if (UseCommaDelimiter) then
Delimiter := ', '