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