Einzelnen Beitrag anzeigen

buster55

Registriert seit: 25. Nov 2007
88 Beiträge
 
#1

Rapidshare.com --- Ein Datei hochladen

  Alt 27. Jun 2008, 13:25
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!
servus

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:
 
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;
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:
WbEnumFields(WebBrowser1, ListBox1.Items); das einzige was ich damit ereiche ist ein eintrag mit dem namen 'filecontent'
und wenn ich das versuche zu bearbeiten:
WbSetEditField(WebBrowser1, 'filecontent', 'C:\...'); ...tut sich garnichts
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
http://images.rapidshare.com/software/rsapiresume.pl

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

dann legt mal los

liebe grüße
buster
  Mit Zitat antworten Zitat