libconsolewarsapi-java - javabibliothek um komfortabel auf die API zuzugreifen

cerpin

L12: Crazy
Thread-Ersteller
Seit
16 Apr 2006
Beiträge
2.370
Javabibliothek um auf die consolewars.de API zuzugreifen.

Mögliche Einsatzzwecke

  • Backend für Android Apps
  • als Basis für die Entwicklung von Desktopclients mit erweiterter Funktionalität
  • als Basis für unterschiedliche Tools (Statistiken/Analysen, Filter von Kommentaren mit bestimmten Wörtern, Twitter DirectMessage? wenn man neue PN erhalten hat etc.)

Version 0.1 entspricht dem vollen Funktionsumfang der consolewars.de API 1.0
zum jetzigen Zeitpunkt ist es möglich:


Blogs

  • einzelne Blogs oder
  • Liste von Blogs aufzurufen (gefiltert nach Newsblogs oder normalen Userblogs)
News

  • einzelne News oder
  • Liste von News aufzurufen (optional gefiltert nach Konsolenhersteller)
Kommentare

  • News- und Blogkommentare lesen
PNs

  • Nachrichten aus dem Posteingang oder
  • aus dem Gesendete Nachrichten Ordner lesen

Dokumentation zur API selbst findet man unter
http://www.consolewars.de/api/documentation.php

weitere Features der library

  • News, Blogs, Kommentare, PNs werden auf Klassen abgebildet
  • relative Zeitangaben für Blogs, News, Kommentare, PNs (Beispiel: vor 3 Minuten, vor 2 STunden, vor 5 Tagen etc.)

was im Moment fehlt

  • Exception Handling (eigene Exceptions, die printStacktraces sinnvoll weiterleiten)
  • Kommentartext, Newstext, Blogtext enthält HTML-Tags, dieser sollte ersetzt werden (z.B.
    mit \n im String)

Projektpage: http://code.google.com/p/libconsolewarsapi-java/

Anmerkung: sourcecode-package und bin-package liegen als jar-Archive zum Download bereit. Der Sourcecode wird im Laufe der nächsten Tage ins SVN importiert. Falls jmd den Sourcecode mitpflegen möchte bitte kontaktieren. Danke! :)
 
Na, das ist doch was!

Dafür steht einem Plattformunabhängigem CW-Programm nichts mehr im Wege.
Selbst wenn die ersten Entwicklungen Wochen oder Monate brauchen werden, so bin ich echt begeistert, dass jetzt schon so eine Lib zur Verfügung steht, was zeigt, dass Potential vorhanden ist. 8)
 
Sehr schön!

Ich werd mir dann den Code mal ansehn, vielleicht fällt mir noch was dazu ein...
 
Jungs, ihr seid spitze :) Das wird immer besser. Bald kommt der zweite Teil der API mit der ihr dann schreibend zugriff auf CW habt ;)
 
Hmmm cerpin, ich hab mir dein Werk gerade mal angesehen und: es funktioniert! :D
Ich hab nur ein kleines Problem: news.getArticle() liefert nur einen Leerstring zurück und wenn ich das richtig sehe, versuchst du den Artikeltext direkt aus "getnewslist" auszulesen, der hier aber nicht übertragen und damit nie gesetzt wird?
Imho ist es eh besser für den Speicherverbrauch die Newstexte erst zu holen, wenn sie wirklich gebraucht werden...

Just my 2 cents :D

P.s.
Weder android noch WebOs gefallen mir :bang:
 
hey :)
Hmmm cerpin, ich hab mir dein Werk gerade mal angesehen und: es funktioniert! :D
puh :)
Ich hab nur ein kleines Problem: news.getArticle() liefert nur einen Leerstring zurück und wenn ich das richtig sehe, versuchst du den Artikeltext direkt aus "getnewslist" auszulesen, der hier aber nicht übertragen und damit nie gesetzt wird?
ja, dass getnewslist keinen Artikeltext zurückliefert ist mir bekannt. Da sich abgesehen davon getnewslist und getnews (äquivalent dazu auch getblogs und getblogslist) nicht unterscheiden, wird beides auf die selbe Weise geparsed und repräsentiert (nämlich als News-Objekt).
Imho ist es eh besser für den Speicherverbrauch die Newstexte erst zu holen, wenn sie wirklich gebraucht werden...
getnewslist in der lib ruft getnewslist.php auf, und diese request liefert garnicht erst den Newsartikel, die xml datei wird jedoch aus praktischen Gründen wie bei getnews geparsed
P.s.
Weder android noch WebOs gefallen mir :bang:
android hab ich mir angeguckt, sieht nice aus, aber atm keine Zeit und keinen Nerv dafür ^^
 
Changelog Version 0.2


  • Event Handling für neue Blogs und News. BlogUpdateListener oder NewsUpdateListener in deiner eigenen Anwendung implementieren und bei neuen News oder Blogs Event Messages erhalten (Abfrageinterval einstellbar)
  • News, Blogs, Kommentare abfragen, die nicht älter als ein bestimmtes Datum/Uhrzeit sind
  • Exception Wrapper ConsolewarsAPIException eingeführt
  • simpler html2plaintext converter um unformatierten Text zu bekommen
was momentan noch fehlt


  • Event Handling für Kommentare und PNs
  • html2plaintext converter erweitern (dürfte im Moment einige HTML-Tags ignorieren)
  • beim Event Handling landen die Exceptions momentan ins Nirvana, müsste überarbeitet werden
  • schreibender Zugriff auf die API (sobald entsprechende Funktionen in der API freigegeben werden)


Projektpage: http://code.google.com/p/libconsolewarsapi-java/
 
heyhio :)

ich: infostudent im 2. semester und an unserer uni haben wir java als standartprogrammier sprache drinne (ka, weis der geier warum ;-) )

egal: ich wollte um meine eigenen kenntnisse zu erweitern und cw was gutes zu tun ein einfaches javaprogramm schreiben um newsblogs, blogs und news ab zu rufen (ganz einfach! mehr erstmal nicht! >> anti-trollmodus^^ )

und deshalb hab ich an dich cerpin ein spezielle frage:


weitere Features der library

  • News, Blogs, Kommentare, PNs werden auf Klassen abgebildet
  • relative Zeitangaben für Blogs, News, Kommentare, PNs (Beispiel: vor 3 Minuten, vor 2 STunden, vor 5 Tagen etc.)
laut dem muss ich mich also nicht extra in xml einarbeiten oder doch oO?

sonst würde ich einfach mal mit papier und bleistift anfange und mir ein paar diagram zeichnen :O
 
heyhio :)

ich: infostudent im 2. semester und an unserer uni haben wir java als standartprogrammier sprache drinne (ka, weis der geier warum ;-) )

egal: ich wollte um meine eigenen kenntnisse zu erweitern und cw was gutes zu tun ein einfaches javaprogramm schreiben um newsblogs, blogs und news ab zu rufen (ganz einfach! mehr erstmal nicht! >> anti-trollmodus^^ )

und deshalb hab ich an dich cerpin ein spezielle frage:


laut dem muss ich mich also nicht extra in xml einarbeiten oder doch oO?

sonst würde ich einfach mal mit papier und bleistift anfange und mir ein paar diagram zeichnen :O

soweit ich das jetzt als noob verstanden habe, hat er das ganze mit SAX geparst also selbst machen müsstest das nicht mehr.
Wenn man sich die source mal ansieht hat er schon sehr viel gemacht. in prinzip wenn man java versteht (davon bin ich noch meilenweit entfernt noch am java bücher lesen bin) hat cerpin schon den motor ausgeliefert und man muss sich nur noch um den rest kümmern.
 
soweit ich das jetzt als noob verstanden habe, hat er das ganze mit SAX geparst also selbst machen müsstest das nicht mehr.
Wenn man sich die source mal ansieht hat er schon sehr viel gemacht. in prinzip wenn man java versteht (davon bin ich noch meilenweit entfernt noch am java bücher lesen bin) hat cerpin schon den motor ausgeliefert und man muss sich nur noch um den rest kümmern.



okay werde ich ja sehen, aber zu aller erst muss ich mir alle tausend methoden abrufen und wissen was sie wollen :blushed:

soweit bin ich nicht weg, schließlich hatte ich ja Programmieren mit Java im 1. Semester und bin gut dabei gewesen :) >93% der übungspunkte und hatte vorher schon erfahrung mit Delphi :)

aber fremder quellcode, besonders wenn er über mehrere .java's geht ist echt nicht einfach :(

auf zum zeichenbrett!


€dit: welche IDE nutzt du?
 
Zuletzt bearbeitet:
Das Schöne an solchen Libraries respektive DLL's ist ja, dass du den Quelltext nicht verstehen musst. Es reicht, wenn du weißt welche Objekte sie dir zur Verfügung stellt und welche Methoden und Eigenschaften diese haben um an benötigte Daten zu kommen. In diesem Fall ein exzellentes Beispiel für Datenkapselung und Abstraktion.

Wer nun eine Anwendung schreiben möchte muss sich somit hauptsächlich um die GUI kümmern, Events und Exceptions abfangen und bearbeiten und hat mit der Kommunikation zum CW-Server rein gar nichts mehr zu tun.
 
Das Schöne an solchen Libraries respektive DLL's ist ja, dass du den Quelltext nicht verstehen musst. Es reicht, wenn du weißt welche Objekte sie dir zur Verfügung stellt und welche Methoden und Eigenschaften diese haben um an benötigte Daten zu kommen. In diesem Fall ein exzellentes Beispiel für Datenkapselung und Abstraktion.

Wer nun eine Anwendung schreiben möchte muss sich somit hauptsächlich um die GUI kümmern, Events und Exceptions abfangen und bearbeiten und hat mit der Kommunikation zum CW-Server rein gar nichts mehr zu tun.

tja das ist das gute an der arbeit von cerpin man muss sich jetzt "nur noch" um den rest kümmern.

ich hab mich nur ein bisschen eingelesen weils mich interessiert wie das ganze gelöst wurde. naja für praktische anwendenung bin ich mit meinen wissen ja noch weit entfernt aber da ich schon immer die angewohnt gehabt habe mir wissen kreuz und quer durch den gemüsegarten anzueignen und nicht immer mit schritt a anzufangen und alles der reihe nach abzuarbeiten, wars für mich interessant wie das ganze aufgebaut ist.

ja ich weiß kommische methode etwas zu lernen wenn man sich gleich etwas schwierigers ansieht als ein "hallo welt" programm aber mir macht das eigentlich spaß so. tja und irgendwann komm ich doch zum hallo welt programm zurück weil mir das andere noch zu hoch ist xD

@PapstJL4U

ich selbst verwende Eclips wurde im SDK empfohlen da die quellen für Eclips passen.
 
tja das ist das gute an der arbeit von cerpin man muss sich jetzt "nur noch" um den rest kümmern.

Ich will mal eine kleine Einstiegshilfe geben.

In deiner Anwendung erstellst du dir ersteinmal ein Objekt von der Klasse API. Diese bietet dir eigentlich auch schon alle Methoden(Funktionen), die du benötigst um Daten von CW abzufragen.

Für die Abfrage von News beispielsweise so:

API cwAPI = new API('Dein ApiKey als String');
ArrayList<News> newslist = cwAPI.getNewsList(10, 0);

Nun kannst du eine Liste der News in deiner ArrayList, die die abgefragte Menge an News als Newsobjekte bereithält. Wie du nun an Daten der News selbst kommst, musst du dir in der Klasse News anschauen.

Leider kenne ich mich mit Java bzw. der Syntax gar nicht aus aber so etwas in der Art müsste klappen:

foreach (News news in newslist)
{
print news.getTitle();
}

Dein API-Onjekt bietet also nahezu die gleichen Methoden, wie die ConsolewarsAPI selbst es tut, mit dem Unterschied, dass du bereits fertige News-, Blog-, Message-Objekte zurückbekommst, die dir den Zugriff auf deren Daten auch wieder über Methoden erlauben.

Also erst die benötigte Methode des API-Objekts heraussuchen, schauen, welchen Objekttyp du geliefert bekommst und dann die Objektklasse näher anschauen um an Daten zu kommen.

Ich hab das jetzt mal so genau geschrieben, da ich nicht weiß, die weit du bist, was das Arbeiten mit Objekten angeht. Ich selbst habe auch nie mit Hello World angefagen aber ohne entsprechende Einstiegshilfe bin ich, so wie du, immer wieder sehr nah an Hello World gelandet. ;)

Viel Spass dann.
|as|
 
Das Schöne an solchen Libraries respektive DLL's ist ja, dass du den Quelltext nicht verstehen musst. Es reicht, wenn du weißt welche Objekte sie dir zur Verfügung stellt und welche Methoden und Eigenschaften diese haben um an benötigte Daten zu kommen. In diesem Fall ein exzellentes Beispiel für Datenkapselung und Abstraktion.

Wer nun eine Anwendung schreiben möchte muss sich somit hauptsächlich um die GUI kümmern, Events und Exceptions abfangen und bearbeiten und hat mit der Kommunikation zum CW-Server rein gar nichts mehr zu tun.


Zwar ist das alles wirklich wunderschön gelöst...private variablen und immer getMethodes, aber ich hab ehrlich gesagt noch keine gute javadoc gesehen....:blushed: ist zwar schön wenn steht: wirft ein objekt des typs X zurück, aber ohne reelle verbindung kann ich damit auch nix anfangen :shakehead:
deswegen schau ich mir die lib selber nochmal an...also nur das grundsätzliche wie API.java und News, Blogs, NewsBlogs :D
von web2.0 wird noch nicht die rede sein,....will ja nciht für die 2. welle appus verantwortlich sein :ugly:
 
Wer braucht ne Doc, wenn er den Quellcode hat? ;)

Vermutlich würde ein Klassendiagramm mehr bringen als 'ne JavaDoc aber ich weiß nicht ob gewisse IDE's das bei Java unterstützen. Wär ja ganz nett.
 
Wer braucht ne Doc, wenn er den Quellcode hat? ;)

Vermutlich würde ein Klassendiagramm mehr bringen als 'ne JavaDoc aber ich weiß nicht ob gewisse IDE's das bei Java unterstützen. Wär ja ganz nett.



es gibt einige plugins, die einem aus den classen und methoden automatisch soetwas erstellen....hab "schwierigkeit" ist ja, das mein weg ist: Sachverhalt>Diagram>Klassen>Projekt wenn ich den weg habe ist das alles okay...aber aktuell hab ich ja Sachverhalt>*magic*>Klassen>..... ;-)
egal ich schau mal nach einem plugin, dass ein Diagramm erstellen kann;-)
 
Leider kann ich deine Probleme nicht nachvollziehen. Wo bei dir ein *magic* steht, ist ja eigentlich nichts, mit dem du es ersetzen könntest. Die Klassen sind ein Ersatz für die Schnittstelle, die CW selbst bietet. Da steckt keine Magie dahinter, es funktioniert ohne Umstände und man muss das alles, wie gesagt, auch nicht verstehen, sondern sich nur die public-Methoden ansehen um zu wissen, wie man an Daten kommt.
 
Leider kann ich deine Probleme nicht nachvollziehen. Wo bei dir ein *magic* steht, ist ja eigentlich nichts, mit dem du es ersetzen könntest. Die Klassen sind ein Ersatz für die Schnittstelle, die CW selbst bietet. Da steckt keine Magie dahinter, es funktioniert ohne Umstände und man muss das alles, wie gesagt, auch nicht verstehen, sondern sich nur die public-Methoden ansehen um zu wissen, wie man an Daten kommt.


ich mein ja nicht, dass ich es nicht verstehe :blushed:..nur ist es wesentlich einfacher alles zu verstehen, wenn man das selber gemacht hat in dem fall steht magic nur für die Diagramme, die ich normalerweise im kopf habe, wenn ich etwas programmiere^^, aber die ich hier erstmal erstellen muss
 
In SAXBlogParser.java in Zeile 80 fol einfügen:

else if(qName.equals("description")) {
getTempItem().setDescription(tempValue);
}

Sonst gibts beim Zugriff auf die Blogbeschreibung ne NullPointerException ;)
Hat mich 15min meiner kostbaren Lebenszeit gekostet xD
 
Zurück
Top Bottom