bash-mass-diz-zip/README.md

5.4 KiB

mass-diz

Script per a generar automàticament a partir d'un conjunt de fitxers, una seqüència de 'ZIP' que contingui cada un dels fitxers, el seu respectiu 'FILE_ID.DIZ' i els fitxers de suport necessaris.

Situació

A Eye Of The Beholder BBS tots els elements que s'ofereixen als usuaris, a través de la seva base de fitxers, respecten les següents característiques:

  • Es presenten comprimits en format ZIP.
  • Inclouen un fitxer de descàrrec (DISCLAIMER).
  • Inclouen un fitxer de demo i/o publictat de EOTB.
  • Inclouen el fitxer de descripció de l'element (FILE_ID.DIZ).

Problema

El programari BBBS no implementa cap utilitat que permeti generar aquest paquetitzat de fitxers d'una manera automàtica.

Si bé per a la preparació d'e fitxers'elements individuals es pot optar per l'operació manual, davant de situacions on cal preparar una quantitat seqüencial d'elements la manualitat es converteix en una operació feixuga i tediosa.

Imaginem alguns casos d'aquests elements seqüencials:

  • Col·leccions de fitxers (p. ex. una sèrie de capítols d'un còmic, a fitxer per capítol)
  • Fitxers serialitzats (p. ex. un fitxer de gran mida comprimit en volums, a fitxer per volum)
  • Conjunt de fitxers independents en una carpeta comuna (p. ex. les fotografies diàries que fa la NASA, a fitxer per foto)

En qualsevol d'aquests casos, l'esforç és molt superior al benefici i, en el meu cas, justifica que tingui terabytes d'informació pendents d'incorporar a EOTB.

Solució

He desenvolupat mass-diz.sh, un script en bash que ha de donar resposta a aquesta necessitat, com a eina de suport pròpia i de qualsevol altre SysOp.

mass-diz.sh empaqueta en un ZIP els diferents elements i els annexes necessàris, incloent-hi el FILE_ID.DIZ associat que es genera durant l'execució.

Requisits

mass-diz.sh necessita que les utilitats read, zip, file i echo estiguin disponibles al sistema per tal de poder efectuar les operacions necessàries.

Tanmateix, aquest script s'ha provat en un shell bash compatible, de manera que si fas servir un altre shell pot ser necessari ajustar-lo en corcondança. Això podria aplicar-se a Windows WSL fent possible executar aquest script en qualsevol instal·lació de programari BBS sobre MS Windows.

Funcionalitat:

mass-diz.sh està pensat per a processar seqüencies de fitxers pertanyents a col·leccions, el nom dels quals respecti una estructura semblant i aporta tota l'informació sobre el fitxer en valors separats per un conjunt de caracters determinats:

P.ex. Daredevil Born Again - Season 1 - Chapter 2 - 1080p - 2025.mkv

  • Variables Inicials: L'script parteix d'un conjunt de variables fixes, que s'inicialitzen durant la seva execució:
    • DISCLAIMER: El nom del fitxer1 informatiu de descàrrec quan l'element és un contingut sensible.
    • DEMO: El nom del fitxer 1 que fa les funciones de publicitat/promoció de EOTB.
    • SEPARATOR: El caràcter o conjunt de caràcters que identifiquen els diferents camps de la descripció de l'element.
    • FILE_ID: S'alimenta automàticament durant l'execució de l'script.
    • ZIPFILE: El nom base que tindrà el fitxer ZIP resultant.
    • ZIPSEQ: El número de seqüència inicial que es concatenarà a la variable ZIPFILE.

mass-diz.sh processarà tots els fitxers existents a la ruta on se l'invoqui, a excepció dels que es defineixin a les variables DISCLAIMER i DEMO.

El primer fitxer definirà el patró de comportament que l'script tindrà, tant per aquest com per a la resta de fitxers.

L'script analitzarà el nom complet utilizant com a separador el valor de la variable SEPARATOR.

Per a cada valor identificat entre separadors, preguntarà el nom d'una nova variable que informarà amb el valor identificat. Per al valor d'extensió del fitxer (assumint-lo a la dreta del punt), ha de preguntar també el nom de la variable.

Un cop s'hagi analitzat el nom i extensió del fitxer, i tot el seu contingut estigui informat en variables, l'script sol·licita ordenar-les.

A continuació, s'informarà la variable FILE_ID (no inicialitzada) concatenant les variables existents amb les següents condicions:

  • La variable TITLE es converteix a majúscules i s'aboca a la variable FILE_ID.
  • La resta de variables, s'aboquen una per línia, segons l'ordre establert, respectant un format clau: valor.
  • A cada línia, la variable es converteix en la clau de línia (el mateix nom de la variable sense el símbol $), concatenant el símbol :, afegint un espai, i abocant el valor de la variable.

La variable FILE_ID s'abocarà a un nou fitxer amb el nom fixe establert FILE_ID.DIZ que contindrà un màxim de 45 caràcters per línia.

En aquest punt, es comprimirà en format ZIP el fitxer processat, el fitxer FILE_ID.DIZ, més els fitxers de les variables DISCLAIMER i DEMO. El nom d'aquest zip és el resultant de concatenar els valors de les variables ZIPFILE i ZIPSEQ.

Després del comprimit amb èxit, s'esborra el fitxer FILE_ID.DIZ.

A continuació, es suma 1 a la variable ZIPSEQ, i es torna a executar el procés per a la resta de fitxers presents a la ruta on s'ha executat l'script, assumint l'ordre establert en l'execució del primer fitxer processat.

Execució:

En el path on s'executa:

  • Únic mode d'execució: mass-diz.sh

<EOF>


  1. El fitxer ha d'estar present a la ruta on s'executi l'script. ↩︎