![]() |
Rapidshare.com --- Ein Datei hochladen
DAS GANZE BOARD WURDE DURCHSUCHT UND ICH KONNTE DEFINITIV KEINE FÜR MICH GEEIGNETE LÖSUNG FINDEN, WAS ENTWEDER AUS MEINER UNFÄHIGKEIT ODER AUS DER MANGELDEN BEHANDLUNG DIESES THEMAS IM BOARD RESULTIERT! :mrgreen:
servus :mrgreen: mein vorhaben ist folgendes: ich möchte ein simples tool schreiben das auf rapidshare.com eine datei hochlädt. ich diesbezüglich schon was ausprobiert. ich hatte zuerst vor auf rapidshare das edit feld zum uploaden der datei (das feld in das der lokale link zur datei reinkommt) per script zu füllen, das muss man sich so vorstellen:
Delphi-Quellcode:
so ist es im endeffekt möglich die seite nach dingen wie edit felder, buttons, ceckboxen und allen möglichen anderem kram zu scannen, und das so:function WbEnumFields(WebBrowser: TWebBrowser; SL: TStrings): Boolean; var i, j: Integer; FormItem: Variant; begin Result := True; //Hat das Dokument Forms? (Frames) if WebBrowser.OleObject.Document.all.tags('FORM').Length = 0 then begin Result := False; Exit; end; //Bearbeite alle Frames for I := 0 to WebBrowser.OleObject.Document.forms.Length - 1 do begin FormItem := WebBrowser.OleObject.Document.forms.Item(I); // Bearbeite alle Felder eines Frames for j := 0 to FormItem.Length - 1 do begin try SL.Add(FormItem.Item(j).Name); except Result := False; Exit; end; end; end; end; // Durchsuche alle Formulare im Webbrowser nach dem Feldnamen // Übergabe: // Webbroweser: Webbrowser, der die aktuelle Seite enthält // FieldName : Name des gesuchten Felds // Rückgabe // Field : Field.x : Frame Nummer // : Fielf.y : Feld Nummer im Frame // Result : true -> Feld existiert // : false -> Feld existiert nicht // oder kein Dokument geladen function WbFindField(WebBrowser: TWebBrowser; FieldName: string; var Field: TPoint): boolean; var i, j: Integer; FormItem: Variant; begin Result := False; //Hat das Dokument Forms? (Frames) if WebBrowser.OleObject.Document.all.tags('FORM').Length = 0 then begin Exit; end; //Bearbeite alle Frames for I := 0 to WebBrowser.OleObject.Document.forms.Length - 1 do begin FormItem := WebBrowser.OleObject.Document.forms.Item(I); // Bearbeite alle Felder eines Frames for j := 0 to FormItem.Length - 1 do begin try // Feldname wurde gefunden // gebe ihn zurück und ende if FormItem.Item(j).Name = FieldName then begin Field.x := i; // Position speichern Field.Y := j; Result := True; exit; end; except Exit; end; end; end; end; // Trage Text in ein Editfeld ein // Übergabe: // Webbroweser: Webbrowser, der die aktuelle Seite enthält // FieldName : Name des gesuchten Felds // Rückgabe // Value : Der Text, der in das Feld hinein soll // Result : true -> kein Fehler // : false -> Feld existiert nicht // oder kein Dokument geladen function WbSetEditField(WebBrowser: TWebBrowser; FieldName: string; Value: string): Boolean; var Field: TPoint; begin // Position des Felds holen if not WbFindField(WebBrowser, FieldName, Field) then begin Result := false; // Feld existiert nicht exit; // Ende end; try // Feld füllen WebBrowser.OleObject.Document.forms.Item(Field.x).Item(Field.y).Value := Value; Result := True; except Result := false; Exit; end; end; // Lese Text aus einem Editfeld // Übergabe: // Webbroweser: Webbrowser, der die aktuelle Seite enthält // FieldName : Name des gesuchten Felds // Rückgabe // Value : Text, der im Feld steht // Result : true -> kein Fehler // : false -> Feld existiert nicht // oder kein Dokument geladen function WbGetEditField(WebBrowser: TWebBrowser; FieldName: string; var Value: string): Boolean; var Field: TPoint; begin // Position des Felds holen if not WbFindField(WebBrowser, FieldName, Field) then begin Result := false; // Feld existiert nicht exit; // Ende end; try // Feld lesen Value := WebBrowser.OleObject.Document.forms.Item(Field.x).Item(Field.y).Value; Result := True; except Result := false; Exit; end; end;
Delphi-Quellcode:
das einzige was ich damit ereiche ist ein eintrag mit dem namen 'filecontent'
WbEnumFields(WebBrowser1, ListBox1.Items);
und wenn ich das versuche zu bearbeiten:
Delphi-Quellcode:
...tut sich garnichts :?
WbSetEditField(WebBrowser1, 'filecontent', 'C:\...');
die MozillaFirefox komponente unterstützt so etwas nicht... ---- was ich nun ereichen möchte ist das mir anhand einer lokalen datei adresse auf dem computer (C:\...)der lösch- und der downloadlink der hochgeladenen datei, am besten in einer memo,richedit (log-datei ähnlich) übermittelt wird. am besten wäre es wenn ich dafür nicht mit dem webbrowser arbeiten müsste (vieleicht mit indy irgendwas zaubern..?) ---- WICHTIG: So ein Tool zu programmieren ist 100% legal da rapidshare selbst ein opensource perl script anbietet das es ermöglicht datein hochzuladen, nur leider verstehe ich nchits von perl :( ![]() man beachte das ich mich was internet bzw online programmierung erst noch ein wenig zurecht finden muss, also wäre es gut wenn man mir gut erklären würde wie es geht , ich will schließlich dazu lernen und nicht einfach ein fertiges script ohne jeglich erklärung an den kopf geworfen kriegen ;) der user der das schafft bekommt natürlich einen (virtuellen) kuss von mir :mrgreen: :mrgreen: dann legt mal los :-P liebe grüße buster |
Re: Rapidshare.com --- Ein Datei hochladen
Es wird zwar etwas umständlich, sollte aber funktionieren.
Als erstes suchst du mit IdHTTP die Hauptseite auf. Dabei gibts ein Formular, welches per POST Daten verschickt. Dabei gibts eine Sitzung. Deren ID steht in der Adresse vom Formular. Das ist Parameter 1. Dann muss die Datei noch per POST über idHTTP verschickt werden (wie weiß ich nicht). Auf der weitergeleiteten Seite (hier musst du glaub ich JavaScript parsen) stehen dann Link und Löschlink. Bernhard |
Re: Rapidshare.com --- Ein Datei hochladen
Hi buster
ich denke dein Problem ist das "filecontent" kein edit feld ist sondern ein "file" input dieser hat keinen value(bzw unterstützen ihn die meisten browser wohl nicht) und den kannst du also auch nicht setzen ich kann dir leider auch nicht sagen wie du das mit delphi gefüllt kriegst... hab aber nen andern thread dazu gefunden vielleicht hilft der dir ja weiter ![]() |
Re: Rapidshare.com --- Ein Datei hochladen
JAAAAAAA!!!
es funktioniert!!! :love: :love: lieben dank an euch beide habt mich drauf gebracht, jetzt erscheint der UPLOAD knopf im bild gibts ne möglichkeit den webbrowser auf ein bestimmtes bild oder auf eine bestimmte position klicken zu lassen ?? |
Re: Rapidshare.com --- Ein Datei hochladen
Zitat:
![]() |
Re: Rapidshare.com --- Ein Datei hochladen
Wenn du die Webseite nicht anzeigen willst ist es überflüssig TWebbrowser etc. zu nutzen was dir die Webseite darstellt. Nutze einfach TIdHttp und sende die entsprechenden Felder direkt.
|
Re: Rapidshare.com --- Ein Datei hochladen
ist mit sicherheit ne gute idee allerdings müsstest du mir zeigen wie das geht, ausserdem kann man das bild nicht anklicken da RS die adresse zum bild verschlüsselt und selbst wenn man die adresse rausfindet der browser damit nicht umgehen kann.
also brauch ich ne erklärung für TIdHttp und ne möglichkeit webbrowser auf bestimmte stellen im bild klicken zu lassen |
Re: Rapidshare.com --- Ein Datei hochladen
Zitat:
Delphi-Quellcode:
(Siehe HTML Quelltext)
document.getElementById('btnupload')
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:19 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz