Über cookies, bits & bytes und der Frage nach 42.

Rapidshare API auf sourceforge

Februar 16th, 2010 byvon Flo

Nachdem ich noch ein wenig Arbeit investiert habe um den Upload-Vorgang endlich auf ein akzeptables Niveau zu bringen habe ich mir gedacht, dass wohl mehr Leute davon profitieren könnten wenn ich das Werk mal auf sourceforge stelle.
In Zukunft findet man neue Versionen der Bibliothek also nicht mehr (nur) hier.

Neu bei dieser Version …
- Downloads und Uploads haben vom Konzept her gleiche Callback-Handler.
- Upload ist nicht mehr Sync und braucht auch keine DoEvents mehr.
- Upload hat nun auch eine ProgressChanged-Rückmeldung.
- HTML-Dokumentation
- Sourcecode in der .zip

Download: http://sourceforge.net/projects/rapidshareapi/
Dokumentation: http://www.floschnell.de/rapidshareapi/

Hier noch zum besseren Verständnis, das alte Beispiel mit den neuen Methoden …

static RapidshareApi RSApi;

[STAThread]
static void Main()
{
  // create the api wrapper ...
  RSApi = new RapidshareApi("login", "password",
  RSClient.RSAccountType.Premium,[usessl], [enablemaxcpulock]);
  UploadFile();
}

void UploadFile()
{
  // do the file upload ...
  string filelocation = "C:\\bananenkompott.zip";
  RapidshareApi.UploadCallbacks uc =
    new RapidshareApi.UploadCallbacks();
  uc.onCompleted = DownloadFile;
  uc.onProgressChanged = ProgressChanged;
  RSApi.UploadFile(filelocation, uc);
}

void DownloadFile(UploadFileResponse ufr)
{
  string downloadlink = ufr.link;
  // download the file again ...
  string location =  "C:\\Users\\YourLoginName\\Desktop";
  RapidshareApi.DownloadCallbacks dc =
    new RapidshareApi.DownloadCallbacks();
  dc.onCompleted = Done;
  dc.onProgressChanged = ProgressChanged;
  RSApi.DownloadFile(downloadlink, location, DownloadFileDone);
}

void ProgressChanged(int percent)
{
  // this might update some progress bar ...
}

void Done()
{
  // okay were finished!
}

Posted in Allgemein

4 Kommentare

  1. Sinan

    Hallo, tolles Projekt hast du da!
    Ich würds gerne in einem Projekt benutzen, stolper da aber immer wieder über verschiedene Sachen, aber vielleicht kannst du mir ja helfen ;-)

    Also ich bekomme bei Folgendem Code immer eine KeyNotFoundException mit der Mitteilung “Der angegebene Schlüssel war nicht im Wörterbuch angegeben.”

    RapidshareApi RSApi = new RapidshareApi(“Username”, “Pass”, RSClient.RSAccountType.Premium);

    RapidshareApi.Account acc = RSApi.GetAccountDetails();

    Danke schonmal!

  2. Flo

    Hey Sinan,
    danke :)
    Ich hab mir den Fehler mal angeschaut, da ich leider im Moment unterwegs bin und keine Entwicklungsumgebung zur Hand habe kann ich also nur vermuten woran es liegt. Bin mir aber ziemlich sicher den Fehler gefunden zu haben.
    Ich werde erst in einer Woche dazu kommen eine neue Version zu veröffentlichen, bis dahin hier mal meine Vermutung:
    RapidshareApi.cs: 586-589:
    account.mirror = response.KeyValues["mirror"];
    account.mirror2 = response.KeyValues["mirror2"];
    account.mirror3 = response.KeyValues["mirror3"];
    account.mirror4 = response.KeyValues["mirror4"];
    abändern nach:
    account.mirror = response.KeyValues["mirrors"];
    Das sollte es gewesen sein, da diese Methode schon einmal funktionierte vermute ich, dass RapidShare da im Nachhinein noch etwas verändert hat.
    Viel Glück und würde mich interessieren ob’s geklappt hat.
    Gruß Flo

  3. Sinan

    Der Fehler ist nicht weg, habe aber eben herausgefunden wo der Fehler geworfen wird:
    RapidshareApi.cs: 592:
    account.lots = Int32.Parse(response.KeyValues["lots"]);

    Lass dir Zeit mit der neuen Version ;-)
    Mein Projekt ist übrigens ein RS-Account Verwaltungstool, da wäre es ganz schön zu sehen wie viel Traffic übrig ist etc. und dafür ist deine API perfekt :-)
    gruß Sinan

  4. C# N00b

    Hi, there are some changes in API. It would be nice to update your super API WRAPPER.

    Thank you.

Kommentar schreiben

Achtung: Kommentar-Moderation ist aktiviert und kann die Freigabe deines Kommentars verzögern. Es gibt keinen Grund diesen erneut abzuschicken.