Lo script consente di estrarre informazioni riguardanti molti informazioni su fumetti anche internazionali.
Poichè esso estrae da una lista che deve essere già presente nel D.B. Ant Movie Catalog, per un suo corretto utilizzo si deve:
- Eseguire preventivamente una ricerca su https://www.comicsbox.it/
- individuare l'estensione URL della serie interessata. es. ZAGOR da https://www.comicsbox.it/serie/ZAGOR
- creare con excel,Libre Office, OpenOffice ecc.) una tabella .csv (1 riga per ogni fumetto da estrarre + 1 per la serie di appartenenza) in cui ogni riga è composta da 2 colonne una per la serie, l'altra per il numero
- salvare la tabella come .csv
- importare la tabella con AMC, inserendo la colonna con la serie nel campo Media Type e il numero in Media Label
Tutti i contributi migliorativi sono bene accetti!
The script allows you to extract information regarding many information on comics, including international ones.
Since it extracts from a list that must already be present in the D.B. Ant Movie Catalog, for its correct use you must:
- Carry out a search beforehand on https://www.comicsbox.it/
- locate the URL extension of the series concerned. eg. ZAGOR from https://www.comicsbox.it/serie/ZAGOR
- create with Excel, Libre Office, OpenOffice etc.) a table .csv (1 row for each comic to be extracted + 1 for the series it belongs to) in which each row is made up of 2 columns, one each the series, the other for the number
- save the table as .csv
- import the table with AMC, inserting the column with the series in the Media Type field and the number in Media Label
All contributions for improvement are welcome!
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.1
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
[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';
var
ComicURL, MediaType: string; // Define some script variables
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;
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
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);
setfield(fieldcomments, all_sinossi);
end;
// ***** analizza albo di una sere *****
procedure AnalyzePage_Albo(URL: String);
var
Titolo, Descr_Img: string;
Attori, 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="sinossi">';
attori := startDelimiter + Textbetween(pagestr, startDelimiter, endDelimiter);
if attori = startdelimiter then
attori := '';
attori_puliti := stringReplace(attori, CRLF, '');
lunghezza := length(attori_puliti);
// 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; //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;
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
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'));
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;
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);
// 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;
//------------------------------------------------------------------------------
// ***** 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.