Παρακινούμενος από το TrayFM τού @Constantinos και με σκοπό να φτιαχτεί ένα αντίστοιχο Metal-Tray, άρχισα πριν λίγες μέρες να μαζεύω μεταλλικά streamings.
Παιδευόμουν να τα βρω, να δω αν τρέχουν, να μην είναι dead, να έχουν ποιοτική έξοδο και αν γίνεται, μετάδοση metadata. Ψιλομανίκι. Μετά από κάποιες ώρες…ουφφ.. καμιά 20αριά μάζεψα.
Μπααα, λέω. Αυτό είναι δύσκολο. Θέλω εργαλείο. Σκριπτάκι-κώδικα!
Έτσι, με τη βοήθεια LLM (Claude), έδωσα την ιδέα: να φτιαχτεί ένα εργαλείο που να του λες π.χ. «ψάξε jazz» στο radio-browser.info και να ψάχνει για τα αληθινά streaming URLs τους. Όχι τις ιστοσελίδες, αλλά τα λειτουργικά απευθείας streams.
Το radio-browser.info είναι η ιδανική βάση αναζήτησης: έχει δωρεάν, ανοιχτό API, χωρίς κλειδί.
Και εγένετο το SearchRadios.

Μια σημαντική σημείωση: ο πρώτος κώδικας γράφτηκε με τη βοήθεια LLM, βάσει προδιαγραφών που έδωσα εγώ. Οι αυτόματες δοκιμές έγιναν σε τοπικό ψεύτικο server που μιμείται το API, καθώς το περιβάλλον τού βοηθού δεν είχε πρόσβαση στο πραγματικό radio-browser.info.
Από κει και πέρα, ο @Constantinos, δημιουργός του TrayFM, πήρε αυτό το πρώτο, beta κείμενο κώδικα, βρήκε bugs και το έκανε πραγματικά λειτουργικό και πιο εύχρηστο από την αρχική του μορφή.
Χωρίς αυτή τη δουλειά, το SearchRadios θα έμενε στο επίπεδο πειραματικού πρόχειρου, όχι εργαλείο που μπορείς να εμπιστευτείς καθημερινά.
☞ Τι είναι το SearchRadios και πώς λειτουργεί:
Το SearchRadios είναι ένα ελαφρύ cli εργαλείο σε Python, χτισμένο αποκλειστικά με τη standard library, χωρίς καμία εξωτερική εξάρτηση (pip install δεν χρειάζεται). Επικοινωνεί απευθείας με το RadioBrowser API.
- Αναζήτηση ανά tag: βρίσκει τους πιο δημοφιλείς σταθμούς με βάση είδος μουσικής ή θεματολογία.
- Διαδραστικό μενού: αν το τρέξεις χωρίς κανένα όρισμα, εμφανίζει μενού επιλογών με αριθμούς, βολικό για όποιον δεν θέλει να θυμάται flags.
- Έλεγχος ροής (verification): ελέγχει αν τα streams παίζουν πραγματικά, όχι απλά αν επιστρέφουν κάποιο URL.
- Φιλτράρισμα λειτουργικών: μπορεί να σου δείξει μόνο σταθμούς που έχουν επιβεβαιωθεί ότι δουλεύουν.
- Εξαγωγή σε JSON: αποθηκεύει τοπικά τα αποτελέσματα για περαιτέρω χρήση.
Οι σταθμοί παίζουν αυτόματα στον default media player του συστήματός σου. Αν δεν βρει κάποιον, ανοίγει στον browser.
☞ Πώς το χρησιμοποιείτε:
Απλά κατεβάζετε το radio-search.py αρχείο, το κάνετε εκτελέσιμο, πετάτε μέσα στο bash, πατάτε Enter και θα ξεκινήσει.
Αλλιώς:
Κατεβάζεις το radiosearch.py, το κάνεις εκτελέσιμο, το τρέχεις με Python 3.6+.
Διαδραστικό, χωρίς ορίσματα:
python3 radiosearch.py
Εμφανίζει μενού με τις δημοφιλέστερες κατηγορίες, πληκτρολογείς αριθμό (π.χ. 1 για Jazz) ή 0 για να γράψεις ελεύθερα το δικό σου tag.
Απευθείας αναζήτηση:
python3 radiosearch.py jazz
python3 radiosearch.py "hard rock"
Περισσότερα αποτελέσματα:
python3 radiosearch.py rock --limit 50
Έλεγχος ότι το stream πράγματι παίζει:
python3 radiosearch.py jazz --verify
Μόνο επιβεβαιωμένα λειτουργικοί σταθμοί:
python3 radiosearch.py jazz -w --limit 10
Αποθήκευση αποτελεσμάτων σε JSON:
python3 radiosearch.py jazz --save
Αποθηκεύεται αυτόματα ως ~/radio-search-jazz.json, ή ορίζεις δικό σου path.
☞ Ο κώδικας, η αδεια, το repository:
Ανοιχτό στο Codeberg:
🔗 Repository: codeberg.org/osarena/SearchRadios
Η άδεια είναι απλή, με δικά της λόγια: πάρ’ το, χρησιμοποίησέ το, αντέγραψέ το, πείραξέ το, κάνε fork και μοίρασέ το ελεύθερα.Μια αναφορά αν θές στην πηγή. Μόνο μην το πουλήσεις ή το χρησιμοποιήσεις για κέρδος χωρίς άδεια.
Αιτήματα καλοδεχούμενα, ειδικά νέοι σταθμοί, διορθώσεις σε νεκρά streams, ή βελτιώσεις κατηγοριοποίησης.
Αν ετοιμάζεις δικό σου tray app ή θέλεις απλά ένα γρήγορο “ψαχτήρι” για το terminal, δοκίμασέ το.
Πηγές:
- Radio-Browser API: radio-browser.info
- Repository: codeberg.org/osarena/SearchRadios