Code: Select all
(***************************************************
Ant Movie Catalog importation script
www.antp.be/software/moviecatalog/
[Infos]
Authors=Fulvio53s03
Title=COMICSBOX
Description=estrae fumetti
Site=
Language=IT
Version=1.2
Requires=4.2.1
Comments=puo' essere usato per estrarre direttamente da Comicsbox.
License=* The source code of the script can be used in |* another program only if full credits to Italian_AMC*
GetInfo=1
RequiresMovies=1
[Options]
[Parameters]
***************************************************)
program COMICSBOX;
//[Options]
//Modo di utilizzo=0|1|0=elenco fumetti già selezionato|1=creazione nuovo elenco fumetti
uses
ItalianSharedPas; // Script needs external unit StringUtils1.pas in scripts folder !
const
UrlSite = 'https://www.comicsbox.it/';
debug_search = false; // debug mode on/off su ricerca
folder = 'f:\prova\'; // directory where to save files
apice = #39;
CRLF1 = 'xxx yyy zzz';
parentesi_chiusa = ')';
var
ComicURL, MediaType: string; // Define some script variables
ante_desc, post_desc, ante_Comm, post_Comm: string;
start_number, end_number, ctr_loop: integer;
ExecutionMode: integer;
char_start_number, char_end_number: string;
num_albo, old_num: String;
old_serie_comicsBox, serie_comicsBox: string;
numero: integer;
chars_to_delete, tappo_fine_ricerca: string;
Address, Page, Pagestr, save_page, pag_ricerca, value : string;
cosa_estrarre, serie, low_serie: string;
save_attori, post_attori, save_autori, sinossi, save_sinossi: string;
InitChar, EndChar, CharAbNormal, CharNormal : String;
posizione, posizione_sinossi, lunghezza: integer;
charCut, StartDelimiter, endDelimiter, startdelete, enddelete : string;
LgthPage, length_all_episodi, pos_CRLF: integer;
Attori: string;
StartPos, EndPos: integer;
distanzia_episodi, pulisci_episodi : string;
numero_episodi, length_value_puliti: integer;
film_o_serieok: boolean;
file_name, film_o_serieName: string;
Procedure NormalizePage;
begin
CharAbNormal := 'Soggetto e Sceneggiatura:';
CharNormal := 'Soggetto e sceneggiatura:';
Pagestr := StringReplace(Pagestr, CharAbNormal, CharNormal);
CharAbNormal := '<B';
CharNormal := '<b';
Pagestr := StringReplace(Pagestr, CharAbNormal, CharNormal);
CharAbNormal := '</B';
CharNormal := '</b';
Pagestr := StringReplace(Pagestr, CharAbNormal, CharNormal);
CharAbNormal := '<DIV ';
CharNormal := '<div ';
Pagestr := StringReplace(Pagestr, CharAbNormal, CharNormal);
CharAbNormal := '</DIV>';
CharNormal := '</div>';
Pagestr := StringReplace(Pagestr, CharAbNormal, CharNormal);
end;
// ***** Analyze Item's Page *****
procedure ricerca_dati(URL: String);
begin
// AddNewMovieToQueue;
film_o_serieok := True;
Page := GetPage(URL); // Fetch source code from website and store inside "Page"
if debug_search then
DumpPage(folder+'1 ComicsboxOriginal_Page.text', Page);
// HTMLdecode(Page); //spostato il 2023-05-22
Page := UTF16ToCP1252(Page);
end;
// ***** analizza descrizione di una serie *****
procedure AnalyzePage_Serie(URL: String);
var
sorgente, copertina, cover_ko: string;
all_sinossi, cancel_str: string;
pict_dim: Double;
begin
// ShowMessage('info sulla serie ' + Url);
startdelimiter := '<div class="dettagli_testo">'; //2023-09-04
enddelimiter := '</div';
HTMLdecode(Page);
pagestr := page;
save_page := page;
sinossi := TextBetween(Page, startdelimiter, enddelimiter); //2023-09-04
ante_desc := sinossi; //2023-09-20
ADDCRLF_description; //2023-09-20
sinossi := post_desc; //2023-09-20
setfield(fieldDescription, sinossi);
low_serie := Textbetween(Page, '<span class="titleserie">', '</span>');
setfield(FieldOriginalTitle, low_serie);
sorgente := Textbetween(Page, '<span class="titlecasa">', '</span>');
if pos(' - Sergio Bonelli Editore', sorgente) > 1 then
begin
stringreplace (sorgente, ' - Sergio Bonelli Editore','');
stringreplace (sorgente, ('Sergio Bonelli Editore - ' + sorgente);
end;
setfield(FieldSource, sorgente);
// estrazione copertina <div id="container_cover_serie"><img src="./Julia_files/JULIA_030.jpg" border="0"></div>
startDelimiter := '<div id="container_cover_serie">';
endDelimiter := '</div>';
copertina := textbetween(Pagestr, startdelimiter, enddelimiter);
copertina := textbetween(copertina, '<img src="/', '" border="0"/>');
copertina := urlsite + copertina;
copertina := TextBefore(copertina, '_', '') + '_001.jpg';
GetPicture(copertina);
Pict_dim := GetPictureSize;
if Pict_dim < 1 then
begin
cover_ko := 'cerca numero 0';
copertina := stringreplace(copertina, '001', '000');
GetPicture(copertina);
end;
// estrazione commenti
startdelimiter := '<div id="info_dettagli1">';
enddelimiter := '<div class="dettagli_testo">';
value := startdelimiter + textbetween(Pagestr, startdelimiter, enddelimiter);
startdelimiter := '<span class="dettagli_corsivo">';
enddelimiter := '<br>';
value := stringreplace(value, '<br />', enddelimiter);
value := stringreplace(value, '<br/>', enddelimiter);
all_sinossi := '';
sinossi := textbetween(value, startdelimiter, enddelimiter);
while sinossi <> '' do
begin
cancel_str := startdelimiter + sinossi + enddelimiter;
if all_sinossi = ''
then all_sinossi := all_sinossi + sinossi
else all_sinossi := all_sinossi + CRLF + sinossi;
value:= stringreplace(value, cancel_str, '');
sinossi := textBetween(value, startdelimiter, enddelimiter);
end; //while
HTMLRemoveTags(all_sinossi);
ante_comm := all_sinossi; //2023-09-20
ADDCRLF_comments; //2023-09-20
all_sinossi := post_comm; //2023-09-20
setfield(fieldcomments, all_sinossi);
end;
// ***** analizza albo di una sere *****
procedure AnalyzePage_Albo(URL: String);
var
Titolo, Descr_Img: string;
Autori, attori_puliti, sinossi_puliti, copertina, desc_edizione, sorgente: string;
editore, periodo: string;
begin
startdelimiter := '<div class="linea_alboita"></div>'; //2023-05-22
enddelimiter := '<div style="width:100%" class="alboita_right">'; //2023-05-22
charcut := TextBetween(Page, startdelimiter, enddelimiter); //2023-05-22
charcut := startdelimiter + charcut + enddelimiter; //2023-05-22
page := StringReplace(page, charcut, (' ' + CRLF + 'zzzmxptlkzzz'));
//
startdelimiter := '<div class="linea_alboita"></div>'; //2023-05-25
enddelimiter := '<div class="alboita_left">'; //2023-05-25
charcut := TextBetween(Page, startdelimiter, enddelimiter); //2023-05-25
charcut := startdelimiter + charcut + enddelimiter; //2023-05-25
// page := StringReplace(page, charcut, (' ' + CRLF + 'zzzmxptlkzzz')); //2023-09-03
page := StringReplace(page, charcut, (' ' + CRLF)); //2023-09-03
HTMLdecode(Page);
pagestr := page;
save_page := page;
if pos('<meta name="title" content="Errore 404 - Pagina non trovata"', pagestr) > 1 then
begin
ShowMessage('fumetto non esistente - verificare serie e numero ' + CRLF + film_o_seriename + CRLF + URL);
exit;
end
NormalizePage;
if debug_search then
DumpPage(folder+'2 ComicsboxPageDetail.text', Pagestr); // debug_film_o_serie// Data di aggiornamento
SetField(fieldDate, DateToStr(Date));
SetField(fieldURL, URL);
// startDelimiter := '<span class="titleserie">';
// endDelimiter := '</span>'; //titolo originale
startDelimiter := 'title="Lista completa di ';
endDelimiter := '">'; //titolo originale
value := TextBetween(Pagestr, startdelimiter, enddelimiter);
setfield(fieldoriginalTitle, value);
//<span class="titleserie">Romanzi a fumetti Bonelli</span><br>
// <span class="titlecasa">Sergio Bonelli Editore</span>
startDelimiter := '<div style="width:100%" class="alboita_right">';
endDelimiter := '<div style="width:100%" class="alboita_right">'; //questo dice quanti racconti/episodi ci sono nel volume
value := TextBetween(Pagestr, startdelimiter, enddelimiter);
value := removespaces(value,True); // cancella spazi tra ><
value := StringReplace(value, '<span class="nome">', (CRLF + '<span class="nome">'));
HTMLDecode(value); // Clean HTML codes (if some exist)
// ********************* inizio estrazione dati **************************
startDelimiter := '<div class="albinpd">';
endDelimiter := '</div>';
sorgente := Textbetween(pagestr, startDelimiter, endDelimiter);
startDelimiter := '<span id="editore_issue">';
endDelimiter := '</span>';
editore := Textbetween(sorgente, startDelimiter, endDelimiter);
startDelimiter := '<span style="border:0" id="data_issue">';
endDelimiter := '</span>';
periodo := Textbetween(sorgente, startDelimiter, endDelimiter);
sorgente := editore + ' - ' + periodo;
// sorgente := periodo + ' - ' + editore;
// HTMLRemoveTags(sorgente);
// HTMLDecode(sorgente);
sorgente := fulltrim(sorgente);
setfield(fieldsource, sorgente);
startDelimiter := '<span id="subtitolo_issue">';
endDelimiter := '</span>';
titolo := Textbetween(pagestr, startDelimiter, endDelimiter);
titolo := stringreplace(titolo, ' |', '');
chars_to_delete := startDelimiter + titolo + endDelimiter;
HTMLRemoveTags(Titolo);
value := Titolo;
Titolo := fulltrim(value);
setfield(fieldtranslatedtitle, Titolo);
value := stringreplace(value, chars_to_delete, '');
//estrazione autori (per campo fieldactors)
startDelimiter := '<div id="maintext_albo">'; //autori
endDelimiter := '<div class="pages">';
attori := startDelimiter + Textbetween(pagestr, startDelimiter, endDelimiter);
if attori = startdelimiter then
attori := '';
attori_puliti := stringReplace(attori, CRLF, '');
lunghezza := length(attori_puliti);
// *********************************** Inizio attori con sinossi *********************
if lunghezza <> 0 then //2023-06-05
begin; //2023-06-05
startDelimiter := '<a href="'; //autori
endDelimiter := '</div>';
attori := startDelimiter + Textbetween(attori, startDelimiter, endDelimiter) + enddelimiter;
attori := stringreplace(attori, ' <br />', CRLF);
HTMLRemoveTags(attori);
attori := fulltrim(attori);
startDelimiter := '<div id="col-left-albo">';
endDelimiter := '<div id="altre_versioni">';
value := startDelimiter + textbetween(Pagestr, startdelimiter, enddelimiter);
startDelimiter := '<div id="cover_autore">';
endDelimiter := '</div>';
autori := textBetween(value, startdelimiter, enddelimiter);
save_autori := autori;
HTMLRemoveTags(save_autori);
attori := attori + CRLF + save_autori;
startDelimiter := '<div id="note_ita" class="nonemobile">'; //altre edizioni e descrizione
endDelimiter := '<div id="altre_versioni">';
desc_edizione := textBetween(pagestr, startdelimiter, enddelimiter);
HTMLRemoveTags(desc_edizione);
attori := attori + CRLF + desc_edizione;
value := attori;
attori := value;
end;
// ****************************************** fine attori con sinossi ******************
// ******************************************* inizio attori senza sinossi ********* startDelimiter := '<div id="maintext_albo">'; //autori
if lunghezza = 0 then
begin
endDelimiter := '<!-- Commenti -->';
attori := startDelimiter + Textbetween(pagestr, startDelimiter, endDelimiter);
attori_puliti := stringReplace(attori, CRLF, '');
lunghezza := length(attori_puliti);
startDelimiter := '<a href="'; //autori
endDelimiter := '</div>';
attori := startDelimiter + Textbetween(attori, startDelimiter, endDelimiter) + enddelimiter;
attori := stringreplace(attori, ' <br />', CRLF);
HTMLRemoveTags(attori);
attori := fulltrim(attori);
startDelimiter := '<div id="col-left-albo">';
endDelimiter := '<div id="altre_versioni">';
value := startDelimiter + textbetween(Pagestr, startdelimiter, enddelimiter);
startDelimiter := '<div id="cover_autore">';
endDelimiter := '</div>';
autori := textBetween(value, startdelimiter, enddelimiter);
save_autori := autori;
HTMLRemoveTags(save_autori);
attori := attori + CRLF + save_autori;
startDelimiter := '<div id="note_ita" class="nonemobile">'; //altre edizioni e descrizione
endDelimiter := '<div id="altre_versioni">';
desc_edizione := textBetween(pagestr, startdelimiter, enddelimiter);
HTMLRemoveTags(desc_edizione);
attori := attori + CRLF + desc_edizione;
value := attori;
attori := value;
end;
// ******************************************* inizio attori senza sinossi ********* //2023-06-05
if debug_search then
DumpPage(folder+'ComicsboxAttori.html', attori);
attori := fulltrim(attori) + ' ';
pos_CRLF := pos(CRLF, attori);
if pos_CRLF = 0 then //2023-06-04
attori := copy(attori, 1, Length(attori) - 1);
value := attori;
pulisci_CRLF(value); //2023-06-05 pulisce CRLF finali
attori := value; //2023-06-05 pulisce CRLF finali
attori := fulltrim(attori);
save_attori := attori;
Addbar;
setfield(fieldactors, attori);
// fine estrazione autori (per campo fieldactors) //2023-06-04
// estrazione copertina
startDelimiter := 'container_cover_cb';
endDelimiter := '</a>';
copertina := textbetween(Pagestr, startdelimiter, enddelimiter);
startDelimiter := '<img src="/';
endDelimiter := '"';
copertina := textbetween(copertina, startdelimiter, enddelimiter);
copertina := urlsite + copertina;
GetPicture(copertina);
//******************************** inizio estrazione filddesc(trama) da pagestr ******************
startDelimiter := '<div id="col-left-albo">';
endDelimiter := '<div id="altre_versioni">'; //2023-06-01 endDelimiter := '</div>';
sinossi := textbetween(Pagestr, startdelimiter, enddelimiter) + endDelimiter; //2023-06-01
sinossi := fulltrim(sinossi); //2023-06-01
if debug_search then
DumpPage(folder+'ComicsboxSinossi.html', sinossi);
if sinossi = '' then
begin
startDelimiter := '<div id ="funzioni_albo">';
endDelimiter := '<div id="altre_versioni">'; //2023-06-01 endDelimiter := '<!-- Commenti -->';
sinossi := textbetween(Pagestr, startdelimiter, enddelimiter) + endDelimiter;
startDelimiter := '<div id="maintext_albo">';
endDelimiter := '<!-- Commenti -->';
sinossi := textbetween(sinossi, startdelimiter, enddelimiter);
sinossi := fulltrim(sinossi);
end
if debug_search then
DumpPage(folder+'2b ComicsboxSinossi.html', sinossi); // debug_film_o_serie// Data di aggiornamento
//-------------------------
startdelimiter := '<script';
enddelimiter := '</script>';
chars_to_delete := startdelimiter + textbetween(sinossi, startdelimiter, enddelimiter) + enddelimiter; //2023-06-02
sinossi := StringReplace(sinossi, chars_to_delete, ''); //2023-06-02
startdelimiter := '</span>';
enddelimiter := 'class="nonemobile">';
chars_to_delete := startdelimiter + textbetween(sinossi, startdelimiter, enddelimiter) + enddelimiter; //2023-06-02
sinossi := StringReplace(sinossi, chars_to_delete, ''); //2023-06-02
//-------------------------
sinossi := StringReplace(sinossi, '<p>', ('<p>' + CRLF));
// HTMLRemoveTags(sinossi); //2023-06-02
sinossi := stringReplace(sinossi, '<em>Ristampa:</em>', (CRLF + '<em>Ristampa:</em>')); //2023-05-25
startdelimiter := '<div class="addthis_inline_share_toolbox">'; //2023-06-01
enddelimiter := '<div id="descrizione_ita" class="nonemobile">'; //2023-06-01
chars_to_delete := startdelimiter + textbetween(sinossi, startdelimiter, enddelimiter) + enddelimiter; //2023-06-01
sinossi := StringReplace(sinossi, chars_to_delete, '');; //2023-06-01
if debug_search then
DumpPage(folder+'2b ComicsboxPageDetail.text', value); // debug_film_o_serie// Data di aggiornamento
startDelimiter := '<span style'; //2023-06-01
endDelimiter := '">'; //2023-06-01
chars_to_delete := startdelimiter + textbetween(sinossi, startdelimiter, enddelimiter) + enddelimiter; //2023-06-01
sinossi := StringReplace(sinossi, chars_to_delete, ''); //2023-06-01
HTMLRemoveTags(sinossi);
save_sinossi:= sinossi; //20223-05-25 sinossi
// startDelimiter := '<span style';
// endDelimiter := '">';
// chars_to_delete := startdelimiter + textbetween(sinossi, startdelimiter, enddelimiter) + enddelimiter;
// sinossi := StringReplace(sinossi, chars_to_delete, '');
sinossi := stringreplace(sinossi, (CRLF + ' '), CRLF);
HTMLdecode(sinossi);
sinossi := StringReplace(sinossi, '<br />', CRLF);
sinossi := StringReplace(sinossi, '<br>', CRLF);
sinossi := StringReplace(sinossi, '<div>', '');
sinossi := StringReplace(sinossi, '</span>', '');
sinossi := StringReplace(sinossi, '</p>', '');
sinossi := StringReplace(sinossi, '<p class="MsoNormal">', '');
sinossi := StringReplace(sinossi, '<strong>', '');
sinossi := StringReplace(sinossi, '</strong>', '');
sinossi := stringreplace(sinossi, 'zzzmxptlkzzz', ''); //2023-06-01
sinossi := stringreplace(sinossi, 'vinsanto', ' - '); //2023-06-05
save_sinossi := sinossi;
value := sinossi;
pulisci_CRLF(value); //2023-06-04 pulisce CRLF finali
sinossi := value;
post_attori := stringReplace(save_attori, sinossi, ''); //2023-06-09 pulisce sinossi
if post_attori <> save_attori then //2023-06-09 pulisce sinossi
sinossi := ''; //2023-06-09 pulisce sinossi
ante_comm := sinossi; //2023-09-20
ADDCRLF_comments; //2023-09-20
sinossi := post_comm; //2023-09-20
setfield(fieldcomments, sinossi);
//********************************** fine estrazione filddesc(trama) da pagestr ******************
// ********************* inizio creazione commenti estesi ***********************
estrai_commenti(value);
if debug_search then
DumpPage(folder+ '+++ fielddescription.html', value); // debug
posizione_sinossi := pos(save_sinossi, value);
// if pos(value) =
value := stringreplace(value, 'zzzmxptlkzzz', ''); //2022-05-22
value := stringreplace(value, 'vinsanto', ' - '); //2023-06-05
value := StringReplace(value, 'Prima pubblicazione', (CRLF + 'Prima pubblicazione')); //2023-06-07
value := StringReplace(value, 'Ristampa', (CRLF + 'Ristampa')); //2023-06-07
//2023-06-07 value := StringReplace(value, 'paginePrima', ('pagine' + CRLF + 'Prima')); //2023-06-07
pulisci_CRLF(value); //2023-06-04 pulisce CRLF finali
value := StringReplace(value, 'Prima pubblicazione', (CRLF + 'Prima pubblicazione'));
ante_desc := value; //2023-09-20
ADDCRLF_description; //2023-09-20
value := post_desc; //2023-09-20
setfield(fielddescription, value); //scrivi campo DESCRIZIONE
// ********************* fine creazione commenti estesi ***********************
if executionMode = 1 then
AddNewMovieToQueue;
end;
function estrai_commenti(str: string): string; //************* estrai commenti **************
var
sub_episodio, pulisci_episodio, salta_riga: string; //estrazione dato per singolo episodio contenuto
episodi: string; //campo fieldsize
episodi_completi: string; //accumulo dati per descrizione
debug_giri, lgth_value: integer;
lgth_pulisci_episodio: integer;
begin
length_all_episodi := length(Pagestr);
//2023/06/04 distanzia_episodi :=('<div style="width:100%" class="alboita_right">');
distanzia_episodi := ('<span class="titolo_storia">'); //2023/06/04 riconta storie contenute
numero_episodi := length(distanzia_episodi);
pulisci_episodi := stringreplace(Pagestr, distanzia_episodi, '');
length_value_puliti := length (pagestr) - length(pulisci_episodi);
numero_episodi := length_value_puliti div numero_episodi; //per sapere quanti episodi contenuti.
if numero_episodi = 1 then
episodi := IntToStr(numero_episodi) + ' storia'
else begin
episodi := IntToStr(numero_episodi) + ' storie'
end;
SetField(fieldSize, episodi); //numero episodi contenuti
value := '';
lgth_value := 0;
lgth_pulisci_episodio := 0;
initchar := '<div id="maintext_albo">';
endchar := '<!-- Commenti -->';
tappo_fine_ricerca := '<div class="alboita_dettagli">';
value := FullTrim(TextBetween(Pagestr, initchar, endchar)); //tutti gli episodi contenuti nell'albo
value := value + tappo_fine_ricerca;
lgth_value := length(value);
if debug_search then
DumpPage(folder+ '$$$ episodi.html', value); // debug
//tutti gli episodi + tappo fine ricerca
debug_giri := 0;
initchar := '<div class="alboita_dettagli">';
endchar := '<div class="alboita_dettagli">';
episodi_completi := '';
sub_episodio := TextBetween(value, initchar, endchar);
if debug_search then
DumpPage(folder+ '$$$ episodio 1.html', sub_episodio); // debug
pulisci_episodio := initchar + sub_episodio;
lgth_value := length(value);
value := StringReplace(value, pulisci_episodio, ''); //il primo è già estratto
lgth_value := length(value);
// if debug_search then
// DumpPage(folder+ '$$$ episodi 2 e seguito.html', value); //debug
numero_episodi := numero_episodi; //debug
// ****************** qui estrarre e cumulare i dati
// while sub_episodio <> '' do
while debug_giri <= numero_episodi do //2023-06-05
begin
debug_giri := debug_giri + 1;
// trattamento del sub episodio
// pulisci_episodio := tappo_fine_ricerca + sub_episodio;
// pulisci_episodio := sub_episodio;
lgth_pulisci_episodio := length(pulisci_episodio);
sub_episodio := fulltrim(sub_episodio);
sub_episodio := stringReplace(sub_episodio, ('<br />' + CRLF), 'vinsanto');
sub_episodio := stringReplace(sub_episodio, '<br /><span class="titolo_storia"><strong>', ' - zibibbo -');
sub_episodio := stringReplace(sub_episodio, '<br /><a href="/autore/', (CRLF + '<br /><a href="/autore/')); //2023-05-20 AUTORI
sub_episodio := stringReplace(sub_episodio, '<em>protagonisti:</em>', (CRLF + '<em>protagonisti:</em>'));
sub_episodio := stringReplace(sub_episodio, '<div class="sinossi">', (CRLF + '<div class="sinossi">'));
//2023-06-07 sub_episodio := stringReplace(sub_episodio, '<div class="pages">', ('<div class="pages">' + CRLF));
sub_episodio := stringReplace(sub_episodio, '<div class="pages">', ('<div class="pages">' + ' -- ')); //2023-06-07
sub_episodio := stringReplace(sub_episodio, (CRLF + '<div>'), '<div>');
sub_episodio := stringReplace(sub_episodio, '<em>Ristampa:</em>', (CRLF + '<em>Ristampa:</em>'));
if debug_giri > 1 then
sub_episodio := stringReplace(sub_episodio, '<br /><span class="titolo_storia">',
(CRLF + '<br /><span class="titolo_storia">')); //impone riga vuota per episodi successivi al 1
HTMLRemoveTags(sub_episodio);
// fine riformattazione **************************************
episodi_completi := episodi_completi + sub_episodio;
// proseguo la ricerca di altri sub episodi
sub_episodio := TextBetween(value, initchar, endchar) + endchar; //2023-06-05 pomeriggio
pulisci_episodio := sub_episodio;
value := StringReplace(value, pulisci_episodio, ''); //2023-05-20
lgth_value := length(value);
// if debug_search then
// DumpPage(folder+ '$$$ episodi 3 e seguito.html', sub_episodio); // debug
end;
// ****************** fine estrarre e cumulare i dati
// ********************* fine creazione commenti estesi ***********************
episodi_completi := episodi_completi + sub_episodio;
episodi_completi := stringReplace(episodi_completi, (CRLF + CRLF), CRLF);
episodi_completi := stringReplace(episodi_completi, endchar, '');
value := fulltrim(episodi_completi);
end;
procedure ADDBAR;
var
ante_autori: string;
begin
ante_autori := attori;
ante_autori := fulltrim(ante_autori);
ANTE_AUTORI := stringReplace(ante_autori, CRLF, (' /' + CRLF));
ante_autori := stringReplace(ante_autori, ') / /', ') /');
ante_autori := stringReplace(ante_autori, parentesi_chiusa, (parentesi_chiusa + ' /'));
// ante_autori := stringReplace(ante_autori, ') / /', ') /');
ante_autori := stringReplace(ante_autori, ') / /', ') /');
ante_autori := ante_autori + ' /';
ante_autori := stringReplace(ante_autori, ' / /', ' /');
ante_autori := stringReplace(ante_autori, ' / /', ' /');
// ante_autori := stringReplace(ante_autori, (' '), ' ');
if (ante_autori = (' /' + crlf))
OR (ante_autori = '/ /')
OR (ante_autori = ' /') then
ante_autori := '';
attori := ante_autori;
end;
function pulisci_CRLF(str: string):string;
begin
lunghezza := length(str);
pos_CRLF := lunghezza;
str := str + ' '; //2023-06-04 aggiungo tappo per non perdere l'ultimo carattere (https://www.comicsbox.it/albo/DYDGMAG_004)
while (pos_CRLF = lunghezza) and (lunghezza <>0) do
begin
str := copy(str, 1, Length(str) - 1);
str := fullTrim(str);
lunghezza := length(str);
pos_CRLF := pos(CRLF, str);
end
value := str;
end;
function UTF16ToCP1252(str: string):string;
begin
str := StringReplace(str, (chr(195) + chr(162) + chr(194) + chr(128) + chr(194)), (chr(226) + chr(128)));
str := StringReplace(str, (chr(226) + chr(128) + chr(128)), ' ');
str := StringReplace(str, (chr(226) + chr(128) + chr(129)), ' ');
str := StringReplace(str, (chr(226) + chr(128) + chr(130)), ' ');
str := StringReplace(str, (chr(226) + chr(128) + chr(131)), ' ');
str := StringReplace(str, (chr(226) + chr(128) + chr(132)), ' ');
str := StringReplace(str, (chr(226) + chr(128) + chr(133)), ' ');
str := StringReplace(str, (chr(226) + chr(128) + chr(134)), ' ');
str := StringReplace(str, (chr(226) + chr(128) + chr(135)), ' ');
str := StringReplace(str, (chr(226) + chr(128) + chr(136)), ' ');
str := StringReplace(str, (chr(226) + chr(128) + chr(137)), ' ');
str := StringReplace(str, (chr(226) + chr(128) + chr(138)), ' ');
str := StringReplace(str, (chr(226) + chr(128) + chr(144)), '-');
str := StringReplace(str, (chr(226) + chr(128) + chr(145)), '-');
str := StringReplace(str, (chr(226) + chr(128) + chr(146)), '-');
str := StringReplace(str, (chr(226) + chr(128) + chr(147)), '–');
str := StringReplace(str, (chr(226) + chr(128) + chr(148)), '—');
str := StringReplace(str, (chr(226) + chr(128) + chr(149)), '-');
str := StringReplace(str, (chr(226) + chr(128) + chr(150)), '|');
str := StringReplace(str, (chr(226) + chr(128) + chr(151)), '=');
str := StringReplace(str, (chr(226) + chr(128) + chr(152)), '‘');
str := StringReplace(str, (chr(226) + chr(128) + chr(153)), '’');
str := StringReplace(str, (chr(226) + chr(128) + chr(154)), '‚');
str := StringReplace(str, (chr(226) + chr(128) + chr(155)), '''');
str := StringReplace(str, (chr(226) + chr(128) + chr(156)), '“');
str := StringReplace(str, (chr(226) + chr(128) + chr(157)), '”');
str := StringReplace(str, (chr(226) + chr(128) + chr(158)), '„');
str := StringReplace(str, (chr(226) + chr(128) + chr(159)), '"');
str := StringReplace(str, (chr(226) + chr(128) + chr(160)), '†');
str := StringReplace(str, (chr(226) + chr(128) + chr(161)), '‡');
str := StringReplace(str, (chr(226) + chr(128) + chr(162)), '•');
str := StringReplace(str, (chr(226) + chr(128) + chr(163)), '>');
str := StringReplace(str, (chr(226) + chr(128) + chr(164)), '.');
str := StringReplace(str, (chr(226) + chr(128) + chr(165)), '..');
str := StringReplace(str, (chr(226) + chr(128) + chr(166)), '...');
str := StringReplace(str, (chr(226) + chr(128) + chr(167)), '·');
str := StringReplace(str, (chr(226) + chr(128) + chr(175)), ' ');
str := StringReplace(str, (chr(226) + chr(128) + chr(176)), '‰');
str := StringReplace(str, (chr(226) + chr(128) + chr(177)), '‰');
str := StringReplace(str, (chr(226) + chr(128) + chr(178)), '''');
str := StringReplace(str, (chr(226) + chr(128) + chr(179)), '''''');
str := StringReplace(str, (chr(226) + chr(128) + chr(180)), '''''''');
str := StringReplace(str, (chr(226) + chr(128) + chr(181)), '''');
str := StringReplace(str, (chr(226) + chr(128) + chr(182)), '''''');
str := StringReplace(str, (chr(226) + chr(128) + chr(183)), '''''''');
str := StringReplace(str, (chr(226) + chr(128) + chr(184)), '^');
str := StringReplace(str, (chr(226) + chr(128) + chr(185)), '‹');
str := StringReplace(str, (chr(226) + chr(128) + chr(186)), '›');
str := StringReplace(str, (chr(226) + chr(128) + chr(187)), 'x');
str := StringReplace(str, (chr(226) + chr(128) + chr(188)), '!!');
str := StringReplace(str, (chr(226) + chr(128) + chr(189)), '!?');
str := StringReplace(str, (chr(226) + chr(189)), 'fgfgfg');
str := StringReplace(str, (chr(226) + chr(128) + chr(190)), '-');
result := SharedUnknownToCP1252Decode(str);
end;
procedure prepara_ricerca;
begin
old_num := num_albo;
if ExecutionMode = 1 then //creazione di nuovi fumetti //KENPARKORO
begin
film_o_seriename := serie_comicsbox;
setfield(fieldMediaType, film_o_seriename);
end;
film_o_seriename := getfield(fieldMediaType);
setfield(fieldMediaType, AnsiUpperCase(film_o_seriename));
// if length(old_num) = 0 //2023-09-04 descrizione serie
// then film_o_seriename := film_o_seriename;
if length(old_num) = 1
then old_num := '0' + old_num;
if length(old_num) = 2
then old_num := '0' + old_num;
if length(old_num) > 0
then film_o_seriename := film_o_seriename + '_' + old_num;
setfield(fieldmedia, old_num);
low_serie := getField(fieldOriginalTitle);
low_serie := AnsiLowerCase(low_serie);
// AddNewMovieToQueue;
if low_serie = ''
then
begin
low_serie := getfield(fieldMediatype);
ricrea_titolo_originale;
end
if length(old_num) = 0
then cosa_estrarre := 'serie/'
else cosa_estrarre := 'albo/';
Address := 'https://www.comicsbox.it/' + cosa_estrarre + film_o_serieName;
end;
//**************
//------------------------------------------------------------------------------
// process batch mode da sergiobonelli.it
//------------------------------------------------------------------------------
procedure Comicsbox_Batch;
begin
file_name:= getField(fieldMediaType);
num_albo := getfield(fieldMedia);
prepara_ricerca;
ricerca_dati(Address);
if cosa_estrarre = 'albo/'
then AnalyzePage_Albo(Address)
else AnalyzePage_Serie(Address);
// ShowMessage('fumetto non esistente - serie e numero');
Address := UrlEncode(Address);
Page := GetPage(Address);
// Save_address := Address;
SetField(fieldURL, Address);
if debug_search then
DumpPage(folder+'4 Original_Page.text', Page); // debug
HTMLdecode(Page);
if debug_search then
DumpPage(folder+'5 Translated_Page.text', Page); // debug
end;
procedure ricrea_titolo_originale;
begin
low_serie := AnsiLowerCase(low_serie);
if low_serie = 'storwestce'
then setfield(fieldoriginaltitle, 'Storia del West');
if low_serie = 'texwiller'
then setfield(fieldoriginaltitle, 'Tex Willer (le origini)');
if low_serie = 'orfani6_b'
then setfield(fieldoriginaltitle, 'Orfani - Sam');
if low_serie = 'colrodeo'
then setfield(fieldoriginaltitle, 'Collana Rodeo'); //MAXIMARMY
if low_serie = 'maximarmy'
then setfield(fieldoriginaltitle, 'Martin Mystère Maxi'); //MAXIMARMY
end;
//------------------------------------------------------------------------------
// process normal mode da sergiobonelli.it
//------------------------------------------------------------------------------
procedure Comicsbox_Create;
begin
Input('serie da estrarre - vuoto per terminare', 'Media Type è la serie su ComicsBox (cancel per terminare)',
serie_comicsBox);
old_serie_comicsBox := serie_comicsBox; //KENPARKORO
input ('sequenza numeri', 'numero iniziale: ', num_albo);
start_number := StrToInt(fulltrim(num_albo), 0); //result := StrToInt(fld,0);
input ('sequenza numeri', 'numero finale : ', num_albo);
end_number := StrToInt(fulltrim(num_albo), 0);
ctr_loop := start_number;
while serie_comicsBox = old_serie_comicsBox do
begin
while ctr_loop <= end_number do
begin
prepara_ricerca;
AnalyzePage_Albo(Address);
ctr_loop := ctr_loop + 1;
end;
serie_comicsbox :='';
Input('serie da estrarre - vuoto per terminare', 'Media Type è la serie su ComicsBox (Cancel per terminare)',
serie_comicsBox);
old_serie_comicsBox := serie_comicsBox; //KENPARKORO
ctr_loop := start_number;
end;
file_name:= getField(fieldMediaType);
film_o_seriename := getfield(fieldMediaType) + '_' + getfield(fieldMedia);
repeat GetList;
until film_o_serieok;
end;
//------------------------------------------------------------------------------
procedure ADDCRLF_description;
begin
ante_Desc := stringReplace(ante_desc, ' pag. ', ' pag.');
ante_Desc := stringReplace(ante_desc, ' n. ', ' n.');
ante_Desc := stringReplace(ante_desc, '. ', ('.' + CRLF));
ante_Desc := stringReplace(ante_desc, '… ', ('…' + CRLF));
ante_Desc := stringReplace(ante_desc, '? ', ('?' + CRLF));
ante_Desc := stringReplace(ante_desc, '! ', ('!' + CRLF));
ante_Desc := stringReplace(ante_desc, (CRLF + CRLF), CRLF);
post_desc := ante_desc;
end;
procedure ADDCRLF_comments;
begin
ante_Comm := stringReplace(ante_Comm, ' pag. ', ' pag.');
ante_Comm := stringReplace(ante_Comm, ' n. ', ' n.');
ante_Comm := stringReplace(ante_Comm, '. ', ('.' + CRLF));
ante_Comm := stringReplace(ante_Comm, '… ', ('…' + CRLF));
ante_Comm := stringReplace(ante_Comm, '? ', ('?' + CRLF));
ante_Comm := stringReplace(ante_Comm, '! ', ('!' + CRLF));
ante_Comm := stringReplace(ante_Comm, (CRLF + CRLF), CRLF);
ante_Comm := stringReplace(ante_Comm, (CRLF + ' '), CRLF);
post_Comm := ante_Comm;
end;
// ***** Beginning of the script *****
begin
// AddNewMovieToQueue;
if not CheckVersion(4,2,1) then
begin
ShowMessage('This script requires a newer version of Ant Movie Catalog (at least the version 4.2.1)');
exit;
end;
// ExecutionMode := GetOption('Modo di utilizzo');
// Show_tips := GetOption('Tips');
// if ExecutionMode = 1 then
// Comicsbox_Create;
// if ExecutionMode = 0 then
Comicsbox_Batch;
end.