31st
Rss feeds με Yahoo Query Language και Yahoo Pipes HOWTO
Για αρχή, ας γνωρίσουμε λίγο τα εργαλεία που θα χρησιμοποιήσουμε.
• YQL (Yahoo Query Language) : είναι μια SQL-like γλώσσα για να μπορούμε να χρησιμοποιούμε δεδομένα από web services
• Yahoo Pipes : είναι ένα εργαλείο βασισμένο στη φιλοσοφία των pipes του unix, με το οποίο μπορούμε να επεξεργαστούμε web περιεχόμενο. Το output ενός module γίνεται input του επόμενου κτλ.
Για τις ανάγκες του howto, θα προσπαθήσουμε να δημιουργήσουμε feed για την αρθρογραφία του sportfm.gr και στη συνέχεια συγκεκριμένα για τα άρθρα του Αντώνη Πανούτσου.
YQL
Σε πρώτη φάση, βρίσκουμε την σελίδα η οποία περιέχει την αρθρογραφία. Στην περίπτωση μας είναι η http://www.sport-fm.gr/list/6.
Στη συνέχεια, αναλαμβάνει δράση η YQL console και το xpath, ώστε να ‘τραβήξουμε’ από την html σελίδα το κομμάτι που μας ενδιαφέρει. Αυτή είναι μια από τις πολλές δυνατότητες της YQL (Extracting HTML Content With XPath)
Η μορφή που θα έχει το query είναι :
select * from html where url=”http://www.sport-fm.gr/list/6” and xpath=[xpath που να μας οδηγεί στο κομμάτι του html αρχείου που περιέχει την αρθρογραφία]
Για να έχουμε το σωστό xpath, βρίσκουμε το element, ‘κάτω’ από το οποίο βρίσκεται το ζητούμενο κομμάτι html όπως και το element που περιέχει τις λεπτομέρειες για κάθε άρθρο. (xpath turorial)

Όπως βλέπουμε στην εικόνα, ο κώδικας με την αρθρογραφία βρίσκεται ‘κάτω’ από το element ul και έχει σαν class το ‘columns’, ενώ το element του κάθε άρθρου είναι το li με class to ‘no-photo’.
Στην console του YQL, μπορούμε να πειραματιστούμε και να βλέπουμε τα αποτελέσματα του query μας. Προτείνεται το tree view ενώ τα αποτελέσματα είναι στο results element.
Το ολοκληρωμένο query είναι
select * from html where url=”http://www.sport-fm.gr/list/6” and xpath=’//ul[@class=”columns”]/li[@class=”no-photo”]’
και στα αποτελέσματα μας βγάζει τα ζητούμενα στοιχεία για κάθε άρθρο: τον τίτλο, το link και τον συγγραφέα.
Yahoo Pipes
Τώρα περνάμε στα Yahoo Pipes. Ο κώδικας του pipe βρίσκεται στο http://pipes.yahoo.com/pipes/pipe.edit?_id=fd02784d324c59bab0dcf56f4a1c2652

Στην αρχή παίρνουμε τα δεδομένα με το YQL module, και τα αποτελέσματα τα διοχετεύουμε σε ένα loop module, στο οποίο έχουμε εισάγει το item builder, το οποίο θα μας δημιουργήσει το feed.
Για κάθε στοιχείο από τα αποτελέσματα του YQL query, παίρνουμε τα δεδομένα που μας ενδιαφέρουν (τιτλος,link και συγγραφέας) και τα τοποθετούμε στα αντίστοιχα elements του feed. Η μόνη ‘παραφωνία’ είναι ότι στο description εισάγουμε τον συγγραφέα αντί το ‘σώμα’ του άρθρου. Αυτό συμβαίνει γιατί στη συνέχεια θα φιλτράρουμε το feed σύμφωνα με το description και δε θέλουμε να δημιουργήσουμε επιπλέον element.
Επίσης επειδή το link είναι relative (/article/12345), εισάγουμε με το regex module στην αρχή του link το http://www.sportfm.gr.
Στη συνέχεια, αυτό που θα έπρεπε να κάνουμε είναι να φιλτράρουμε το feed ώστε τελικά να εμφανίζονται μόνο τα άρθρα του Πανούτσου. Επειδή τα pipes έχουν πρόβλημα με τo encoding, θα πρέπει πρώτα να ‘κάψουμε’ το feed με το feedburner και μετά να το φιλτράρουμε ώστε να μην έχουμε πρόβλημα με τα ελληνικά.
Θα χρειαστούμε και δεύτερο pipe, του οποίου ο κώδικας υπάρχει εδώ http://pipes.yahoo.com/pipes/pipe.edit?_id=a4ec73433298839873e4ee04592f370d

Εισάγουμε το feed με όλη την αρθρογραφία που ‘κάψαμε’ στο feedburner και κρατάμε μόνο όσα στοιχεία έχουν στο description τη λέξη ‘Πανούτσος’. Στη συνέχεια, από τις html σελίδες με το άρθρα που τελικά πέρασαν το φιλτρο, κρατάμε το κομμάτι που περιέχει το άρθρο. Πρέπει να βρούμε συγκεκριμένα σημεία στον κώδικα πριν την αρχή και μετά το τέλος του άρθρου, ώστε να ‘κόψουμε’ το κομμάτι που μας ενδιαφέρει και να το εισάγουμε στο description element του rss feed.
Το feed που προκύπτει μπορούμε να το εισάγουμε στον rss reader της επιλογής μας (google reader ftw!), μέσω twitterfeed να το ποστάρουμε στο twitter και πολλά άλλα.
Αυτή ήταν η διαδικασία, με λίγο πειραματισμό θα δείτε οτι δεν είναι δύσκολο να φτιάξετε τα δικά σας feedακια.
Για απορίες, εδώ είμαστε, αφήστε σχόλιο!





