[UPD IT] Comicsbox 1.2

New scripts, templates and translation files that allows to use Ant Movie Catalog to manage other things than movies
Post Reply
fulvio53s03
Posts: 757
Joined: 2007-04-28 05:46:43
Location: Italy

[UPD IT] Comicsbox 1.2

Post by fulvio53s03 »

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.
Post Reply