En el meu repositori de Gitlab he anat compartint molts programes Python, la majoria relacionats amb el #fedivers. Diverses vegades s’em pregunta com es fa per a executar un d’aquests programes i penso que hauria d’escriure un petit tutorial amb els passos necessaris per a aconseguir-ho. Som-hi.
El primer que cal fer és clonar el repositori del nostre interés, en aquest cas farem el de mastotuit. mastotuit és un programa que replica a Twitter totes les publicacions que es comparteixen públicament a Mastodon. Per a poder clonar-lo ens cal tenir instal·lat el paquet #git en el nostre sistema Linux:
git clone https://gitlab.com/spla/mastotuit.git <directori_que_vulguem>
Ara ja tindrem clonat el repositori en el directori de destí triat, per exemple, ‘mastotuit’. El següent pas és entrar dins del directori i crear-hi l’entorn virtual Python:
cd mastotuit
python3.8 -m venv .
La segona línia genera l’entorn virtual Python (suposant que tenim instal·lada la versió 3.8 de Python). Si tens una versió diferent modifica la línia adecuadament. Compte amb el . del final de la línia, no ens el descuidem perquè és important, especifica el directori on volem crear l’entorn, en aquest cas el directori on som: mastotuit. Ara ja tenim l’entorn virtual generat, només ens falta activar-lo:
source bin/activate
Veurem com ens apareix entre parentesi el nom del directori a la esquerra del prompt:
(mastotuit) [spla@archbox mastotuit]$
Bona senyal! l’entorn virtual Python ha estat activat amb èxit. Ara ja podem instal·lar les dependències necessaries per a executar mastotuit:
pip install -r requirements.txt
És molt possible que al intentar instal·lar les dependències doni un error com aquest:
Error: pg_config executable not found
Ho sol·lucionem així:
ArchLinux: pacman -S postgresql-libs
Ubuntu/Debian: apt install libpd-dev
Ara potser no tenim gcc en el nostre Linux i s’ens queixa així:
error: command ‘gcc’ failed: No such file or directory
Instal·lem gcc:
ArchLinux: pacman -S gcc
Ubuntu/Debian: apt install gcc
Ara ja podem repetir ‘pip install -r requirements.txt’ que tot hauria d’anar bé. El següent pas és configurar la base de dades que mastotuit necessita per a controlar quines publicacions ja ha estat replicades a Twitter:
python db-setup.py
Ens preguntarà quin nom li volem donar a la base de dades de mastotuit (escrivim el que vulguem), quin usuari (l’usuari Linux que està configurant el programa, en aquest cas ‘spla’) i la URL del RSS feed del compte de Mastodon (en el meu cas és ‘https://mastodont.cat/@spla.rss’).
Ens pot donar l’error següent, senyal que no tenim el servidor Postgresql instal·lat en el nostre sistema o no el tenim en marxa:
feeds db name: mastotuit
feeds db user: spla
enter Mastodon user RSS feeds url: https://mastodont.cat/@spla.rss
could not connect to server: No such file or directory
Is the server running locally and accepting connections on Unix domain socket “/var/run/postgresql/.s.PGSQL.5432”?
Executem la següent ordre per a instal·lar el servidor #Postgresql:
ArchLinux: pacman -S postgresql
(cal seguir les instruccions oficials de la wiki de ArchLinux)
Ubuntu/Debian: apt install postgres postgresql-contrib
Intentem de nou configurar la base de dades de mastotuit amb ‘python db-setup.py’. Ens donarà aquest error (paciència perquè tots aquests errors només passen el primer cop que volem executar un programa Python que li cal el servidor Postgresql :-)):
FATAL: role “spla” does not exist
Dirà ‘spla’ o l’usuari que li hem donat. Postgresql no sap qui és ‘spla’ per tant hem de crear-li el rol. Com a root fem:
su – postgres
psql
create role spla login createdb;
Ens respondrà ‘CREATE ROLE’:
Ara ja funcionarà, repetim ‘python db-setup.py’:
A partir d’ara el nostre usuari (en aquest cas ‘spla’) podra crear tantes bases de dades com vulgui i iniciar sessió a Postgresql amb ‘psql <base de dades>’ si cal.
Per a que mastotuit pugui replicar a Twitter les publicacions del nostre compte a Mastodon cal que obtinguem els tokens d’accés des de la Twitter Developer Platform. Allà haurem de crear el nostre projecte i la app que ens donarà accés a l’API de Twitter. Després ja podrem copiar els tokens d’accés que ens demanarà setup.py:
python setup.py
Els tokens d’accés de Twitter es desen a config/keys_config.txt.
El darrer pas per a tenir configurat el nostre mastotuit és configurar el tokens d’accés del nostre compte a Mastodon:
python mastodon-setup.py
Ja hem acabat! Si ara mateix executem ‘python mastotuit.py’ veurem com es repliquen a Twitter les nostres publicacions públiques de Mastodon.
Ho podem automatitzar a crontab, per exemple, que s’executi mastotuit.py cada minut. Executem ‘crontab -e’ per afegir-hi la nova tasca:
* * * * cd /home/spla/mastotuit && source bin/activate && python mastotuit.py >/dev/null
I desem els canvis. Ja podem oblidar-nos de mastotuit, cada minut mirarà si hi ha a Mastodon publicacions no replicades i les enviarà al nostre compte de Twitter auto màgicament!