The script is adapted to the new site structure. Verified with some TV series and some movies. Report any errors!
Code: Select all
(***************************************************
Ant Movie Catalog importation script
www.antp.be/software/moviecatalog/
[Infos]
Authors=Fulvio53s03
Title=comingsoon
Description=import film e serie TV
Site=http://www.comingsoon.it
Language=IT
Version=1.4.1
Requires=4.2.1
Comments=puo' essere usato per ricerca informazioni tramite google (mode=0) oppure per estrarle direttamente da comingsoon.it (mode=1) inserendo l'URL direttamente.
License=* The source code of the script can be used in |* another program only if full credits to Fulvio53s03*
GetInfo=1
RequiresMovies=1
[Options]
Mode=1|0|0=normal mode|1=batch mode (url)
[Parameters]
***************************************************)
// TypeSearch=1|1|1=search for exact expression|2=search for any word
// TypeOrder=3|3|1=order by Artist|2=order by film_o_serie Title|3=order by relevance
// needs the following units
// StringUtils7552.pas
//
program comingsoon;
uses
StringUtils7552;
const
comingsoonUrl = 'https://www.comingsoon.it'; // base url
UrlBase = 'https://www.comingsoon.it'; // base url
batchlogfic = 'c:\comingsoon_batch.html'; // log for batch mode
debug_search = false; // debuga mode on/off su ricerca dischi
debug_film_o_serie = false; // debug mode on/off su estrazione dati film_o_serie
folder = 'f:\prova\'; // directory where to save files
CRLFspace = CRLF + ' ';
var
nuovo_anno, mese_anno, solo_anno, data_rilascio, label, stagione: String;
Credit_address, Readdress, Page, Page_footer: String;
film_o_serieName, ArtistName, firstcall, name, autori: String;
Formato, Releases, artista: String;
file_name, campo_URL: String;
tappo_fine_ricerca: String;
tipo_ricerca, pag_ricerca, save_value, ordine_lista, Salva_autore: String;
value, episodi, lista_episodi: string;
CharNormal, CharAbNormal: string;
film_o_serie_ok: boolean;
cerca_ancora: boolean;
BatchMode, giri, PosBar: Integer;
titolo_e_autore, autore, durata, cover: String;
save_comments, commento_episodi, commento_skeda: String;
save_description, save_desc_skeda, save_desc_episodi: String;
batchlog, confbatch: TstringList;
save_pag, artist, initchar, endchar: string;
film_o_serieok: boolean;
//*********************inizio variabile per ricerca google ********************
Address, Address_all, urlmusic, album, albumtest, genre: String;
Save_address, Title_album, indir_album, indir_title_album, campo_pick: String;
dati_album, init_control, end_control, init_ol, end_ol: String;
str_loop, Desc_ricerca: String;
ctr_loop: integer;
found: boolean;
i, lgth_tappo, lgth_dati_album, lgth_Pag_ricerca: integer;
//***********************fine variabile per ricerca google ********************
//------------------------------------------------------------------------------
// list of film_o_series
//------------------------------------------------------------------------------
procedure GetList;
begin
PickTreeClear; // clear list
ctr_loop := 0;
desc_ricerca := file_name;
if desc_ricerca = '' then
desc_ricerca := film_o_serieName;
// 'https://www.google.com/search?q=star+trek+discovery+site%3Awww.comingsoon.it&ie=utf-8&oe=utf-8'
// Address := Address + '&as_epq=&as_oq=&as_eq=&as_nlo=&as_nhi=&lr=&cr=&as_qdr=all';
// Address := Address + '&as_sitesearch=www.comingsoon.it&as_occt=any&safe=images&as_filetype=&as_rights=';
// Address := 'https://www.google.com/search?q=' + film_o_serieName + ' trama+site%3Awww.comingsoon.it&ie=utf-8&oe=utf-8'; //fs2019-06-12
Address := 'https://www.google.com/search?q=' + film_o_serieName + '+site%3Awww.comingsoon.it&ie=utf-8&oe=utf-8'; //fs2019-06-12
Address := UrlEncode(Address);
Desc_ricerca := 'Lista pagine trovate per "' + Desc_ricerca + '"';
PickTreeAdd(Desc_ricerca, '"');
due_giri;
Address := textbetween(Page_footer, '<a', '</a>');
Address := textbetween(Address, 'href="', '"');
if length(address) > 0 then
begin
Address := 'https://www.google.com' + fulltrim(Address);
due_giri;
end;
if not found then
begin
LogMessage('No album found for ' + Desc_ricerca);
exit;
end;
if PickTreeExec(Address) then
begin
// AnalyzeMoviePage(Address); // Album page
AnalyzeMoviePage; // Album page
end
else
LogMessage('No serie/film selected');
// ---------------------------------------
end;
procedure due_giri;
begin
Page := GetPage(Address);
Page := UTF8decode(Page); //2019.01.28 FS accenti
Save_address := Address;
SetField(fieldURL, Address);
HTMLdecode(Page);
if debug_search then
DumpPage(folder+'googleListPage.html', Page); // debug
found := True;
// Desc_ricerca := 'Lista pagine trovate per "' + Desc_ricerca + '"';
// PickTreeAdd(Desc_ricerca, '"');
if debug_search then
DumpPage(folder+'comingsoonList.html', Page); // debug
if Pos('find anything', Page) <> 0 then
begin
LogMessage('Error while reading selection page - no results found for ' + Desc_ricerca);
Found := False;
exit;
end;
init_ol := '</head>'; //2015-11-25
end_ol := '</body>';
init_control := '<a href="/url?q=https://www.comingsoon.it/'; //2016-02-10
end_control := '<a href="/url?q=https://www.comingsoon.it/'; //2016-02-10
tappo_fine_ricerca := init_control + 'Tappodifinericercadaticongoogle' + end_control; //2019-06-07
pag_ricerca := TextBetween(Page, init_ol, end_ol) + tappo_fine_ricerca + end_ol; //elenco titoli richiesti e tappo ricerca
page_footer := TextAfter(Page, '<footer>');
lgth_Pag_ricerca := length(Pag_ricerca);
if debug_search then
DumpPage(folder+'googlericerca.html', pag_ricerca); // debug
save_pag := pag_ricerca;
pag_ricerca := init_control + textAfter(pag_ricerca, init_control);
lgth_tappo := length(tappo_fine_ricerca);
dati_album := TextBetween (pag_ricerca, init_control, end_control);
dati_album := init_control + dati_album + end_control;
//dati_album contiene recursivamente i dati delle pagine referenziate da google
lgth_dati_album := length(dati_album);
ctr_loop := ctr_loop + 1;
str_loop := inttostr(ctr_loop);
if debug_search then
DumpPage(folder+'google_dati_album' + str_loop + '.html', dati_album); // debug
delete(Pag_ricerca, 1, (lgth_dati_album - length(end_control)));
lgth_Pag_ricerca := length(Pag_ricerca);
if debug_search then
DumpPage(folder+'googlericerca-1.html', Pag_ricerca);
//****************** loop ricerca indirizzi *****************************
cerca_ancora := false;
if lgth_dati_album > (length(init_control) + length(end_control)) then
cerca_ancora := true;
while cerca_ancora do //estraggo fino al tappo di fine ricerca
begin
initchar := 'https://'; //2017-01-04
endchar := '>';
// ******************** estrazione indirizzo *******************
Address := textBetween(dati_album, initchar, endchar);
if length(address) < 1 then
begin
initchar := 'http://'; //2017-01-04
Address := textBetween(dati_album, initchar, endchar);
end;
initchar := 'https://'; //2017-01-04
endchar := '">';
Address := textBetween(dati_album, initchar, endchar);
if length(address) < 1 then
begin
initchar := 'http://'; //2017-01-04
Address := textBetween(dati_album, initchar, endchar);
end;
Address := 'https://' + Address; // debug fino al 2019-06-05 OK
Address_all := Address;
Address := textBefore(Address_all, '/&sa', '');
if length(Address) = 0 then
Address := textBefore(Address_all, '/%252', '');
// *************** fine estrazione indirizzo *******************
initchar := '<div class="';
endchar := '</div>';
Title_album := textBetween(dati_album,initchar, endchar) + endchar; //descrizione del link
initchar := '">';
endchar := '</div>';
Title_album := textBetween(Title_album,initchar, endchar); //descrizione del link
HTMLRemoveTags(Title_album);
// Title_album := copy(Title_album, 1, 42);
//fs2017-11-01 test se serie o scheda (film e serie TV)
//fs2019.06.12 if (pos('/scheda', Address) > 0) or (pos('/serie', Address) > 0) then
Address := Address + '/';
if (pos('/anticipazioni/', Address) = 0)
and (pos('/foto/', Address) = 0)
and (pos('/games/', Address) = 0)
and (pos('/gossip/', Address) = 0)
and (pos('/news/', Address) = 0)
and (pos('/personaggi/', Address) = 0)
and (pos('/speciali/', Address) = 0)
and (pos('/sport/', Address) = 0)
and (pos('/streaming/', Address) = 0)
and (pos('/video/', Address) = 0)
then begin
// Address := copy(Address, 1, length(Address) - 1);
campo_pick := Title_Album + Address;
// if length(campo_pick) > 2 then //perchè ho aggiunto '/' a fine indirizzo
if length(campo_pick) > (length(Title_album) + 1) then //perchè ho aggiunto '/' a fine indirizzo
begin
PickTreeAdd(Title_Album, Address);
found := True;
end;
end;
//2016-02-10 init_control := '<li class="g">';
//2016-02-10 end_control := '<li class="g">';
// init_control := '<div class="g">'; //2019-06-07
// end_control := '<div class="g">'; //2019-06-07
dati_album := init_control + TextBetween (pag_ricerca, init_control, end_control) + end_control;
lgth_dati_album := length(dati_album);
delete(Pag_ricerca, 1, (lgth_dati_album - length(end_control)));
lgth_Pag_ricerca := length(Pag_ricerca);
ctr_loop := ctr_loop + 1;
str_loop := inttostr(ctr_loop);
if debug_search then
DumpPage(folder+'google_dati_album' + str_loop + '.html', dati_album); // debug
cerca_ancora := false;
if lgth_dati_album > (length(tappo_fine_ricerca)) then
cerca_ancora := true;
end;
//************* fine loop ricerca indirizzi *****************************
end;
//------------------------------------------------------------------------------
// ANALYZE Movie PAGE
//------------------------------------------------------------------------------
procedure AnalyzeMoviePage;
var
urlmusic, Lenght, Pays: String;
Autore, style, Commenti, str_min, campo_note: String;
minu, minuti, ore, lgth_comm, save_lgth_comm, i: integer;
j: Real;
begin
if pos('/film/', Address) > 1 //fs2017-10-29
then begin
stagione := '';
// tipo_ricerca := 'sk ep';
estrazione_film;
exit;
end
if pos('/scheda', Address) > 1
then begin
stagione := '';
tipo_ricerca := 'sk ep';
end
else if pos('/episodi', Address) > 1
then begin
tipo_ricerca := 'ep sk';
// stagione := ' (' + (textbetween(Address,'/episodi/', '/') + ')';
stagione := ' (' + (textafter(Address, '/episodi/') + ')';
end
else begin
ShowMessage('indirizzo di estrazione non appropriato. Né scheda né episodi!');
exit;
end;
save_comments := '';
commento_episodi := '';
commento_skeda := '';
if tipo_ricerca = 'sk ep' then
begin
estrazione_scheda;
save_comments := commento_skeda + CRLF + commento_episodi; //quiFS2017
SetField(fieldcomments, save_comments); // commenti + elenco episodi end
save_description := save_desc_skeda;
SetField(fieldDescription, save_description);
end
if tipo_ricerca = 'ep sk' then // inizio variazioni fs2016-11-17
begin
estrazione_episodi;
save_comments := commento_skeda; // + commento_episodi;
SetField(fieldDescription, commento_episodi);
save_description := save_desc_skeda + CRLF + commento_episodi;
SetField(fieldComments, save_desc_skeda);
end
end;
//------------------------------------------------------------------------------
// ESTRAE INFORMAZIONI DA SCHEDA + EPISODI SE E' UNA SERIE
//------------------------------------------------------------------------------
procedure estrazione_scheda;
begin
Page := GetPage(Address);
Page := UTF8decode(Page);
HTMLdecode(Page);
if debug_film_o_serie then
DumpPage(folder+'comingsoonPageDetail.html', Page); // debug_film_o_serie
// HTMLdecode(Page);
if (BatchMode = 0) and (tipo_ricerca = 'sk ep') then
SetField(fieldURL, Address);
campo_URL := getfield(fieldurl);
SetField(fieldDate, DateToStr(Date));
// Normalizza_Page(Page);
film_o_serieok := True;
if debug_film_o_serie then
DumpPage(folder+'comingsoonPageDetailHTMLdecode.html', Page); // debug_film_o_serie
Value := Page;
//*** cover locandina jpg
cover := TextBetween(value, '<link rel="image_src" href="', '">');
// setfield(fieldborrower, cover);
if tipo_ricerca = 'sk ep' then
GetPicture(cover);
//inizio estrazione dati per fielddescription (da save_desk_skeda)
// estrae-descrizione_vecchia //FS debug: procedura ante 2019.01.18
//*************************************** estrae_descrizione //FS introdotta 2019.01.18
initchar := '<!-- Trama -->';
endchar := '<!-- Curiosità -->';
label := TextBetween(Value, initchar, endchar) + endchar;
initchar := '<div>';
endchar := '</div>';
label := TextBetween(label, initchar, endchar);
initchar := '<p>';
endchar := '</p>';
label := TextBetween(label, initchar, endchar);
save_desc_skeda := label;
initchar := '<!-- Curiosità -->';
endchar := '<!-- voci full -->';
label := TextBetween(Value, initchar, endchar) + endchar;
initchar := '<h2 class="anchor">';
endchar := '<!-- voci full -->';
label := TextBetween(label, initchar, endchar) + endchar;
initchar := '<p>';
endchar := '</p>';
label := TextBetween(label, initchar, endchar);
save_desc_skeda := save_desc_skeda + CRLF + label;
HTMLRemoveTags(save_desc_skeda);
//*************************************** Fine estrae_descrizione //FS introdotta 2019.01.18
estrai_dati_generali;
// commenti_ le serie contengono anche l'elenco episodi //
Value := stringReplace(Value, '>CURIOSITÀ:<', '>Curiosità:<'); //quiFS2017
initchar := '<h2 class="h2 anchor"><span id="curiosita';
endchar := '</div>';
label := initchar + TextBetween(Value, initchar, endchar) + endchar;
HTMLRemoveTags(label);
label := FormatText(label);
label := stringReplace(label, (CRLF + ' '), CRLF);
commento_skeda := label;
// save_comments := label;
if tipo_ricerca = 'sk ep' then
begin
// per le serie, aggiungo l'elenco episodi
initchar := '<nav class="col-xs-12 tab-menu tab-12 serietv">';
endchar := '</nav>';
label := Textbetween(Value, initchar, endchar);
initchar := '<li class="item1"><a href="';
endchar := '">';
label := Textbetween(label, initchar, endchar);
if length(label) > 0 then
begin
label := 'https://www.comingsoon.it' + label;
Address := label;
estrazione_episodi(Address);
save_comments := commento_skeda + CRLF + commento_episodi;
// SetField(fieldcomments, save_comments); // commenti + elenco episodi
end;
end
end;
//--------------------------------------------------------------------
// ESTRAE Attori DA SCHEDA Film (presente solamente in quella pagina)
//--------------------------------------------------------------------
Procedure Estrai_attori;
begin
initchar := '<b>Attori:</b>';
endchar := '</div>';
label := TextBetween(Value, initchar, endchar); //fs fin qui i dati ci sono
initchar := '<span>';
endchar := '</span>';
label := TextBetween(label, initchar, endchar); //fs fin qui i dati ci sono
HTMLRemoveTags(label);
// label := stringReplace(label, 'ATTORI:', '');
if label = '' then
nuovo_loop_attori;
SetField(fieldactors, label);
end;
Procedure nuovo_loop_attori;
begin
initchar := '<!-- SLIDER HOME 7-10 -->';
endchar := '<!-- /FINE SLIDER HOME 7-10 -->';
label := initchar + TextBetween(Value, initchar, endchar) + endchar; //fs fin qui i dati ci sono
if debug_film_o_serie then
DumpPage(folder+'comingsoon_attori.html', label); // debug_film_o_serie
end;
//-----------------------------------
// ESTRAE INFORMAZIONI DA SCHEDA Film
//-----------------------------------
procedure estrai_dati_generali;
begin
// if titolo <> '' then
// begin
initchar := '<h1 class="titolo h1">';
endchar := '</h1>';
label := textbetween(Value, initchar, endchar);
label := label + stagione;
if length(label) > 0
then begin
label := AnsiMixedCase(AnsiLowerCase(Label), ' ');
label := stringReplace(label, '/', '');
SetField(fieldtranslatedTitle, label);
end;
// end;
label := textbetween(Value, '<div class="sottotitolo h3">( ', ' )');
label := AnsiMixedCase(AnsiLowerCase(Label), ' ');
if pos('/serietv', campo_url) > 0 then
begin
if pos('/episodi', campo_url) = 0 then
label := label + ' (Serie TV)';
end
SetField(fieldoriginalTitle, label);
initchar := '<b>Genere:</b>';
endchar := '</div>';
label := TextBetween(value, initchar, endchar);
HTMLRemoveTags(label);
label := FormatText(label);
// label := stringReplace(label, CRLF, '');
// label := fulltrim(label);
SetField(fieldcategory, label);
initchar := '<b>Regia:</b>';
endchar := '</div>';
label := TextBetween(value, initchar, endchar);
HTMLRemoveTags(label);
label := FormatText(label);
SetField(fieldDirector, label);
Estrai_attori;
initchar := '<b>Anno:</b>';
endchar := '</div>';
label := TextBetween(Value, initchar, endchar);
HTMLRemoveTags(label);
label := FormatText(label);
// label := stringReplace(label, CRLF, '');
SetField(fieldyear, label);
initchar := '<b>Paese:</b>';
endchar := '</div>';
label := TextBetween(Value, initchar, endchar);
HTMLRemoveTags(label);
label := FormatText(label);
SetField(fieldcountry, label);
initchar := '<b>Produzione:</b>';
endchar := '</div>';
label := TextBetween(Value, initchar, endchar);
HTMLRemoveTags(label);
label := FormatText(label);
SetField(fieldproducer, label);
initchar := '<b>Durata:</b>';
endchar := 'min</span></div>';
label := TextBetween(Value, initchar, endchar);
HTMLRemoveTags(label);
label := FormatText(label);
SetField(fieldlength, label);
initchar := 'Musiche:';
endchar := '</div>';
label := TextBetween(Value, initchar, endchar);
HTMLRemoveTags(label);
label := FormatText(label);
label := stringReplace(label, CRLF, '');
SetField(fieldcomposer, label);
initchar := '<li><span>Sceneggiatura:</span>: '; //per i film
endchar := '</div>';
label := TextBetween(Value, initchar, endchar);
HTMLRemoveTags(label);
label := FormatText(label);
label := stringReplace(label, CRLF, '');
SetField(fieldwriter, label);
initchar := '<b>Ideatore:</b>'; //per le serie
endchar := '</div>';
label := TextBetween(Value, initchar, endchar);
HTMLRemoveTags(label);
label := FormatText(label);
SetField(fieldwriter, label);
end;
//-----------------------------------
// ESTRAE INFORMAZIONI DA SCHEDA Film
//-----------------------------------
procedure estrazione_film;
begin
Page := GetPage(Address);
//****************************************
PosBar := AnsiLastPosEx('/scheda', Address, true, true);
if PosBar = 0 then
begin
showmessage('Questa non è la scheda di un film! Riprova.');
exit;
end
//****************************************
Page := UTF8decode(Page);
if debug_film_o_serie then
DumpPage(folder+'comingsoonFilm.html', Page); // debug_film_o_serie
HTMLdecode(Page);
if (BatchMode = 0) then
SetField(fieldURL, Address);
campo_URL := getfield(fieldurl);
SetField(fieldDate, DateToStr(Date));
// Normalizza_Page(Page); //fs2017-10-31 appesantisce l'esecuzione!
film_o_serieok := True;
if debug_film_o_serie then
DumpPage(folder+'comingsoonPageDetailHTMLdecode.html', Page); // debug_film_o_serie
Value := Page;
//*** cover locandina jpg
cover := TextBetween(value, '<link rel="image_src" href="', '">');
if pos('def_ico.gif', cover) = 0 then
GetPicture(cover);
estrai_dati_generali;
// descrizione fielddescription
initchar := '<!-- Trama -->';
endchar := '</div>';
label := textbetween(Value, initchar, endchar) + endchar;
label := textbetween(label, '<div>', '</div>');
HTMLRemoveTags(label);
label := FormatText(label);
label := stringReplace(label, (CRLF + ' '), CRLF);
SetField(fielddescription, label);
// commento fieldcomments
initchar := '<!-- Critica -->';
endchar := '</div>';
label := textbetween(Value, initchar, endchar) + endchar; //fs2017-10-29
label := textbetween(label, '</h2>', '</div>'); //fs2017-10-29
HTMLRemoveTags(label);
label := FormatText(label);
SetField(fieldcomments, label);
end;
//------------------------------------------------------------------------------
// ESTRAE INFORMAZIONI DA EPISODI DI UNA SERIE + SCHEDA DELLA SERIE
//------------------------------------------------------------------------------
Procedure estrazione_episodi;
Begin
Page := GetPage(Address);
Page := UTF8decode(Page);
if debug_film_o_serie then
DumpPage(folder+'comingsoonepisodes.html', Page); // debug_film_o_serie
HTMLdecode(Page);
//*** cover locandina jpg
cover := TextBetween(Page, '<link rel="image_src" href="', '">');
if tipo_ricerca = 'ep sk' then
GetPicture(cover);
initchar := '<title>';
endchar := '</title>';
value := TextBetween(Page, initchar, endchar);
label := TextBefore(value, ' Episodi', '');
SetField(fieldOriginalTitle, label);
value := stringReplace(value, ' Episodi ', ' (');
value := Value + ')';
SetField(fieldTranslatedTitle, value); //fs2019.10.14 fin qui tutto bene
if (BatchMode = 0) and (tipo_ricerca = 'ep sk') then
SetField(fieldURL, Address);
campo_URL := getfield(fieldurl);
initchar := '<h2 class="h2">Lista episodi';
endchar := '<!-- /LISTA EPISODI SERIE TV -->';
Value := initchar + TextBetween(Page, initchar, endchar) + endchar;
if debug_film_o_serie then
DumpPage(folder+'comingsoonepisodesExtr_original.html', Value); // debug_film_o_serie
HTMLRemoveTags(Value);
//fs2019-10-14 Value := stringReplace(Value, ' min', (' min' + CRLF) ); //fs2019-10-14
if debug_film_o_serie then
DumpPage(folder+'comingsoonepisodesExtr.html', Value); // debug_film_o_serie
value := FormatText(value);
if debug_film_o_serie then
DumpPage(folder+'comingsoonepisodesExtrFormat.html', Value); // debug_film_o_serie
Value := StringReplace(Value, (' ' + CRLF), ' ');
Value := StringReplace(Value, (' '), CRLF);
Value := StringReplace(Value, (CRLF + CRLF + CRLF), CRLF);
Value := StringReplace(Value, (CRLF + CRLF + CRLF), CRLF);
Value := StringReplace(Value, (CRLF + CRLF), CRLF);
Value := StringReplace(Value, (CRLF +' '), CRLF);
Value := StringReplace(Value, (CRLF +'Regia:'), ' Regia:');
Value := StringReplace(Value, (CRLF +'Sceneggiatura:'), ' Sceneggiatura:');
Value := StringReplace(Value, (CRLF +'Durata:'), ' Durata:');
Value := Value + CRLF;
//************** elimina durata episodi *************
initchar := ' Durata:';
endchar := CRLF;
durata:= initchar + TextBetween(Value, initchar, endchar) + endchar;
while length(durata) > (length(initchar) + length(endchar)) do
begin
durata:= initchar + TextBetween(Value, initchar, endchar) + endchar;
Value := stringReplace(Value, durata, CRLF); // elimino durata dei singoli episodi
end;
//********* fine elimina durata episodi *************
commento_episodi := Value; //fs2016-11-17
//fs 2016-06-02 -------------- aggiungo commenti per la serie ----------------------------------
// commenti_ le serie contengono anche l'elenco episodi //
Page := stringReplace(Page, '<BLOCKQUOTE', '<blockquote');
initchar := '<blockquote>';
endchar := '</blockquote>';
label := TextBetween(Page, initchar, endchar);
label := stringReplace(label, '>CURIOSITÀ<', '>Curiosità<');
initchar := '<div class="h3">Curiosità</div>';
// endchar := '</div>';
label := TextAfter(label, initchar);
HTMLRemoveTags(label);
label := FormatText(label);
label := stringReplace(label, CRLF, '');
commento_episodi := commento_episodi + CRLF + label;
// save_comments := label;
//fine fs 2016-06-02 ------------------------------------------------
if tipo_ricerca = 'ep sk' then
begin
// per le serie, aggiungo l'elenco episodi
initchar := '<nav class="link-bar serie-tv">';
endchar := '</nav>';
label := Textbetween(Page, initchar, endchar);
initchar := '<li';
endchar := '">';
label := Textbetween(label, initchar, endchar);
label := Textafter(label, 'href="'); //fs 2019-10-14
if length(label) > 0 then
begin
label := 'https://www.comingsoon.it' + label;
Address := label;
estrazione_scheda;
end;
end
end;
// ********************* fine estrazione episodi *****************************************
Procedure Normalizza_page(Pagina: string); // elimina i crlf, trasforma delimiters maiuscoli in minuscoli
begin
pagina := RegExprSetReplace('<([^>]+)>', pagina, '<\L\1>', true);
CharAbNormal := crlf;
CharNormal := ' ';
pagina := StringReplace(pagina, CharAbNormal, CharNormal);
CharAbNormal := '<B';
CharNormal := '<b';
pagina := StringReplace(pagina, CharAbNormal, CharNormal);
CharAbNormal := '</B';
CharNormal := '</b';
pagina := StringReplace(Value, CharAbNormal, CharNormal);
CharAbNormal := '<FONT';
CharNormal := '<font';
pagina := StringReplace(pagina, CharAbNormal, CharNormal);
CharAbNormal := '</FONT';
CharNormal := '</font';
pagina := StringReplace(pagina, CharAbNormal, CharNormal);
CharAbNormal := '<TR';
CharNormal := '<tr';
pagina := StringReplace(pagina, CharAbNormal, CharNormal);
CharAbNormal := '</TR';
CharNormal := '</tr';
pagina := StringReplace(pagina, CharAbNormal, CharNormal);
CharAbNormal := '<TD';
CharNormal := '<td';
pagina := StringReplace(pagina, CharAbNormal, CharNormal);
CharAbNormal := '</TD';
CharNormal := '</td';
pagina := StringReplace(pagina, CharAbNormal, CharNormal);
CharAbNormal := '<DIV';
CharNormal := '<div';
pagina := StringReplace(pagina, CharAbNormal, CharNormal);
CharAbNormal := '</DIV';
CharNormal := '</div';
pagina := StringReplace(pagina, CharAbNormal, CharNormal);
CharAbNormal := '<Ol';
CharNormal := '<ol';
pagina := StringReplace(pagina, CharAbNormal, CharNormal);
CharAbNormal := '</Ol';
CharNormal := '</ol';
pagina := StringReplace(pagina, CharAbNormal, CharNormal);
end;
//------------------------------------------------------------------------------
// set show warning (normal mode) or add to log (batch mode)
//------------------------------------------------------------------------------
procedure LogMessage(m: string);
begin
if BatchMode > 0 then
AddToLog('item '+GetField(fieldNumber)+': '+m)
else
ShowWarning(m);
end;
//------------------------------------------------------------------------------
// add a message in the batch log and save to disk
// (because I don't know when it's finished...)
//------------------------------------------------------------------------------
procedure AddToLog(m: string);
begin
//fs2016-12-31 batchlog.Add(m);
//fs2016-12-31 batchlog.SaveToFile(batchlogfic);
end;
//------------------------------------------------------------------------------
// process batch mode
//------------------------------------------------------------------------------
procedure comingsoonBatch;
begin
film_o_serieName := GetField(fieldUrl);
address := film_o_serieName;
if address = '' then
begin
ShowMessage('Lo script funziona solamente fornendo un campo indirizzo (URL) corretto!');
exit;
end;
if (film_o_serieName <> '') and (Pos(UrlBase, film_o_serieName) > 0) then
AnalyzeMoviePage
else
LogMessage('ignored url="'+film_o_serieName+'"');
end;
//------------------------------------------------------------------------------
// process normal mode
//------------------------------------------------------------------------------
procedure comingsoonNorm;
begin
film_o_serieok := False;
file_name:= getField(fieldfilepath);
if (file_name <> '') and (pos('\', file_name) = 0) then
film_o_serieName := file_name
else
if (GetField(fieldTranslatedTitle) <> '') then //mrobama
film_o_serieName := GetField(fieldTranslatedTitle) // get film_o_serie name
else //mrobama
film_o_serieName := GetField(fieldOriginalTitle); //mrobama
// get film_o_serie name//fs20160205 ArtistName := getField(fieldOriginalTitle); // get artist
repeat
if not Input('comingsoon = ' + ArtistName + ' - ' + film_o_serieName, 'Scrivi il nome del film o della serie:'
+ crlf, film_o_serieName) or (film_o_serieName = '') then exit;
formato := getfield(FieldOriginalTitle);
if pos(formato, 'serie') > 0 then
formato:= 'serie';
GetList;
until film_o_serieok;
end;
Procedure estrae_descrizione_vecchia;
begin
initchar := '<div class="contenuto-scheda-destra col-xs-8">';
endchar := '<div class="box-descrizione">';
label := TextBetween(Value, initchar, endchar) + endchar;
initchar := '<!-- Paragrafo -->';
// label := TextBetween(label, initchar, endchar); // era per solo serie
label := TextAfter(label, initchar); //sia serie che film
initchar := '<p>';
endchar := '</p>';
label := TextBetween(label, initchar, endchar);
label := stringReplace(label, '<strong>', ' $%&$%&$%&');
HTMLRemoveTags(label);
label := FormatText(label);
label := stringReplace(label, CRLF, '');
label := stringReplace(label, ' $%&$%&$%&', CRLF); //se presenti descrizioni di serie multiple
label := stringReplace(label, '$%&$%&$%&', ''); //eventuale prima riga della descrizione
save_desc_skeda := label;
end;
//------------------------------------------------------------------------------
// start here
//------------------------------------------------------------------------------
begin
if not CheckVersion(4,2,2) then
begin
ShowMessage('This script requires a newer version of Ant Movie Catalog (at least the version 4.2.1)');
exit;
end;
// get user's parms (used more than once)
BatchMode := GetOption('Mode');
// *********************************************************************
if BatchMode = 1 then
comingsoonBatch;
if BatchMode = 0 then
comingsoonNorm;
end.