logo

Το νέο Parrot App είναι εδώ

09/10/2026

Πριν καμιά 10+ χρόνια είχα φτιάξει μια εφαρμογή (το Parrot Tunes) για να αντικαταστήσω το itunes, το οποίο δεν παλεύονταν. Κυρίως γιατί αντιμετώπιζε την library στατικά. Δεν μπορούσες καν να μεταφέρεις τα αρχεία σου αλλού (σε άλλον δίσκο, σε άλλο folder, σε άλλο μηχάνημα). Έσωζε τα πάντα σε ένα XML αρχείο, με καρφωτά paths. Χρειάζονταν third party app για να κάνω μετακομήσεις. Και φυσικά δεν μιλάμε καν για δυνατότητα να αλλάξεις πλατφόρμα (π.χ. να πας σε Linux). Η μουσική ήταν δεμένη με το συγκεκριμένο mac στο οποίο έτρεχε το itunes.

Η ανάγκη να απελευθερώσω την μουσική από αυτό, με οδήγησε να φτιάξω μια δική μου web εφαρμογή, την οποία θα εγκαταστούσα σε οποιοδήποτε μηχάνημα θέλω (σαν server) και θα είχα access από παντού. Ακόμη και από κινητό.

Παρόμοιες λύσεις που έβρισκα τότε (αλλά και τώρα), δεν ήταν αυτό που ήθελα. Παρ’ όλο που το itunes είχε τα προβλήματα που είπα, ήταν και η πιο σωστή λύση (για μένα) στο πως παρουσίαζε την library, πως έπαιζε ο player κτλ. Ήθελα δηλαδή κάτι που να φαίνεται σαν itunes, αλλά να μην είναι itunes.

Το Parrot Tunes που έφτιαξα λοιπόν τότε, με βόλεψε σχεδόν απόλυτα. Έκανε ακριβώς αυτό που ήθελα, όπως το ήθελα. Και ταυτόχρονα ήταν μια πολύ καλή προγραμματιστική εμπειρία, αφού στην ουσία αναγκάστηκα και έφτιαξα κι ένα δικό μου framework (τότε δεν γνώριζα καν για την ύπαρξη του Laravel, ούτε για τα διάφορα JS frameworks). Αυτό ήταν όμως και το πρόβλημα. Ο κώδικας μου ήταν πρωτόγονος και δύσκολα μπορούσα να εξελίξω την εφαρμογή.

Με έτρωγε να κάτσω να το φτιάξω όλο από την αρχή, πάνω σε κάποιο σύγχρονο framework. Είχα καταλήξει ότι θέλω να φτιάξω σε Java (Spring), γιατί βολεύει απλά να παράγεις ένα jar και να το τρέξεις όπου θες. Ούτε εγκατάσταση web server, ούτε εγκατάσταση κάποιας βάσης. Σχεδόν απόλυτη ελευθερία να τρέξει παντού εύκολα.

Ταυτόχρονα ήθελα να φτιάξω και κάτι για τις φωτογραφίες (ναι, κι εδώ να αντιγράψω κάπως το πως δουλεύει το iphoto 🙂 ), γιατί κι εδώ δεν είχα κάτι που να είναι όπως το θέλω. Η βοήθεια που έχουμε πλέον σαν προγραμματιστές από το ΑΙ, δεν μου έδινε πλέον δικαιολογία να μην κάτσω να φτιάξω από την αρχή κάτι.

Άρχισα λοιπόν να το χτίζω σε Java (Spring). To frontend ξεχωριστά είναι σε Vue (αν και αυτό είναι embedded μέσα στο jar). Άρχισα με την διαχείριση των φωτογραφιών, αλλά έχοντας στο μυαλό ότι η βάση δεδομένων θα πρέπει να είναι φτιαγμένη και για όλων των ειδών media. Μέσα σε έναν μήνα περίπου, είχα μια σχεδόν πλήρως usable εφαρμογή για την διαχείριση των φωτογραφιών.

Αφού άνοιξε η όρεξη και το project προχώρησε πολύ γρήγορα, έπιασα και το κομμάτι της μουσικής (audio/video). Σε μερικές βδομάδες ακόμη, το έφτασα σε επίπεδο που μπορούσα πλέον να μεταφέρω την μουσική μου συλλογή στην καινούργια εφαρμογή και να χρησιμοποιώ πλέον αυτή.

Βασική αρχιτεκτονική επιλογή, ήταν ότι το backend θα δούλευε αποκλειστικά με API μεθόδους. Το πρόβλημα της παλιάς εφαρμογής, ήταν το ότι δεν είχε στηθεί με αυτή την λογική. backend και frontend, ήταν ένα τεράστιο εννιαίο χάος. Τελικός σκοπός είναι να μπορεί κάποιος να πάρει το app και να το τρέξει απλά σαν backend, το οποίο θα του σερβίρει την media library (κάτι σαν αυτό που κάνει το Plex). Αν θέλει να φτιάξει ένα mobile app ή ένα εντελώς δικό του περιβάλλον, να μπορεί να το κάνει. Παίρνει το jar, το τρέχει όπου θέλει και φτιάχνει το frontend που θέλει, όπου θέλει.

Στο backend, η διαχείριση της library είναι ευέλικτη στο που έχεις τα media σου. Μπορείς να μετακινείς φακέλους και αρχεία, χωρίς να χάνονται τα οποιαδήποτε σχετικά δεδομένα αφορούν το κάθε αρχείο (βαθμολογίες, play data, metadata). Κάθε αρχείο έχει το hash του και μπορεί να καταλαβαίνει ότι ένα αρχείο έχει μετακινηθεί αλλού.

Ταυτόχρονα έχω φτιάξει ένα περιβάλλον (σε Vue όπως είπα), που δίνει πάρα πολλές δυνατότητες παρουσίασης των βιβλιοθηκών της μουσικής και των φωγογραφιών.

Για παράδειγμα στις φωτογραφίες υπάρχει δυνατότητα δημιουργίας slide shows (με δυνατότητα shuffle, που σπάνια βρίσκεις σε ανάλογες εφαρμογές), αλλά και παρουσίασης των φωτογραφιών σε γεωγραφικό χάρτη, χρησιμοποιώντας τα GPS data.

Στην μουσική έχω δώσει μεγάλη σημασία, στο να αναδεικνύονται τα albums. Υπάρχει ακόμη και mode που δείχνει το τραγούδι σαν βινύλιο που γυρνάει. Μπορείς να δημιουργήσεις custom playlists, να δημιουργήσεις και να σώσεις πολύπλοκα φίλτρα για να φτιάξεις smart playlists, να κάνεις μαζικό edit των metadata των τραγουδιών, να ψάξεις online και να καταχωρήσεις cover arts, να εμφανίζεις lyrics των τραγουδιών και ένα σωρό άλλες λειτουργίες και λεπτομέρειες.

Ταυτόχρονα με την δυνατότητα της προσωπικής μουσικής συλλογής, υπάρχει και σχετικός radio player με μία βάση δεδομένων, περίπου 60.000 ραδιοφωνικών σταθμών από όλο τον πλανήτη. Ενώ ο player έχει και σχετική retro εμφάνιση.

Η εφαρμογή τρέχει επίσης πολύ καλά και σε mobiles, στον browser. Φυσικά θα χρειαστεί να τρέχετε το backend σε κάποιον server που να είναι ορατός στο internet (αν θέλετε πρόσβαση εκτός του LAN σας)

Μπορείτε να δείτε περισσότερες λεπτομέρειες, αλλά και να κατεβάσετε δωρεάν την εφαρμογή, για όποια πλατφόρμα θέλετε, από εδώ. Υπάρχουν builds για linux (AppImage), για macOS (silicon και intel) και για windows. Για αυτά δεν χρειάζεται καν να εγκατασταθεί η Java. Αλλά μπορείτε να πάρετε και το jar αρχείο, για να το τρέξετε με την Java στο σύστημα σας. Ακόμη και να το τρέξετε μέσα σε docker container (για όσους θέλουν να το στήσουν σε κάποιον server τους). Αυτή είναι και η προτεινόμενη χρήση, για όποιον θέλει την εφαρμογή να τρέχει μόνιμα κάπου.

Αυτό που θα κάνετε για να χρησιμοποιείσετε την εφαρμογή είναι:

  • Κατέβασμα της εφαρμογής
  • Εκτέλεση και άνοιγμα του περιβάλλοντος της εφαρμογής στον browser. Η εφαρμογή θα πρέπει να συνεχίσει να τρέχει στο background, όσο την χρησιμοποιείτε
  • Δημιουργία χρήστη
  • Επιλογή που βρίσκονται τα media σας
  • Έναρξη scanning (το οποίο θα δημιουργήσει την βάση δεδομένων με τα αρχεία σας). Αναλόγως πόσο μεγάλη είναι η library σας, μπορεί να πάρει από μερικά λεπτά, μέχρι ώρες.

Write your comment

rocean (at) error.gr
rocean
error.gr
feed