This shows you the differences between two versions of the page.
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" necesita: crunchmf, crunchif. | + | # las bases al "formato Windows" necesita además crunchmf y 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 -o $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 -o $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 -o $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 a Windows: archivos de texto." |
- | + | cp *.txt windows/ | |
- | # unix2dos a 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}} |