ugrás a tartalomhoz

Mindenkinek saját feedet!

Szántó Ádám · 2006. Már. 26. (V), 13.00
Mióta megjelentek az RSS hírforrások és a különféle olvasók, azóta jelentősen könnyebb átolvasnunk a napi tartalmat. Ámde számtalan helyen nincs RSS, vagy nem olyan, amilyennek mi akarnánk. Én például kíváncsi volnék arra is, hogy egy blogbejegyzéshez hány hozzászólás van, a legtöbb csatorna azonban ezt nem tartalmazza. A különböző webes fórumok többségének szintén nincs RSS hírforrása. Erre kínál megoldást a nemrégiben megjelent Feed43 (Feed For Free) nevű szolgáltatás, mely az eredeti HTML tartalomból sablon szerint szűri ki az RSS tartalmát.

A szolgáltatást használva a lelkes netezőnek nincs más dolga, mint megnézni a HTML kódot, megkeresni benne az ismétlődő elemeket (pl. blogbejegyzés, hír, fórum hozzászólás stb.), majd a szabályszerűségek szerint bepötyögni, és már kész is a saját RSS. A következőkben megmutatom, hogy hogyan a legegyszerűbb feedet gyártani ezzel a szolgáltatással.

Az első benyomás

Először is meglátogatjuk a Feed43 weboldalát és örömmel konstatáljuk, hogy RSS gyártásához nem kell beregisztrálnunk. Ez azért jó, mert rögtön elkezdhetünk "játszani" a szolgáltatással, ha tetszik, amit csináltunk, levédhetjük jelszóval, vagy ha később regisztrálunk, betehetjük saját listánkba. Végeredmény példaként megnézhetitek saját kész csatornáimat. Szóval ha regisztrálunk, a kész RSS-ek mindenki számára felkínálhatóak egy listából, továbbá szép végeredményt kapunk, a stíluslapoknak köszönhetően.

Lássuk a feedgyártó felületet. Elsőre szembeötlik alul az apróbetűs link: "Switch to advanced mode". Ez annyit jelent, hogy mind a 4 lépés egyből látszik és hagy minket belepiszkálni az összes beállításba, abba is, aminek az eredményéről a gép még nem tud semmit. Írjunk be egy webcímet, például a Weblabor Blogmarkokét. A cél az lesz, hogy az RSS azonnal kapjon linket a látogatandó helyre és az is látszon, hogy ki a beküldő, hány hozzászólás van.

Semmi és valami

Megnyomjuk a gombot és megkapjuk a kiszínezett HTML-kódot. Igazából ezt a felületet kevéssé találtam alkalmasnak a kódrészletekből való sablongyártásra, mivel kicsi a hely, kevés kód fér el. Inkább javaslom a böngésző saját "View Source" funkcióját e célra. Ugyanez vonatkozik a sablon begépelésére, azt is célszerűbb kedvenc szövegszerkesztőnkből csinálni.

Szóval kezdjük is el. Görgetünk egészen az első fontos információdarabig és kimásolunk egy kis darab kódot.
<div class="node">
<h2 class="title"><a href="http://weblabor.hu/blogmarkok/12436">Ajax Lessons » Ajax Workshops Archive</a></h2>
<div class="metainfo"><a href="http://weblabor.hu/tagok/576" title="Weblabor szerkesztő" class="admin-user">Granc Róbert</a> &ndash; 07.37 &ndash; <a href="http://weblabor.hu/blogmarkok">Blogmarkok</a></div>
<div class="content"><div class="whateffect"> Még egy Ajax tanfolyam </div></div>
<div class="links"><div class="readmore"><a href="http://weblabor.hu/blogmarkok/latogatas/12436" title="http://www.ajaxlessons.com/ajax-workshops-archive/">látogatás</a></div><span class="numcomments"><a href="http://weblabor.hu/blogmarkok/12436/hozzaszolas" title="Nincs még hozzászólás" class="comments-pri">0</a></span></div>
</div>
FF-ben például egészen könnyen meggyőződhetünk arról, hogy például a <div class="node"> valóban csak a blogmarkok előtt szerepel és sehol máshol, vagyis nem jönnek be a kész feedünkbe furcsaságok. View Source-ban Ctrl-F, beírjuk, hogy <div class="node">. Erre kidobja az első találatot. Ezután mi a Find Previous gombot nyomjuk meg. Szerencsénk van, elugrik az oldal aljára, éppen az utolsó blogmarkhoz. Tehát a kiindulópontunk megvan.

Most tehát innen kezdve írjuk meg a sablont (pattern). Kétféle jelölést használunk, a {*}-ot és a {%}-ot. Mindkettő bármilyen változó szövegrészletet tartalmazhat, a különbség az, hogy a {%} olyan valami, ami kell nekünk az RSS-be, például cím, szerző, hozzászólások száma stb., a {*} pedig olyasmi, amit eldobunk rögtön, pl. hosszabb felesleges kódrészlet. A legegyszerűbben úgy gondolhatunk rájuk, mint valami ({%}) és semmi ({*}).

A letisztult pattern

Tehát <div class="node">-dal kezdünk, utána semmi ({*}). Soremeléseket is csak {*}-gal tudunk helyettesíteni, tehát soremeléssel nem. Utána viszont üthetünk egy Entert, hogy átláthatóbbá váljék. Próbálkozzunk azzal, hogy az egész <h2 class="title"></h2> belsejét kiszedjük.
<div class="node">{*}
<h2 class="title">{%}</h2>
Hát ez nem volt valami bonyolult. Viszont pár jellegzetességét meg kell szokni. Az egyik ez az Enterezés, amit említettem. Egy másik, hogy amikor csak tehetjük, érdemes minden "tölteléktartalmat" kicsillagozni. Ha a "metainfo" nevű részből például csak a szerző neve érdekel minket, akkor az alábbi módon nézhet ki a patternünk:
<div class="node">{*}
<h2 class="title"><a href="{%}">{%}</a>{*}
<div class="metainfo">{*}<a {*}>{%}</a>
További változtatás, hogy a cím mellett elmentettük a linket is. Szóval lehet ezzel játszogatni, addig kell új sorokat hozzávenni a sablonhoz, amíg elég információt nem dob ki az alsó dobozba.

A babérok learatása

Ami ezután jön, az már kicsit magától értetődőbb. Értelemszerűen kitöltjük a mezőket, amik az RSS hírforrást azonosítják, vagy jó esetben a gép kitölti helyettünk. A következő három mezőben már aktívan használhatjuk a HTML-ből nyert adatokat, a {%szám} jelöléssel, azzal a számozással, amit a gép kidobott magából.

Ha ez mind megvan, a Preview gombra való kattintással már létre is jön a csatorna. Ez fontos, ezen a felületen hiába is keressük a "Save" gombot (ahogy például én is sokat kerestem), mivel a Preview gomb elmenti és rögtön az elmentett RSS-t mutatja. Ezután kapunk egy szép hosszú számot, mint feednév, de el is nevezhetjük valahogy, és akkor aztán végképp barátságos linken férhetünk hozzá.
 
1

Freeblog?

Anonymous · 2006. Már. 28. (K), 08.43
Érdekes, hogy a freeblogos lapokkal próbálkozva én mindig 500-as timeout hibát kapok, holott a böngészőm vidáman betölti az oldalakat. Lehet hogy a freeblog kollektívan blockolja a feed43-t? Csúnya lenne.
2

Tüköroldal

attlad · 2006. Már. 28. (K), 17.47
Nem próbáltam a fenti dolgot, de ha blokkolná is, a feed43-nak könnyedén megadhatnád az oldal mirrorjának a címét.
3

hogyan is?

Szántó Ádám · 2006. Már. 28. (K), 19.33
Azt hogyan is kéne megadni?
4

Csinálsz hozzá

attlad · 2006. Már. 28. (K), 23.53
Ha nem tudsz ilyesmi webes proxy oldalról, akkor nem nehéz összehozni egy ilyet a saját tárhelyeden/szervereden, egyszerű példa:

<?php echo file_get_contents('http://example.org/'); ?>
Némi cache-elés nem árthat bele.