XFL Bot, README.md under construction. Originally from https://mastodon.online/@nflscores:
Bot para Mastodon de Scoreboard de los partidos de la nfl. Funcionando actualmente en https://mastodon.online/@nflscores
Este proyecto implementa un bot para Mastodon con la información de los partidos de la semana de la NFL.
Actualmente este bot está funcionando en la cuenta de Mastodon https://mastodon.online/@nflscores
La API usada para la obtención de los datos es la de ESPN: http://site.api.espn.com/apis/site/v2/sports/football/xfl/scoreboard
Las motivaciones han sido, dar información deportiva en Mastodon que escasea bastante por un lado, y por otro, aprender algo de Python así como a desarrollar bots para Mastodon. Todo esto en un momento en qué la unica posibilidad para hacer algo de este tipo para mí era el uso de mi smartphone.
Puedes usar este proyecto para aprender como crear tu propio bot de Mastodon, para mejorarlo o crear uno similar para otros deportes.
- Python 3.8+ (Debería funcionar también con 3.6+)
- Librerias adicionales: (extracto de pip freeze, pero debería funcionar también con versiones similares)
- blurhash==1.1.4
- certifi==2022.9.24
- charset-normalizer==2.1.1
- configparser==5.3.0
- decorator==5.1.1
- idna==3.4
- Mastodon.py==1.5.1
- python-dateutil==2.8.2
- python-magic==0.4.27
- pytz==2022.2.1
- requests==2.28.1
- six==1.16.0
- urllib3==1.26.12
Es recomendable usar virtualenv para crear un nuevo entorno virtual y evitar conflictos con otras aplicaciones. Aquí tienes una guía de como hacerlo.
Usa git clone para clonar este repositorio en tu equipo.
git clone https://gitlab.com/noroute2host/nflscores-mastodon-bot
Puedes instalar las dependencias con pip una a una o haciendo uso del fichero requeriments.txt del repositorio.
Para el correcto funcionamiento del bot se debe modificar el fichero de configuración. Hay un fichero de ejemplo en el repositorio.
El fichero de configuración deberá ser llamado config.conf
y tiene este formato:
[API]
API_URL_SCB = http://site.api.espn.com/apis/site/v2/sports/football/xfl/scoreboard
[MASTODON]
ACCESS_TOKEN = TOKENSUPERSECRETO
API_BASE_URL = https://mastodon.online/
TOOTEAR = True
MAX_TAM_TOOT = 400
En la sección API solo está la URL de la API utilizada para la obtención de los datos.
Mientras la sección Mastodon se debe configurar acorde a los datos de la cuenta bot que se quiera usar indicando:
- El token para la publicación de los toots.
- La instancia donde se aloja.
- Un número de caracteres mejor al máximo número de caracteres por toot de la instancia.
Se ejecuta simplemente llamando al mani.py con pyhon
python main.py
Para automatizar las ejecuciones se puede usar cron en el cron de UNIX/linux o cualquier otra opción de programación de tareas. A continuación, hay un ejemplo de crontab de usuario con mayor número de posteos del bot en las horas de partido. (Ejemplo con horario de verano de España)
*/20 17-23 * * 0 /home/usuarioejemplo/python/virtualenvs/nflscores-bot/bin/python /home/usuarioejemplo/python/virtualenvs/nflscores-bot/app/main.py > /home/usuarioejemplo/python/virtualenvs/nflscores-bot/log/nflscores-bot-cron.log 2>&1
*/20 0-6 * * 1-2,5 /home/usuarioejemplo/python/virtualenvs/nflscores-bot/bin/python /home/usuarioejemplo/python/virtualenvs/nflscores-bot/app/main.py > /home/usuarioejemplo/python/virtualenvs/nflscores-bot/log/nflscores-bot-cron.log 2>&1
30 15,21,3,9 * * * /home/usuarioejemplo/python/virtualenvs/nflscores-bot/bin/python /home/usuarioejemplo/python/virtualenvs/nflscores-bot/app/main.py > /home/usuarioejemplo/python/virtualenvs/nflscores-bot/log/nflscores-bot-cron.log 2>&1
El desarrollo a sido completamente realizado en un teléfono movil. Usando para ello:
- Python como lenguaje de programación.
- Pydroid 3 como editor de código.
- API de ESPN
- Python Tutorial para refrescar y aprender cositas de Python.
Colaborando con el código 💻
Las peticiones de pull son bienvenidas. Para cambios mayores, por favor, abre un issue primero para discutir el cambio.
O simplemente creando un issue 😊
- 😯 Creando un issue aquí
[..]
Este peoyecto está licenciado bajo la licencia GNU General Public License v3.0. Para más detalles se puede consultar el fichero LICENSE.txt de este repositorio.