Añadir script de instalación y datos iniciales de continentes, países y categorías

This commit is contained in:
jlimolina 2025-05-24 15:17:39 +02:00
parent 170e4e27db
commit b3dc6a4ac2
5 changed files with 353 additions and 0 deletions

17
categorias.sql Normal file
View file

@ -0,0 +1,17 @@
INSERT IGNORE INTO categorias_estandar (nombre) VALUES
('Ciencia'),
('Cultura'),
('Deportes'),
('Economía'),
('Educación'),
('Entretenimiento'),
('Internacional'),
('Medio Ambiente'),
('Moda'),
('Opinión'),
('Política'),
('Salud'),
('Sociedad'),
('Tecnología'),
('Viajes');

8
contienentes.sql Normal file
View file

@ -0,0 +1,8 @@
INSERT IGNORE INTO continentes (id, nombre) VALUES
(1, 'África'),
(2, 'América'),
(3, 'Asia'),
(4, 'Europa'),
(5, 'Oceanía'),
(6, 'Antártida');

126
install.sh Normal file
View file

@ -0,0 +1,126 @@
#!/bin/bash
# ========= CONFIGURACIÓN =========
APP_NAME="rss"
USER=$(whoami)
APP_DIR="/home/$USER/rss"
PYTHON_ENV="$APP_DIR/venv"
SERVICE_FILE="/etc/systemd/system/$APP_NAME.service"
FLASK_FILE="app.py"
DB_NAME="noticiasrss"
MYSQL_USER="root"
# ========= PEDIR CONTRASEÑA MYSQL =========
read -s -p "Introduce la contraseña MySQL para '$MYSQL_USER': " MYSQL_PASS
echo
# ========= BASE DE DATOS Y TABLAS =========
echo "🛠️ Verificando/creando base de datos '$DB_NAME'..."
mysql -u"$MYSQL_USER" -p"$MYSQL_PASS" -e "CREATE DATABASE IF NOT EXISTS $DB_NAME DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;"
echo "📐 Verificando tablas necesarias..."
mysql -u"$MYSQL_USER" -p"$MYSQL_PASS" "$DB_NAME" <<EOF
CREATE TABLE IF NOT EXISTS continentes (
id INT AUTO_INCREMENT PRIMARY KEY,
nombre VARCHAR(255)
);
CREATE TABLE IF NOT EXISTS categorias_estandar (
id INT AUTO_INCREMENT PRIMARY KEY,
nombre VARCHAR(255)
);
CREATE TABLE IF NOT EXISTS paises (
id INT AUTO_INCREMENT PRIMARY KEY,
nombre VARCHAR(255),
continente_id INT
);
CREATE TABLE IF NOT EXISTS feeds (
id INT AUTO_INCREMENT PRIMARY KEY,
nombre VARCHAR(255),
url TEXT,
categoria_id INT,
pais_id INT,
activo BOOLEAN DEFAULT TRUE
);
CREATE TABLE IF NOT EXISTS noticias (
id CHAR(32) PRIMARY KEY,
titulo TEXT,
resumen TEXT,
url TEXT,
fecha DATETIME,
imagen_url TEXT,
categoria_id INT,
pais_id INT
);
EOF
echo "✅ Tablas creadas/verificadas correctamente."
# ========= DATOS INICIALES =========
# Continentes
if [ -f "$APP_DIR/continentes.sql" ]; then
echo "🌎 Insertando continentes..."
mysql -u"$MYSQL_USER" -p"$MYSQL_PASS" "$DB_NAME" < "$APP_DIR/continentes.sql"
else
echo "⚠️ No se encontró $APP_DIR/continentes.sql"
fi
# Países
if [ -f "$APP_DIR/paises.sql" ]; then
echo "🌐 Insertando países..."
mysql -u"$MYSQL_USER" -p"$MYSQL_PASS" "$DB_NAME" < "$APP_DIR/paises.sql"
else
echo "⚠️ No se encontró $APP_DIR/paises.sql"
fi
# Categorías
if [ -f "$APP_DIR/categorias.sql" ]; then
echo "🏷️ Insertando categorías estándar..."
mysql -u"$MYSQL_USER" -p"$MYSQL_PASS" "$DB_NAME" < "$APP_DIR/categorias.sql"
else
echo "⚠️ No se encontró $APP_DIR/categorias.sql"
fi
# ========= ENTORNO PYTHON =========
echo "🌀 Creando entorno virtual en $PYTHON_ENV"
python3 -m venv "$PYTHON_ENV"
echo "📦 Instalando dependencias"
source "$PYTHON_ENV/bin/activate"
pip install --upgrade pip
pip install -r "$APP_DIR/requirements.txt"
deactivate
# ========= SYSTEMD SERVICE =========
echo "⚙️ Creando servicio systemd: $SERVICE_FILE"
sudo tee "$SERVICE_FILE" > /dev/null <<EOF
[Unit]
Description=RSS Flask App
After=network.target
[Service]
User=$USER
WorkingDirectory=$APP_DIR
ExecStart=$PYTHON_ENV/bin/python $FLASK_FILE
Restart=always
Environment=PYTHONUNBUFFERED=1
[Install]
WantedBy=multi-user.target
EOF
# ========= ACTIVAR SERVICIO =========
echo "🔁 Recargando systemd y activando servicio"
sudo systemctl daemon-reexec
sudo systemctl daemon-reload
sudo systemctl enable "$APP_NAME"
sudo systemctl start "$APP_NAME"
# ========= ESTADO =========
echo "✅ Servicio '$APP_NAME' instalado y funcionando."
echo "👉 Revisa con: systemctl status $APP_NAME"

197
paises.sql Normal file
View file

@ -0,0 +1,197 @@
INSERT IGNORE INTO paises (nombre, continente_id) VALUES
('Afganistán', 3),
('Albania', 4),
('Alemania', 4),
('Andorra', 4),
('Angola', 1),
('Antigua y Barbuda', 2),
('Arabia Saudita', 3),
('Argelia', 1),
('Argentina', 2),
('Armenia', 3),
('Australia', 5),
('Austria', 4),
('Azerbaiyán', 3),
('Bahamas', 2),
('Bangladés', 3),
('Barbados', 2),
('Baréin', 3),
('Bélgica', 4),
('Belice', 2),
('Benín', 1),
('Bielorrusia', 4),
('Birmania', 3),
('Bolivia', 2),
('Bosnia y Herzegovina', 4),
('Botsuana', 1),
('Brasil', 2),
('Brunéi', 3),
('Bulgaria', 4),
('Burkina Faso', 1),
('Burundi', 1),
('Bután', 3),
('Cabo Verde', 1),
('Camboya', 3),
('Camerún', 1),
('Canadá', 2),
('Catar', 3),
('Chad', 1),
('Chile', 2),
('China', 3),
('Chipre', 3),
('Colombia', 2),
('Comoras', 1),
('Corea del Norte', 3),
('Corea del Sur', 3),
('Costa de Marfil', 1),
('Costa Rica', 2),
('Croacia', 4),
('Cuba', 2),
('Dinamarca', 4),
('Dominica', 2),
('Ecuador', 2),
('Egipto', 1),
('El Salvador', 2),
('Emiratos Árabes Unidos', 3),
('Eritrea', 1),
('Eslovaquia', 4),
('Eslovenia', 4),
('España', 4),
('Estados Unidos', 2),
('Estonia', 4),
('Esuatini', 1),
('Etiopía', 1),
('Filipinas', 3),
('Finlandia', 4),
('Fiyi', 5),
('Francia', 4),
('Gabón', 1),
('Gambia', 1),
('Georgia', 3),
('Ghana', 1),
('Granada', 2),
('Grecia', 4),
('Guatemala', 2),
('Guinea', 1),
('Guinea-Bisáu', 1),
('Guinea Ecuatorial', 1),
('Guyana', 2),
('Haití', 2),
('Honduras', 2),
('Hungría', 4),
('India', 3),
('Indonesia', 3),
('Irak', 3),
('Irán', 3),
('Irlanda', 4),
('Islandia', 4),
('Islas Marshall', 5),
('Islas Salomón', 5),
('Israel', 3),
('Italia', 4),
('Jamaica', 2),
('Japón', 3),
('Jordania', 3),
('Kazajistán', 3),
('Kenia', 1),
('Kirguistán', 3),
('Kiribati', 5),
('Kuwait', 3),
('Laos', 3),
('Lesoto', 1),
('Letonia', 4),
('Líbano', 3),
('Liberia', 1),
('Libia', 1),
('Liechtenstein', 4),
('Lituania', 4),
('Luxemburgo', 4),
('Macedonia del Norte', 4),
('Madagascar', 1),
('Malasia', 3),
('Malaui', 1),
('Maldivas', 3),
('Malí', 1),
('Malta', 4),
('Marruecos', 1),
('Mauricio', 1),
('Mauritania', 1),
('México', 2),
('Micronesia', 5),
('Moldavia', 4),
('Mónaco', 4),
('Mongolia', 3),
('Montenegro', 4),
('Mozambique', 1),
('Namibia', 1),
('Nauru', 5),
('Nepal', 3),
('Nicaragua', 2),
('Níger', 1),
('Nigeria', 1),
('Noruega', 4),
('Nueva Zelanda', 5),
('Omán', 3),
('Países Bajos', 4),
('Pakistán', 3),
('Palaos', 5),
('Palestina', 3),
('Panamá', 2),
('Papúa Nueva Guinea', 5),
('Paraguay', 2),
('Perú', 2),
('Polonia', 4),
('Portugal', 4),
('Reino Unido', 4),
('República Centroafricana', 1),
('República Checa', 4),
('República del Congo', 1),
('República Democrática del Congo', 1),
('República Dominicana', 2),
('Ruanda', 1),
('Rumanía', 4),
('Rusia', 3),
('Samoa', 5),
('San Cristóbal y Nieves', 2),
('San Marino', 4),
('San Vicente y las Granadinas', 2),
('Santa Lucía', 2),
('Santo Tomé y Príncipe', 1),
('Senegal', 1),
('Serbia', 4),
('Seychelles', 1),
('Sierra Leona', 1),
('Singapur', 3),
('Siria', 3),
('Somalia', 1),
('Sri Lanka', 3),
('Sudáfrica', 1),
('Sudán', 1),
('Sudán del Sur', 1),
('Suecia', 4),
('Suiza', 4),
('Surinam', 2),
('Tailandia', 3),
('Tanzania', 1),
('Tayikistán', 3),
('Timor Oriental', 3),
('Togo', 1),
('Tonga', 5),
('Trinidad y Tobago', 2),
('Túnez', 1),
('Turkmenistán', 3),
('Turquía', 3),
('Tuvalu', 5),
('Ucrania', 4),
('Uganda', 1),
('Uruguay', 2),
('Uzbekistán', 3),
('Vanuatu', 5),
('Vaticano', 4),
('Venezuela', 2),
('Vietnam', 3),
('Yemen', 3),
('Yibuti', 1),
('Zambia', 1),
('Zimbabue', 1);

5
requirements.txt Normal file
View file

@ -0,0 +1,5 @@
flask==2.3.3
feedparser==6.0.11
mysql-connector-python==8.3.0
APScheduler==3.10.4