Buchempfehlung
Visual Basic 6 Kochbuch
Visual Basic 6 Kochbuch
Viele praktische Tipps zum Programmieren mit Visual Basic 6, die sich oft auch auf FB übertragen lassen. [Mehr Infos...]
FreeBASIC-Chat
Es sind Benutzer im FreeBASIC-Chat online.
(Stand:  )
FreeBASIC bei Twitter
Twitter FreeBASIC-Nachrichten jetzt auch über Twitter erhalten. Follow us!

fb:porticula NoPaste

Info
Info / Hilfe
Liste
Übersicht / Liste
Neu
Datei hochladen
Suche
Quellcode suchen
Download
Dateidownload

mini-atom-reader (braucht curl)

Uploader:MitgliedThe_Muh
Datum/Zeit:06.01.2010 22:50:31

'getestet mit feeds von heise und golem
'Copyright (c) 2009 The_Muh


'Hiermit wird unentgeltlich, jeder Person, die eine Kopie der Software

'und der zugehörigen Dokumentationen (die "Software") erhält, die

'Erlaubnis erteilt, uneingeschränkt zu benutzen, inklusive und ohne

'Ausnahme, dem Recht, sie zu verwenden, kopieren, ändern, fusionieren,

'verlegen, verbreiten, unterlizenzieren und/oder zu verkaufen, und

'Personen, die diese Software erhalten, diese Rechte zu geben, unter den

'folgenden Bedingungen:

'Der obige Urheberrechtsvermerk und dieser Erlaubnisvermerk sind in alle

'Kopien oder Teilkopien der Software beizulegen.



'DIE SOFTWARE WIRD OHNE JEDE AUSDRÜCKLICHE ODER IMPLIZIERTE GARANTIE

'BEREITGESTELLT, EINSCHLIESSLICH DER GARANTIE ZUR BENUTZUNG FÜR DEN

'VORGESEHENEN ODER EINEM BESTIMMTEN ZWECK SOWIE JEGLICHER RECHTSVERLETZUNG,

'JEDOCH NICHT DARAUF BESCHRÄNKT. IN KEINEM FALL SIND DIE AUTOREN ODER

'COPYRIGHTINHABER FÜR JEGLICHEN SCHADEN ODER SONSTIGE ANSPRÜCHE HAFTBAR

'ZU MACHEN, OB INFOLGE DER ERFÜLLUNG EINES VERTRAGES, EINES DELIKTES

'ODER ANDERS IM ZUSAMMENHANG MIT DER SOFTWARE ODER SONSTIGER VERWENDUNG

'DER SOFTWARE ENTSTANDEN.

'obige lizenz gilt für den gesamten code, außer der funktion "replace", diese ist von ThePuppetMaster

Function replace(ByVal V_Data As String, ByVal V_Expression As String, ByVal V_ReplaceBy As String) As String
    Dim X As Long
    Dim SL As Long
    Dim D as String
    D = V_Data
    SL = Len(V_Expression)
    X = 0
    Do
        X = X + 1
        If X > Len(D) - SL + 1 Then Exit Do
        If Mid(D, X, SL) = V_Expression Then
            D = Mid(D, 1, X - 1) & V_ReplaceBy & Mid(D, X + SL)
            X = X - (SL  - 1)
            If X < 0 then X = 0
        End If
    Loop
    Return D
End Function

type news_type
    title as string
    link as string
    summary as string
    updated as string
end type

dim news() as news_type
dim nr as integer
Nr = FREEFILE
open pipe "curl -s ""http://rss.golem.de/rss.php?tp=oss&feed=ATOM1.0""" FOR INPUT AS #Nr
DIM AS STRING s,  value
dim as integer parse, add, posi
dim id as integer
dim tag as string
DO UNTIL EOF(Nr)
    LINE INPUT #Nr, s
    if instr(s,"<feed") then
        parse = 1
    end if
    if instr(s,"</feed>") then exit do
    if parse = 1 then
        posi = instr(s,"<")+1
        tag = mid(s,posi, instr(s, ">")- posi)
        if instr(tag, "type=") then
            dim content_type as string
            posi = instr(tag, " ")
            content_type = mid(tag, instr(tag,"""")+1, len(tag)- instr(tag,"""")-1)
            tag = trim(left(tag, posi))
            value = right(s, len(s) - instr(s, ">"))
            value = left(value, instr(value, "<") -1)
            if content_type = "html" then
                do
                    posi = instr(value, "&lt;")
                    if posi then
                        dim as string htmltag
                        htmltag = mid(value, posi, instr(value, "&gt;")+4 - posi)
                        value = replace(value, htmltag, "")
                    else
                        exit do
                    end if

                loop

            end if
        elseif instr(tag, " ") then
            posi = instr(tag, " ")
            value = right(tag, len(tag)- posi)
            tag = left(tag, posi)
        else
            value = right(s, len(s) - instr(s, ">"))
            value = left(value, instr(value, "<") -1)
        end if

        if tag = "/entry" then
            add = 0
        end if

        if add = 1 then
            select case tag
            case "title"
                news(id).title  = value
            case "id"
                news(id).link = value
            case "summary"
                news(id).summary = value
            case "updated"
                dim as string datum, uhrzeit
                posi = instr(value, "T")
                datum = left(value, posi-1)
                uhrzeit = mid(value,posi +1, len(value) - instr(value, "+"))
                news(id).updated = datum &" - "& uhrzeit
            end select
        end if
        if instr(s, "<entry>") and add = 0 then
            id = ubound(news)+1
            redim preserve news(id)
            add = 1
        end if
        if tag = "entry" and add = 0 then
            id = ubound(news)+1
            redim preserve news(id)
            add = 1
        end if
    end if
LOOP
CLOSE Nr

for i as integer = 1 to ubound(news)
    ? string(len(str(ubound(news)))-len(str(i)), "0") & i &" - "& news(i).title
    ? string(len(str(ubound(news))), " ") & " | " & news(i).updated
    ? string(len(str(ubound(news))), " ") & " | " & news(i).summary
    ? ""
next