User Tools

Site Tools


update-opac.sh

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
update-opac.sh [28/10/2006 20:39]
fernando
update-opac.sh [06/05/2009 00:00] (current)
Line 1: Line 1:
 +====== Script update-opac.sh ======
 +
 +Este es el script utilizado para generar la actualización del OPAC. Versión: 2006.11.13.
 +
 +
 +<code bash>
 #!/bin/bash #!/bin/bash
  
Line 10: Line 16:
 #            $1 nombre de la base #            $1 nombre de la base
 #            $2 cantidad de registros a procesar (opcional, es útil para #            $2 cantidad de registros a procesar (opcional, es útil para
-#               ​procesar una cantidad pequeña de registros de una base grande)+#               ​procesar una cantidad pequeña de registros de una base 
 +#               grande ​cuando se hacen pruebas)
 # #
 # Ejemplos: # Ejemplos:
 #         ​update-opac demo #         ​update-opac demo
-#         ​update-opac ​demo 50+#         ​update-opac ​mibase 500
 # #
 # #
Line 21: Line 28:
 # ----------------------------------------------------------------------- # -----------------------------------------------------------------------
 # #
-# Requiere algunos utilitarios CISIS: mx, msrt, i2id, id2i. +# Requiere algunos utilitarios CISIS: mx, msrt, i2id, id2i; para convertir 
-Para convertir ​las bases al "​formato Windows"​ necesitacrunchmfcrunchif+# las bases al "​formato Windows"​ necesita ​además ​crunchmf ​crunchif.
-+
-# ATENCION: Lea atentamente la seccion de CONFIGURACION.+
 # #
 # La base de origen debe tener la codificación "​ANSI"​ (aka windows-1252,​ # La base de origen debe tener la codificación "​ANSI"​ (aka windows-1252,​
Line 31: Line 36:
 # ejemplo mediante el gizmo oem2ansi. # ejemplo mediante el gizmo oem2ansi.
 # #
-# Usamos "​seq=filename.id¦" para que el poco probable +# Este script por ahora debe permanecer codificado como latin-1. Si usamos 
-carácter ​'​¦'​ sea tomado por mx como delimitador de campos (y, en +# utf-8 tenemos un error de mx al usar el carácter '​¦'​ como delimitador 
-consecuencia,​ no se produzca separacion en campos). ​¿Quizás +# en los proc. 
-convenga emplear otro carácter? ​¿Hay alguna manera de evitar que +
-mx asuma un separador de campos?+# Usamos "​seq=filename.id\n" para que mx use el carácter ​de fin de línea ​como 
 +delimitador de campos (y, en consecuencia,​ no se produzca ​una indeseada 
 +separacion en campos). 
 +# ¿Hay alguna manera de evitar que mx asuma un separador de campos?
 # #
 # ATENCION: en caso de registros corruptos, es posible que recién # ATENCION: en caso de registros corruptos, es posible que recién
Line 109: Line 117:
  fi  fi
  
- echo $2 $3+ echo "$2" "$3"
  tput sgr0  tput sgr0
 } }
Line 124: Line 132:
 } }
  
 +
 +echo
 +cecho "​blue"​ "​-----------------------------------------------------"​
 +cecho "​blue"​ " ​ update-opac.sh - SCRIPT DE ACTUALIZACION DEL OPAC  "
 +cecho "​blue"​ "​-----------------------------------------------------"​
  
 # ------------------------------------------------------------------ # ------------------------------------------------------------------
Line 134: Line 147:
 DB_NAME=$1 DB_NAME=$1
  
- 
- 
-# ------------------------------------------------------------------ 
-# INICIO CONFIGURACION 
-# ------------------------------------------------------------------ 
- 
-# ubicación de mx y demás utilitarios 
-export PATH=$PATH:/​home/​fer/​bin/​cisis 
- 
-# en este directorio se encuentran los archivos necesarios para generar el OPAC 
-# contiene los directorios common, opacgen, work 
-OPACMARC_DIR=$HOME/​opacmarc-admin 
- 
-# en este directorio están almacenadas las imágenes de las tapas (si las hay) 
-DIR_IMG=$HOME/​www/​html/​catalis_pack_devel/​opacmarc/​img/​$DB_NAME 
-#​DIR_IMG=$WORK_DIR/​img 
- 
-# a este directorio van a parar los archivos generados (opcional) 
-TARGET_DIR=$HOME/​www/​bases/​catalis_pack_devel/​opacmarc/​$DB_NAME 
- 
-# MOVE=1 para mover los archivos generados al directorio destino ($TARGET_DIR) 
-MOVE=1 
- 
-# CLEAN=1 para eliminar archivos temporales creados durante la generación del OPAC 
-CLEAN=1 
- 
-# CONVERT_WINDOWS=1 para generar al final del proceso una version 
-# para Windows del conjunto de bases 
-CONVERT_WINDOWS=0 
- 
-# valor del parametro tell del mx 
-TELL=5000 
- 
-# Lista de tags de los cuales vamos a extraer los encabezamientos 
-export SUBJ_TAGS='​v600v610v611v630v650v651v653v655v656' ​ # subject headings 
-export NAME_TAGS='​v100v110v111v700v710v711' ​             # name headings 
- 
-# Lista de campos que se incluyen en la base TITLE. 
-# ATENCION: completar/​revisar. Ver title.pft. 
-# Faltarian: subcampos $t de campos 505 y 7xx; campos de relación: 76x-78x 
-export TITLE_TAGS=v130v240v245v246v730v740v765v773v440v830 
- 
-# Valores del 2do indicador que no deseamos considerar en campos 6xx 
-export IGNORE_SUBJ_HEADINGS='#​6'​ 
  
 # ------------------------------------------------------------------ # ------------------------------------------------------------------
-FIN CONFIGURACION+LEEMOS ​CONFIGURACION
 # ------------------------------------------------------------------ # ------------------------------------------------------------------
  
 +CONF_FILE=`dirname $0`/​../​conf.sh
 +. $CONF_FILE || error "No se ha encontrado el archivo de configuración $CONF_FILE"​
  
  
Line 199: Line 170:
  
 # Hay que usar el path *absoluto* para el cipar # Hay que usar el path *absoluto* para el cipar
-export CIPAR=$OPACMARC_DIR/​opacgen/opac.cip+export CIPAR=$OPACMARC_DIR/​opac/opac.cip
  
  
Line 219: Line 190:
 if [ ! -d tmp ]; then if [ ! -d tmp ]; then
     mkdir tmp || error "No se pudo crear el directorio tmp"     mkdir tmp || error "No se pudo crear el directorio tmp"
-    cecho "​blue"​ "​Directorio tmp creado."​+    ​#cecho "​blue"​ "​Directorio tmp creado."​
 fi fi
  
Line 230: Line 201:
 #     ​ISO: ​    ​dbname.iso o biblio.iso #     ​ISO: ​    ​dbname.iso o biblio.iso
 #     ​ID: ​     dbname.id o biblio.id #     ​ID: ​     dbname.id o biblio.id
 +echo
 if [ -f $SOURCE_DIR/​$DB_NAME.zip ]; then if [ -f $SOURCE_DIR/​$DB_NAME.zip ]; then
- unzip -$SOURCE_DIR/​$DB_NAME.zip -d tmp || error+ unzip -oq $SOURCE_DIR/​$DB_NAME.zip -d tmp || error 
 + cecho "​blue"​ "​Usando como base original: $SOURCE_DIR/​$DB_NAME.zip"​
  
 elif [ -f $SOURCE_DIR/​biblio.zip ]; then elif [ -f $SOURCE_DIR/​biblio.zip ]; then
- unzip -$SOURCE_DIR/​biblio.zip -d tmp || error+ unzip -oq $SOURCE_DIR/​biblio.zip -d tmp || error 
 + cecho "​blue"​ "​Usando como base original: $SOURCE_DIR/​biblio.zip"​
  
 elif [[ -f $SOURCE_DIR/​biblio.mst && -f $SOURCE_DIR/​biblio.xrf ]]; then elif [[ -f $SOURCE_DIR/​biblio.mst && -f $SOURCE_DIR/​biblio.xrf ]]; then
  cp -f $SOURCE_DIR/​biblio.{mst,​xrf} tmp/ || error  cp -f $SOURCE_DIR/​biblio.{mst,​xrf} tmp/ || error
 + cecho "​blue"​ "​Usando como base original: $SOURCE_DIR/​biblio.{mst,​xrf}"​
  
 elif [ -f $SOURCE_DIR/​$DB_NAME.mrc ]; then elif [ -f $SOURCE_DIR/​$DB_NAME.mrc ]; then
  echo  echo
  cecho "​blue"​ "​Importando archivo $SOURCE_DIR/​$DB_NAME.mrc..."​  cecho "​blue"​ "​Importando archivo $SOURCE_DIR/​$DB_NAME.mrc..."​
- php $OPACMARC_DIR/​mrc2isis.php $SOURCE_DIR/​$DB_NAME.mrc > tmp/​$DB_NAME.id || error "Falla al ejecutar mrc2isis.php"​+ php $OPACMARC_DIR/bin/​mrc2isis.php $SOURCE_DIR/​$DB_NAME.mrc > tmp/​$DB_NAME.id || error "Falla al ejecutar mrc2isis.php"​
  id2i tmp/​$DB_NAME.id create=tmp/​biblio || error "Hubo una falla al ejecutar id2i"  id2i tmp/​$DB_NAME.id create=tmp/​biblio || error "Hubo una falla al ejecutar id2i"
  
 elif [ -f $SOURCE_DIR/​$DB_NAME.iso ]; then elif [ -f $SOURCE_DIR/​$DB_NAME.iso ]; then
  mx iso=$SOURCE_DIR/​$DB_NAME.iso create=tmp/​biblio now -all || error  mx iso=$SOURCE_DIR/​$DB_NAME.iso create=tmp/​biblio now -all || error
 + cecho "​blue"​ "​Usando como base original: $SOURCE_DIR/​$DB_NAME.iso"​
  
 elif [ -f $SOURCE_DIR/​biblio.iso ]; then elif [ -f $SOURCE_DIR/​biblio.iso ]; then
  mx iso=$SOURCE_DIR/​biblio.iso create=tmp/​biblio now -all || error  mx iso=$SOURCE_DIR/​biblio.iso create=tmp/​biblio now -all || error
 + cecho "​blue"​ "​Usando como base original: $SOURCE_DIR/​biblio.iso"​
  
 elif [ -f $SOURCE_DIR/​$DB_NAME.id ]; then elif [ -f $SOURCE_DIR/​$DB_NAME.id ]; then
  id2i $SOURCE_DIR/​$DB_NAME.id create=tmp/​biblio || error  id2i $SOURCE_DIR/​$DB_NAME.id create=tmp/​biblio || error
 + cecho "​blue"​ "​Usando como base original: $SOURCE_DIR/​$DB_NAME.id"​
  
 elif [ -f $SOURCE_DIR/​biblio.id ]; then elif [ -f $SOURCE_DIR/​biblio.id ]; then
  id2i $SOURCE_DIR/​biblio.id create=tmp/​biblio || error  id2i $SOURCE_DIR/​biblio.id create=tmp/​biblio || error
 + cecho "​blue"​ "​Usando como base original: $SOURCE_DIR/​biblio.id"​
  
 else else
Line 280: Line 259:
 #     * archivo EMA.001 (listado de existencias,​ generado desde SeCS) #     * archivo EMA.001 (listado de existencias,​ generado desde SeCS)
 #     * base oem2ansi (el gizmo para cambio de codificación) #     * base oem2ansi (el gizmo para cambio de codificación)
-#     * archivo secs2marc.pft (migración SeCS => MARC21)+#     * archivo secs2marc.proc (migración SeCS => MARC21)
 # ------------------------------------------------------------------ # ------------------------------------------------------------------
 if [ -f $SOURCE_DIR/​$DB_NAME-secstitle.zip ]; then    # testeamos si existe la base secstitle asociada if [ -f $SOURCE_DIR/​$DB_NAME-secstitle.zip ]; then    # testeamos si existe la base secstitle asociada
Line 289: Line 268:
   
  # paso 0: descomprimimos la base  # paso 0: descomprimimos la base
- unzip -$SOURCE_DIR/​$DB_NAME-secstitle.zip -d tmp || error "No se pudo descomprimir el archivo $SOURCE_DIR/​$DB_NAME-secstitle.zip"​+ unzip -oq $SOURCE_DIR/​$DB_NAME-secstitle.zip -d tmp || error "No se pudo descomprimir el archivo $SOURCE_DIR/​$DB_NAME-secstitle.zip"​
   
  # paso 1: recodificamos caracteres  # paso 1: recodificamos caracteres
Line 302: Line 281:
   
  # paso 4: migramos a MARC  # paso 4: migramos a MARC
- mx tmp/title "​proc=@SECS2MARC.PFT" create=tmp/​title_marc now -all || error "Hubo una falla al ejecutar mx"+ mx tmp/title "​proc=@SECS2MARC.PROC" create=tmp/​title_marc now -all || error "Hubo una falla al ejecutar mx"
   
  # paso 5: añadimos los registros a la base biblio  # paso 5: añadimos los registros a la base biblio
Line 351: Line 330:
 cecho "​blue"​ "​tematicos,​ y asignamos un numero (provisorio) a cada campo" cecho "​blue"​ "​tematicos,​ y asignamos un numero (provisorio) a cada campo"
 cecho "​blue"​ "de encabezamientos en el subcampo ^9..." cecho "​blue"​ "de encabezamientos en el subcampo ^9..."
-mx "​seq=tmp/​biblio1.id¦" lw=3000 "​pft=@HEAD.PFT"​ now tell=$TELL > tmp/​biblio2.id || error "Hubo una falla al ejecutar mx"+mx "​seq=tmp/​biblio1.id\n" lw=3000 "​pft=@HEAD.PFT"​ now tell=$TELL > tmp/​biblio2.id || error "Hubo una falla al ejecutar mx"
  
  
Line 364: Line 343:
  
 cecho "​blue"​ "​Creamos el listado de encabezamientos tematicos..."​ cecho "​blue"​ "​Creamos el listado de encabezamientos tematicos..."​
-mx "​seq=tmp/​biblio2.id¦" lw=1000 "​pft=if getenv('​SUBJ_TAGS'​) : v1*1.4 then @SUBJ.PFT fi" now tell=$TELL > tmp/​subj1.id || error "Hubo una falla al ejecutar mx"+mx "​seq=tmp/​biblio2.id\n" lw=1000 "​pft=if getenv('​SUBJ_TAGS'​) : v1*1.4 then @SUBJ.PFT fi" now tell=$TELL > tmp/​subj1.id || error "Hubo una falla al ejecutar mx"
  
 echo echo
Line 405: Line 384:
  
 cecho "​blue"​ "​Creamos el listado de encabezamientos de nombres..."​ cecho "​blue"​ "​Creamos el listado de encabezamientos de nombres..."​
-mx "​seq=tmp/​biblio2.id¦" lw=1000 "​pft=if getenv('​NAME_TAGS'​) : v1*1.4 then @NAME.PFT fi" now tell=$TELL > tmp/​name1.id || error "Hubo una falla al ejecutar mx"+mx "​seq=tmp/​biblio2.id\n" lw=1000 "​pft=if getenv('​NAME_TAGS'​) : v1*1.4 then @NAME.PFT fi" now tell=$TELL > tmp/​name1.id || error "Hubo una falla al ejecutar mx"
  
 echo echo
Line 446: Line 425:
 mx tmp/​namecode "fst=1 0 v1" fullinv=tmp/​namecode || error "Hubo una falla al ejecutar mx" mx tmp/​namecode "fst=1 0 v1" fullinv=tmp/​namecode || error "Hubo una falla al ejecutar mx"
  
-mx "​seq=tmp/​biblio2.id¦" lw=1000 "​pft=@RECODE.PFT"​ now tell=$TELL > tmp/​biblio3.id || error "Hubo una falla al ejecutar mx"+mx "​seq=tmp/​biblio2.id\n" lw=1000 "​pft=@RECODE.PFT"​ now tell=$TELL > tmp/​biblio3.id || error "Hubo una falla al ejecutar mx"
  
  
Line 459: Line 438:
  
 cecho "​blue"​ "​Creamos listado de titulos..."​ cecho "​blue"​ "​Creamos listado de titulos..."​
-mx "​seq=tmp/​biblio3.id¦" lw=1000 "​pft=if getenv('​TITLE_TAGS'​) : v1*1.4 then ,​@TITLE.PFT,​ fi" now tell=$TELL > tmp/​title1.id || error "Hubo una falla al ejecutar mx"+mx "​seq=tmp/​biblio3.id\n" lw=1000 "​pft=if getenv('​TITLE_TAGS'​) : v1*1.4 then ,​@TITLE.PFT,​ fi" now tell=$TELL > tmp/​title1.id || error "Hubo una falla al ejecutar mx"
  
 echo echo
Line 487: Line 466:
  
 echo echo
----------------------------------------------+cecho "​blue"​ "-----------------------------------------------------"​ 
 +cecho "​blue"​ "Base bibliografica"​ 
 +cecho "​blue"​ "​-----------------------------------------------------"​ 
 cecho "​blue"​ "​Recreamos la base bibliografica."​ cecho "​blue"​ "​Recreamos la base bibliografica."​
-# --------------------------------------------- 
 id2i tmp/​biblio3.id create=biblio tell=$TELL || error "Hubo una falla al ejecutar id2i" id2i tmp/​biblio3.id create=biblio tell=$TELL || error "Hubo una falla al ejecutar id2i"
  
 echo echo
-# --------------------------------------------- 
 cecho "​blue"​ "​Ordenamos la base bibliografica."​ cecho "​blue"​ "​Ordenamos la base bibliografica."​
-# --------------------------------------------- 
 msrt biblio 100 @LOCATION_SORT.PFT tell=$TELL || error "Hubo una falla al ejecutar msrt" msrt biblio 100 @LOCATION_SORT.PFT tell=$TELL || error "Hubo una falla al ejecutar msrt"
  
Line 522: Line 501:
 echo echo
 cecho "​blue"​ " Archivo invertido - Base bibliografica..."​ cecho "​blue"​ " Archivo invertido - Base bibliografica..."​
-mx biblio gizmo=DICTGIZ fst=@BIBLIO.FST actab=AC-ANSI.TAB uctab=UC-ANSI.TAB stw=@BIBLIO.STW fullinv=biblio tell=$TELL || error "Hubo una falla al ejecutar mx"+# Antes de la FST, aplicamos un gizmo a los campos que generan puntos de acceso 
 +mx biblio gizmo=DICTGIZ,​100,​110,​111,​130,​700,​710,​711,​730,​800,​810,​811,​830 gizmo=DICTGIZ,​240,​245,​246,​440,​740,​600,​610,​611,​630,​650,​651,​653,​655,​656 ​fst=@BIBLIO.FST actab=AC-ANSI.TAB uctab=UC-ANSI.TAB stw=@BIBLIO.STW fullinv=biblio tell=$TELL || error "Hubo una falla al ejecutar mx"
  
  
Line 530: Line 510:
  
 echo echo
-cecho "​blue"​ " Detectando registros analíticos..."​+cecho "​blue"​ "​Detectando registros analíticos..."​
 # Para los registros analíticos,​ creamos un 773$9 donde guardar el MFN # Para los registros analíticos,​ creamos un 773$9 donde guardar el MFN
 # del registro asociado, y así ahorrar futuros lookups en el diccionario # del registro asociado, y así ahorrar futuros lookups en el diccionario
Line 544: Line 524:
  
  
-echo +#echo 
-cecho "​blue"​ " Títulos de seriadas..."​+#cecho "​blue"​ "​Títulos de seriadas..."​
 #mx biblio "​-BIBLEVEL=S"​ "​pft=replace(v245*2,'​^','​~'​)"​ now -all > title_serial.txt #mx biblio "​-BIBLEVEL=S"​ "​pft=replace(v245*2,'​^','​~'​)"​ now -all > title_serial.txt
  
Line 684: Line 664:
  
 if [ "​$CONVERT_WINDOWS"​ = "​1"​ ]; then if [ "​$CONVERT_WINDOWS"​ = "​1"​ ]; then
-    ​echo + echo 
-    # ----------------------------------------------------------- + cecho "​blue"​ "​Conversion ​a Windows: ​bases de datos."​ 
-    ​cecho "​blue"​ "​Conversion ​de bases de datos a Windows." + if [ ! -d "​windows"​ ]; then 
-    # ----------------------------------------------------------- + mkdir windows || error "No se pudo crear el directorio windows"​ 
-    ​if [ ! -d "​windows"​ ]; then + fi 
-        mkdir windows || error "No se pudo crear el directorio windows"​ + #cecho "​blue"​ "​Directorio $2/windows creado."​ 
-    fi + 
-    cecho "​blue"​ "​Directorio $2/windows creado."​ + cecho "​blue"​ " ​  - biblio"​ 
-     + crunchmf biblio windows/​biblio || error "Hubo una falla al ejecutar crunchmf"​ 
-    cecho "​blue"​ " ​  - biblio"​ + crunchif biblio windows/​biblio || error "Hubo una falla al ejecutar crunchif"​ 
-    crunchmf biblio windows/​biblio || error "Hubo una falla al ejecutar crunchmf"​ + 
-    crunchif biblio windows/​biblio || error "Hubo una falla al ejecutar crunchif"​ + cecho "​blue"​ " ​  - name"​ 
-     + crunchmf name windows/​name || error "Hubo una falla al ejecutar crunchmf"​ 
-    cecho "​blue"​ " ​  - name"​ + crunchif name windows/​name || error "Hubo una falla al ejecutar crunchif"​ 
-    crunchmf name windows/​name || error "Hubo una falla al ejecutar crunchmf"​ + 
-    crunchif name windows/​name || error "Hubo una falla al ejecutar crunchif"​ + cecho "​blue"​ " ​  - subj"​ 
-     + crunchmf subj windows/​subj || error "Hubo una falla al ejecutar crunchmf"​ 
-    cecho "​blue"​ " ​  - subj"​ + crunchif subj windows/​subj || error "Hubo una falla al ejecutar crunchif"​ 
-    crunchmf subj windows/​subj || error "Hubo una falla al ejecutar crunchmf"​ + 
-    crunchif subj windows/​subj || error "Hubo una falla al ejecutar crunchif"​ + cecho "​blue"​ " ​  - title"​ 
-     + crunchmf title windows/​title || error "Hubo una falla al ejecutar crunchmf"​ 
-    cecho "​blue"​ " ​  - title"​ + crunchif title windows/​title || error "Hubo una falla al ejecutar crunchif"​ 
-    crunchmf title windows/​title || error "Hubo una falla al ejecutar crunchmf"​ +  
-    crunchif title windows/​title || error "Hubo una falla al ejecutar crunchif"​ + cecho "​blue"​ "​Conversion ​Windows: ​archivos de texto." 
-     + cp *.txt windows/ 
-    # unix2dos ​los archivos de texto?    ​+ unix2dos windows/​*.txt ​    
 fi fi
  
Line 724: Line 704:
  
 # Movemos los archivos generados (previamente vaciamos $TARGET_DIR) # Movemos los archivos generados (previamente vaciamos $TARGET_DIR)
 +# TO-DO: supongamos que alguien quiere mover la versión para Windows de las bases...  ​
 if [ "​$MOVE"​ = "​1"​ ]; then if [ "​$MOVE"​ = "​1"​ ]; then
  echo  echo
Line 738: Line 719:
 echo echo
 exit 0 exit 0
 +</​code>​
  
 +{{tag>​opacmarc admin}}
update-opac.sh.1162078788.txt.gz · Last modified: 26/06/2007 00:00 (external edit)