mit c++ nen file saugen

qfat

Well-Known Member
hy,

wollte um in c++ nicht einzurosten mal nen kleines aber feines tool schreiben das rss news zieht und diese so ausgibt
das ich sie in mein fluxbox menu packen kann.
habe dazu so ne art script gefunden doch mir sagen die rss reader alle net zu (zu riesig und nicht das was ich brauche) deshalb
dacht ich mir so schwer kann das net sein (was für nen fehler :D ).
habe mir das so gedacht das ich den rss file ziehe und dann ist es ja praktisch fast nur noch string verarbeitung.
nun ist meine frage wie zieh ich den file?

und:
  1. klar geht es auch mit nem script. aber wollte die elegantere lösung wählen.
  2. wget zu integrieren wäre nur ne notlösung da ich dann für nen mini prog ne abhängigkeit hätte,
    und ist es wirklich so schwer nen file ausm netz zu ziehen? das muss doch direkt gehen?
  3. so gut bin ich net in c++ (bisl mehr als schulwissen, aber deswegen mach ich das ja) also wenn ich das internet
    neuerfinden muss damit das geht dann sagt es und ich nehm die notlösung ;)

ps: habe die c++ network tools gefunden (usr/ports/devel/ace) ist das was ich suche?

thx
 
Hi qfat,

vielleicht findest du in der Manualpage von fetch(3) etwas Brauchbares.

Ist zwar keine wirklich portable Lösung, aber vorerst weniger Aufwand, als die Funktion selbst mithilfe von Socket-Libraries auszuprogrammieren.

Viel Spaß beim Programmieren!

.align64
 
Zuletzt bearbeitet:
Hab mich da jetzt selber etwas beschäftigt und möchte mal zeigen, wie einfach das geht :D


Code:
#include <stdio.h>      /* FILE*, feof(), putchar(), fgetc() */
#include <stdlib.h>     /* NULL                              */
                                                                                                                                           
#include <sys/param.h>  /* (Wegen fetch.h)                   */
#include <fetch.h>      /* fetchGetURL()                     */
                                                                                                                                           
int main(int argc, char* argv[])
{
        FILE* fp = fetchGetURL("http://www.bsdforen.de/showthread.php?p=31738", NULL);
        if(fp == NULL)
                return 1; /* Probleme beim Oeffnen, abbrechen */
                                                                                                                                           
        while(!feof(fp))
                putchar(fgetc(fp));
                                                                                                                                           
        return 0;
};

Dieser Code tut nichts anderes, als eine Datei direkt über eine URL byteweise auszulesen und auszugeben.

edit: Zusatz: Das Programm muss dann natürlich noch gegen die fetch-Library gelinkt werden. Das geschieht mit dem gcc/g++ Schalter -lfetch, zB:

Code:
g++ -lfetch -o main main.c

.align64
 
Zuletzt bearbeitet:
huhu align,


'locate curl'

'man curl'


arbeitet auch mit URL's und easy in perl zu implementieren :) ...kennste bestimmt schon, :)
 
eh danke!
soviel hilfe hatte ich garnicht erwartet!
na dann werd ich erstmal lesen bevor ich mich entscheide hehe :D
danke!
 
@ maledictus
habe mir das mal angeguckt. und QT ist ja für graphische anwendungen,
will aber nen stinknormales konsolen programm.
oder hab ich da mal wieder was falsch verstanden.
 
wenn es dir nichts ausmacht, qt als abhängigkeit zu haben, ist das auch gut für konsolen programme zu gebrauchen IMO.
 
Qt hat durchaus Vorteile durch Portabilität und eben Objektorientierung, wobei letzteres in objektorientierten Programmen natürlich auch ein schlagendes Argument ist.

Trotzdem ist Qt als Dependency für einen kleinen RSS-Reader für meinen Geschmack etwas übertrieben.

Meine Empfehlung wär nach wie vor fetch(3) - einfach, ist eben nur bedingt portabel - oder libcurl (ganz vergessen :rolleyes: )

Viel Spaß

.align64
 
benutze jetzt fetch, allerdings warum ist das nur bedingt portabel?
(ist ja für mich nicht so wichtig, da es im enteffekt ja nur für mich ist.
wird wohl kaum noch ein anderer gebrauchen können.)
 
Bin mir momentan nicht sicher, aber meines Wissens ist fetch(3) eher eine (Free)BSD-eigene Sache, weil in der Manual-Page u.a. vorkommt "The fetch library first appeared in FreeBSD 3.0." und ich bei meiner Google-Suche nach fetch(3) zB unter Linux eher erfolglos war
(Korrigiert mich, wenn ich falsch liege :) )

Wenns allerdings nur für dich selbst ist, spielt Portabilität vermutlich ohnehin keine so große Rolle.

.align64
 
hehe ist ja nur für mich.
biete es aber jedem an ders haben will.
bin ja noch am coden also ma sehen ;)
 
also bin jetzt fertig! hehe geht super,
wenn jemand interesse am programm oder am quelltext hat,
ich schicke es ihm gerne zu :D
 
>das rss news zieht und diese so ausgibt
>das ich sie in mein fluxbox menu packen kann.
Wie kann ich mir das vorstrellen?
Inwiefern ins Menü packen?

Das zeug also automatisch aus verschiedenen Quellen "fetchen",
entsprechende Einträge ins Menü, und wenn man ein Item im Menü auswählt, kommt der Webbrowser hoch mit der entsprechenden URL?

Wenn du das hinbekommen hast, schön Ding, will auch:)
 
siehe http://www.bsdforen.de/attachment.php?attachmentid=352

und das mit dem menu geht ganz einfach:
Code:
Bsp. für das Fluxbox menu:

[submenu] (News)
      [include] (~/.fluxbox/news)
      [separator]
      [exec] (Refresh News) {rsssucker -b mozilla -f ~/.fluxbox/news [url]http://www.bsdforen.de/external.php[/url] http://www.heise.de/newsticker/heise.rdf}
[end]

bei dem menu bsp. hättest du ein untermenu "News" mit den Bsdforen.de und Heise News.
(siehe screenshot :D)

und weil es jetzt doch einige haben wollen hier ist es:
(wenns probleme, sowie verbesserungsvorschläge geben sollte, fragt einfach!)

file kann unter http://www.bsdberlin.org/~qfat gezogen werden
 
Zuletzt bearbeitet:
hehe bin auch grad dabei einen zu coden und sogar ausm selben grund ;) Nur in c. Bin auf diesen post durch google gestossen :o Aber wieso willste irgendwelche extra libs benutzen und net einfach mit socks die datei in ein array speichern und dann verarbeiten und in ne datei packen?
 
also 1. hab ich keine ahnung von socks sonst hätt ichs gemacht :D :D

und so gehts auch.
klar ist es mit socks eleganter,
habe mir ja auch schon literatur besorgt für nächste projekt! :D

aber kannst das ja umprogrammieren, steht dir ja frei!

ist ja das geile an der BSD Lizenz!

edit:
wenn du nen gutes howto hast,
bin wissens begierig ;)
 
Zuletzt bearbeitet:
welche C funktion entspricht denn "socks"? ich will auch eine datei ausm netz in ne array saugen, nur halt in C! hab schon überall rumgeguckt aber bin net fündig geworden.

Gruss Flas!!
 
fetch.h _ist_ C und nicht C++...

siehe zweite antwort auf diesen thread..

auf bald
oenone
 
Zurück
Oben