Lemmy RSS PyBot 
Φέρνοντας τα τελευταία νέα στις αγαπημένες σας κοινότητες στο Lemmy!
Για όποιον δεν γνωρίζει τι είναι το Lemmy και το Fediverse, στο Linux-User.gr φιλοξενούμε αναλυτικό άρθρο σχετικά με το Lemmy καθώς και κανονίσαμε ομιλία για Fediverse στην FOSSCOMM2024.
Εισαγωγή
Το Lemmy RSS PyBot είναι ένα Python3 bot που διαβάζει RSS feeds και δημοσιεύει νέα άρθρα στις αγαπημένες σας κοινότητες στο Lemmy. Το Lemmy RSS Pybot μπορεί να συμβάλει στην ενημέρωση των communities σας με τα τελευταία νέα, blogs και άρθρα πιο αποτελεσματικά! ![]()
Χαρακτηριστικά:
Διαβάζει τα προκαθορισμένα RSS feeds και τις κοινότητες όπου θα πρέπεινα δημοσιεύονται, από ένα αρχείο JSON,
Δημοσιεύει νέα άρθρα σε προκαθορισμένες κοινότητες στο Lemmy,
Φιλτράρει άρθρα με βάση λέξεις-κλειδιά που καθορίζονται μέσω αντίστοιχης παραμέτρου (–keywords) ή αρχείου,
Ελέγχει για νέα άρθρα κάθε καθορισμένο χρονικό διάστημα ή random μεταξύ 10 και 20 λεπτών,
Χρησιμοποιεί αρχεία ρυθμίσεων για παραμέτρους και διαπιστευτήρια,
Κρατά αρχείο ιστορικού των δημοσιευμένων άρθρων logs και με μηχανισμό αυτόματης εκκαθάρισης τους έτσι ώστε το αρχείο των logs μην γίνει πραγματικά μεγάλο σε μέγεθος,
Υποστηρίζει διάφορες παραμέτρους για καλύτερη προσαρμοστικότητα,
Περιλαμβάνει αμυντικό προγραμματισμό για εντοπισμό σφαλμάτων και επαναπροσπάθεια, έτσι ώστε το bot να συνεχίσει να τρέχει όσο απροβλημάτιστα.

Απαιτήσεις
- Tα στοιχεία αυθεντικοποίησης του λογαριασμού σε κάποιο instance του Lemmy καθως και link του ίδιου του instance, στο αρχείο .env,
- Πρόσβαση στο API του instance Lemmy,
- Ένα αρχείο json με τους επιθυμητούς συνδέσμους RSS και κοινότητες με ετικέτα true για να ενεργοποιηθούν.
Εγκατάσταση
Για να τρέξουμε το lemmy-rss-pybot είτε locally στον υπολογιστή μας είτε ως docker container, δίνουμε:
git clone https://github.com/sv1sjp/lemmy-rss-pybot.git
cd lemmy-rss-pybot
Παραμετροποίηση:
Environment Variables / .env
Δημιουργούμε ένα αρχείο .env στον κεντρικό κατάλογο και προσθέτουμε τα στοιχεία αυθεντικοποίησής μας για το Lemmy:
LEMMY_USERNAME=your_lemmy_username
LEMMY_PASSWORD=your_lemmy_password
LEMMY_INSTANCE_URL=https://your.lemmy.instance.url
RSS Feeds
Δημιουργούμε ένα αρχείο rss_feeds.json με στόχο να ορίσουμε τα RSS feeds και τις κοινότητες του Lemmy στις οποίες θα δημοσιεύονται τα νέα άρθρα:
[
{
"feed_url": "https://newssite1.com/rss",
"community": "news@lemmy.example2",
"enabled": true
},
{
"feed_url": "https://anotherexample.com/feed",
"community": "technology@lemmy.example1",
"enabled": false
}
]
Εγκατάσταση προαπαιτούμενων βιβλιοθηκών (μόνο για locally):
pip install -r requirements.txt
Χρήση
Για locally εκτέλεση στον υπολογιστή μας,
Δίνουμε:
python lemmy_pybot.py --feeds rss_feeds.json --log lemmy_bot.log --interval 15
Παραδείγματα εκτέλεσης@
-
Κανονική Χρήση:
python lemmy-rss-pybot.py -
Χρήση προκαθορισμένου Χρονικού Διαστήματος:
python lemmy-rss-pybot.py --feeds rss_feeds.json --log lemmy_bot.log --interval 20 -
Δημοσίευση Ταυτόχρονα σε Πολλαπλές Κοινότητες (2 αναρτήσεις στην καθεμία):
python lemmy-rss-pybot.py --feeds rss_feeds.json --log lemmy_bot.log --simultaneously 2 --interval 10 -
Λειτουργία debugging για verbose logs:
python lemmy-rss-pybot.py --feeds rss_feeds.json --log lemmy_bot.log --verbose -
Φιλτράρισμα με Λέξεις-Κλειδιά και κοινοποιήσεις σε πολλές κοινότητες ταυτόχρονα:
python lemmy-rss-pybot.py --feeds rss_feeds.json --keywords "technology, Europe, science" --max_posts 5 -
Φιλτράρισμα Λέξεων-Κλειδιών από Αρχείο και κοινοποιήσεις σε πολλές κοινότητες ταυτόχρονα:
python lemmy-rss-pybot.py --feeds rss_feeds.json --keywords-file keywords.txt --max_posts 5 -
Φιλτράρισμα με Προσαρμοσμένες Λέξεις-Κλειδιά και κοινοποιήσεις σε πολλές κοινότητες ταυτόχρονα ανά 15 λεπτά:
python lemmy-rss-pybot.py --feeds rss_feeds.json --log lemmy_bot.log --keywords "Python, AI, Machine Learning" --max_posts 5 --interval 15 -
Εμφάνιση Βοήθειας:
python lemmy-rss-pybot.py --help
Keywords (Προαιρετικά)
Μπορείτε να φιλτράρετε τα άρθρα τα οποία θα δημοσιεύονται με βάση λέξεις-κλειδιά χρησιμοποιώντας ένα αρχείο με κλειδιά ή ορίζοντας τις παραμέτρους απευθείας από το τερματικό:
- Δημιουργώντας ένα αρχείο
keywords.txtμε μία λέξη-κλειδί ανά γραμμή. - Καθορίζοντας λέξεις-κλειδιά μέσω της παραμέτρου
--keywords.
Εκτέλεση με Docker Compose 
Το image έχει ήδη ανέβει στο DockerHub, ωστόσο το Dockerfile είναι διαθέσιμο στο αποθετήριο στο GitHub έτσι ώστε να το χτίσετε μόνοι σας.
Για να λειτουργήσει το lemmy-rss-pybot ως service στον φάκελο lemmy-rss-pybot με όλα τα προαπαιτούμενα αρχεία που αναλύθηκαν παραπάνω, δίνουμε:
docker-compose up -d
Άδεια
Αυτό το έργο έχει άδεια υπό την GNU Affero General Public License (AGPL) - δείτε το αρχείο LICENSE για περισσότερες λεπτομέρειες.
Συνεισφορά
Όλες οι συνεισφορές είναι ευπρόσδεκτες!. Εάν αντιμετωπίσετε οποιαδήποτε προβλήματα, μην διστάσετε να ανοίξετε ένα issue στο GitHub.
Αντιμετώπιση Προβλημάτων
- Environment Variables Not Loaded: Βεβαιωθείτε ότι έχετε ένα έγκυρο αρχείο
.envστον ριζικό κατάλογο. - Missing Dependencies: Εκτελέστε
pip install -r requirements.txtγια να βεβαιωθείτε ότι έχουν εγκατασταθεί όλα τα απαιτούμενα πακέτα. - Syntax Issues in the JSON file: Ελέγξτε το παράδειγμα αρχείου JSON για τα RSS feeds.
- Εάν αντιμετωπίσετε οποιοδήποτε προβλήμα παρακαλούμε ελέγξτε τα logs για περισσότερες λεπτομέρειες:
tail -f lemmy_bot.log
Μην ξεχάσετε να αφήσετε αστεράκια!!!
Lemmy RSS PyBot – Created by Dimitris Vagiakakos @sv1sjp - TuxHouse

