Σε προηγούμενο post αναφέρθηκα ήδη σε ένα στρώσιμο της CSS που έχει αρχίσει. Ταυτόχρονα όμως έπιασα και δύο πολύ σημαντικά στοιχεία της εφαρμογής. Το ένα έκατσε εντελώς τυχαία.
Το πρώτο στοιχείο, είναι αυτό που λέω συνέχεια ότι πρέπει να γίνει. Το search. Κι έτσι ο συγκεκριμένος κώδικας που ήταν σχετικά χαοτικός και παλιομοδίτικος, έφαγε ένα γερό χτένισμα. Πλέον είναι πολύ πιο καθαρός και απλός. Αποτέλεσμα αυτού ήταν να έρθει να πέσει και η λύση του προβλήματος σαν ώριμο φρούτο, εκεί που με άγχωνε και δεν μπορούσα ούτε καν να σκεφτώ σε γενικές γραμμές πως θα γίνει.
Σε πρώτη φάση μπορεί ο χρήστης να φτιάξει σύνθετα queries αναζήτησης. π.χ. να θέλει να εμφανίσει όσα τραγούδια είναι Rock ή Metal και ταυτόχρονα να έχουν βαθμολογία 5 αστεράκια, όπως φαίνεται και στην εικόνα. (μην δίνετε σημασία στην εμφάνιση. Πειραματικό είναι ακόμη). Μένει τώρα να γίνει πιο δυναμική η φάση, να μπορείς να προσθέτεις και να αφαιρείς όσα πεδία αναζήτησης θες. Και τέλος να μπορείς να κάνεις save/load αυτά τα queries, σαν τις smart playlists που έχει το itunes.
Τυχαία όμως έπεσα σε ένα post στο group των Ελλήνων προγραμματιστών στο Facebook, το οποίο είχε αναφορά περίπου σε πρόβλημα που έχει και το Parrot Tunes. Και όχι μόνο, γιατί αυτό το έψαχνα και σε μια εφαρμογή διαχείρισης αρχείων που είχα κάνει πριν αρκετά χρόνια. Τότε όπως φάνηκε έψαχνα λάθος και δεν έβγαλα άκρη ή μου φαίνονταν πολύ δύσκολο.
Το Parrot Tunes, λοιπόν, έχει ένα πρόβλημα μέχρι τώρα, που κάνει πολύ δύσκολη την αρχική εγκατάσταση. Τα αρχεία του χρήστη (audio/video) συνήθως βρίσκονται σε directory που είναι εκτός του web path. Για να μπορεί να τα δει ο browser πρέπει να κάνεις αλχημείες. Να προσθέσεις alias στο virtualhost του apache. Και αυτό πάλι δεν ξέρω καν να θα μπορεί να παίζει απροβλημάτιστα σε όλους. Φίλος που προσπάθησε να εγκαταστήσει την εφαρμογή είχε προβλήματα.
Βρέθηκε η λύση λοιπόν. Αντί να παίρνω τα κανονικά url των αρχείων για να τα παίξει ο browser, τα διαβάζω μέσω PHP που μπορεί να έχει πρόσβαση σε όλο το filesystem του linux. π.χ. αντί να βάζω το url του κάθε video, καλώ το αρχείο μαζί με το id του τραγουδιού serveFile.php?id=xxxxxxx. Το serveFile.php θα στριμάρει πίσω το αντίστοιχο audio/video αρχείο σε binary.
Η ιδέα είναι αυτή περίπου. Στον απλό κώδικα που έγραψα εγώ όμως στην αρχή (fopen, fpassthru) είχα θέματα με τον safari, ο οποίος δεν έπαιζε τα video, αλλά μόνο τα audio. Ενώ και ο chrome που τα έπαιζε όλα, δεν σου έδινε την δυνατότητα να πας σε άλλα χρονικά σημεία του τραγουδιού. Επίσης ήταν αρκετά αργό.
Η λύση βρέθηκε με τον κώδικα που βρήκα εδώ, ο οποίος σπάει το αρχείο σε κομμάτια και το στριμάρει σωστά. Και δεν έχει και κανένα πρόβλημα με τον safari. Όλα φαίνονται τέλεια μέχρι τώρα που το δοκιμάζω.
Μετά από αυτό, η εφαρμογή θα είναι πλέον σχεδόν plug and play.
Η νέα έκδοση του Parrot Tunes, μαζί με όλες αυτές τις αλλαγές, θα είναι σύντομα online για όποιον θέλει να δοκιμάσει.