Añadir script de instalación y datos iniciales de continentes, países y categorías
This commit is contained in:
parent
170e4e27db
commit
b3dc6a4ac2
5 changed files with 353 additions and 0 deletions
17
categorias.sql
Normal file
17
categorias.sql
Normal 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
8
contienentes.sql
Normal 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
126
install.sh
Normal 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
197
paises.sql
Normal 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
5
requirements.txt
Normal file
|
|
@ -0,0 +1,5 @@
|
||||||
|
flask==2.3.3
|
||||||
|
feedparser==6.0.11
|
||||||
|
mysql-connector-python==8.3.0
|
||||||
|
APScheduler==3.10.4
|
||||||
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue