Descarga automatizada de la Villa de Colima de la Nueva España, siglo XVI.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Perro Tuerto 95af84978b Ups 11 months ago
parte1 Adición de archivos 11 months ago
parte2 Adición de archivos 11 months ago
parte3 Adición de archivos 11 months ago
README.md Ups 11 months ago

README.md

title tags
Descarga automatizada de La Villa de Colima de la Nueva España, siglo XVI ruweb, programación literaria, wiki, descarga, colima, siglo xvi

Descarga automatizada de la Villa de Colima de la Nueva España, siglo XVI

Esta receta descarga el fondo documental del siglo XVI del Archivo de la Villa de Colima. Este comprende tres sitios hechos con la misma plataforma:

  1. Cajas 1--11:
http://casadelarchivo.colima.gob.mx/sigloxvi/index.php?buscador
  1. Cajas 12--20:
http://casadelarchivo.colima.gob.mx/sigloxvi_2/inicio.php?buscador
  1. Cajas 21--30:
http://casadelarchivo.colima.gob.mx/sigloxvi_3/inicio.php?buscador

:::warning Aún no están disponibles las cajas 31--35, que son las últimas de este fondo. :::

Requisitos

Los siguientes elementos son necesarios:

Procedimiento

Directorio destino:

colima-siglo_xvi

Gemas a utilizar en Ruby:

require 'httparty'
require 'nokogiri'
require 'htmlbeautifier'

Aviso de inicio de descarga:

puts "\n--- Descargando ---"

Variables a utilizar en este ejercicio:

dir  = %Q{_dir}
urls = %W{_parte1 _parte2 _parte3}

Llamado al _método mkdir.

Generación de directorio:

mkdir(dir)

Iteración de cada fondo:

urls.each_with_index do |url, i|
  puts "\nURL: #{url}\nParte: #{i+1}"
  part = "#{dir}/parte#{i+1}/"
  site = HTTParty.get(url)
  html = Nokogiri::HTML(site.body)
  vals = html.search('option[value]')
  mkdir(part)
  _beautify
  _progress_bar
  _ids
  _download
end

Obtención de id de los expedientes:

case i
when 0
  vals = vals.map{|e| e['value']}.reject{|e| e.length != 36}
when 1
  vals = Array.new(381) {|i| (i+1).to_s }
when 2
  vals = Array.new(407) {|i| (i+1).to_s }
end

Descarga de cada expediente:

vals.each_with_index do |record, j|
  puts "#{status(vals.length, j+1)} Expediente #{record}"
  record_url = "#{url}&show=#{record}"
  site       = HTTParty.get(record_url)
  content    = HtmlBeautifier.beautify(site.body)
  record     = beautify(vals.length, j+1) if i > 0
  File.write("#{part}#{record}.html", content)
end

Embellece número:

def beautify(total, current)
  zeros = total.to_s.length - current.to_s.length
  "#{'0'*zeros}#{current}"
end

Muestra la barra de progreso:

def status(total, current)
  "[#{beautify(total, current)}/#{total}]"
end

Arregla la codificación de los documentos:

printf "\n--- Arreglando codificación ---\n"
for file in _dir/**/*.html
do
  iconv -f ISO-8859-1 -t utf-8 $file -o $file.new
  mv $file.new $file
done

Convierte a texto plano:

printf "\n--- Convirtiendo a texto plano ---\n"
for file in _dir/**/*.html
do
  pandoc -f html -t plain --wrap=none $file -o $file.txt
done