convert VB6 Source 2 python - Download from Docushare server

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
neweman
User
Beiträge: 7
Registriert: Sonntag 21. November 2010, 20:54

Hallo zusammen,
ich möchte per Python Dateien von einem Docushare Server herrunterladen.
Ich habe ein VB6 Code Beispiel gefunden wie man das macht.
Leider ist mir nicht ganz klar wie ich dieses Beispiel in Python nachprogrammieren kann.
Es handelt sich nicht um viel Code - vielleicht hat jemand eine Idee:

Code: Alles auswählen

Private Sub cmdDSDownload_Click()
    Dim file As ItemObj
    Dim dsserver As New DSServerMap.Server
    Dim lStatus As Long

    dsserver.DocuShareAddress = "https://docushare.xerox.com/dsdn/dsweb/HomePage/"
    
    lStatus = dsserver.Logon
    Debug.Print lStatus

    Set file = dsserver.CreateObject("Document-9190")
    lStatus = file.DSLoadProps
    file.Name = "C:\TEMP\" & file.Name
    lStatus = file.DSDownload(0)
    
    Debug.Print lStatus
    
End Sub
Das oben gezeigte VB6 Beispiel funktioniert so wie es ist.
Es lädt das Document-9190 von dem Docushare Server und speichert dieses unter c:\temp\ [+ realname].
Vorraussetzung:
-Docushare account vorhanden( Anmeldung kostenlos )
-Docushare client installiert
-Docushare client SDK installiert
Das Codebeispiel nutzt einen Testzugang bei Xerox.
Der richtige DS Server ist in meiner Firma.

Für jeden Hinweis wäre ich dankbar.
neweman
Zuletzt geändert von Anonymous am Donnerstag 20. Januar 2011, 22:12, insgesamt 1-mal geändert.
Grund: Quelltext in Code-Tags gesetzt.
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

Meine erste Frage wäre, wieso Du das mit Python umsetzen willst, wenn Du doch ein funktionierendes Script besitzt?

Wie sieht es denn mit Deinen Python-Kenntnissen und Fähigkeiten so aus?

Sollte es sich dabei um einen speziellen "Webservice" handeln und es eine API geben, so würde ich mal bei pypi gucken, ob es da ein Python-Modul gibt.

Alternativ gibt es mit mechanize ein Modul, welches in diesem Zusammenhang nützlich sein könnte.
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
neweman
User
Beiträge: 7
Registriert: Sonntag 21. November 2010, 20:54

Meine erste Frage wäre, wieso Du das mit Python umsetzen willst, wenn Du doch ein funktionierendes Script besitzt?
Weil ich VB6 nicht mehr in der Firma benutzen kann und weil ich dannach noch weitere Sachen mit den Dateien machen muss ( und das in Python )
Wie sieht es denn mit Deinen Python-Kenntnissen und Fähigkeiten so aus?
mmh schwierig - ist ja relativ - Zwischen Anfänger und Fortgeschritten
Sollte es sich dabei um einen speziellen "Webservice" handeln und es eine API geben, so würde ich mal bei pypi gucken, ob es da ein Python-Modul gibt.
Docushare ist ein Dokumenten-Management (DMS) und Enterprise-Content-Management laut wikipedia.
Ich habe leider keine py module dafür gefunden bis jetzt
lunar

@neweman: Das VB6-Programm ist bestimmt nicht vom Himmel gefallen, es wird also irgendwo Dokumentation geben für die Schnittstelle(n), welche Dokushare zum Zugriff auf die gespeicherten Daten bereitstellt. Der erste Schritt also wäre, diese Dokumentation zu suchen und zu lesen, um das VB6-Skript zu verstehen. Nur dann kannst Du überhaupt daran denken, es auf Python zu portieren.

Wahrscheinlich sind die Typen, die im VB-Programm verwendet werden, COM-Objekte, auf die man in Python mithilfe von pywin32 zugreifen kann. Damit sollte sich das Programm zumindest semantisch relativ direkt nach Python übertragen lassen.
BlackJack

@neweman: Wenn es so etwas noch nicht gibt, müsstest Du es also selbst schreiben. Grundsätzlich möglich sollte es sein. Wenn ich mal von irgendwo von der Docushare/Xerox-Seite zitieren darf:
The HTTP/XML interface is used for read/write transactions with the DocuShare server using HTTP/1.1 protocol and XML data format. Any language that has HTTP protocol access, such as Perl, Java, VB, or VC++, can use this interface to communicate with DocuShare. Please refer to the HTTP/XML guide for details on this interface.
HTTP und XML ist mit Python machbar. Wären wir also wieder bei der Frage Deiner Fähigkeiten. Und vielleicht auch der zur Verfügung stehenden Zeit. Ich weiss ja nicht wie umfangreich die Docushare-API ist bzw. die Untermenge, die Du davon benötigst.

So auf die Schnelle habe ich diese etwas ältere Beschreibung gefunden: http://docushare.xerox.com/en-us/Help/prog/prog5.htm
neweman
User
Beiträge: 7
Registriert: Sonntag 21. November 2010, 20:54

Danke für die Links.
Leider ist das nicht mehr so aktuell. Das läuft nicht mehr über Http sondern Https.
Das Code Beispiel oben stammt aus der Docushare Dokumenation.
Leider gibt es da keine Code Beispiele in Python. Ohne Beispiele ist es gerade bei solchen Sachen recht schwierig...
Dann werde ich mal weiterforschen. Ich hoffte ja nur, das es womöglich ein Klacks für Euch Profies wäre den VB6 Code in Python umzumünzen.
Aber trotzdem - Vielen Dank !
Neweman
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

neweman hat geschrieben: Dann werde ich mal weiterforschen. Ich hoffte ja nur, das es womöglich ein Klacks für Euch Profies wäre den VB6 Code in Python umzumünzen.
Das Code-Beispiel zeigt ja eher viel "Magie", da aus ihm ja nicht ersichtlich ist, wie die einzelnen Komponenten funktionieren. Das ganze ist eben ein stark abstrahierendes API, welches die Details schön verbirgt.

Es wurden Dir doch aber jetzt genug Hinweise gegeben, damit Du das selber angehen kannst. urlib und Konsorten sollten bezüglich http gute Dienste leisten und für xml gibt es ja auch zig Libs und APIs für Python. Damit sollte es doch möglich sein, selber ein Modul für den Zugriff zu schreiben.

Alternativ hat lunar Dir ja noch den Hinweis bezüglich der COM-Objekte gegeben, womit Du die existierende API nutzen könntest.
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
neweman
User
Beiträge: 7
Registriert: Sonntag 21. November 2010, 20:54

Danke nochmal an alle für die Tips.
Ich habe es jetzt hinbekommen.
Logon on Docushare Server + Download File to local system in Python:

Code: Alles auswählen

# docushareclient must be installed on target system

import win32com.client
import os
if __name__  == '__main__':

    dsserver  = win32com.client.Dispatch("DSServerMap.Server")
    dsserver.DocuShareAddress = r"https://docushare.xerox.com/dsdn/dsweb/HomePage/"
   
    lStatus  = dsserver.Logon()
    print lStatus     
    
    file = dsserver.CreateObject("Document-9190")
    lStatus  = file.DSLoadProps ()
    file.Name = os.path.join ( r'c:\temp' , file.Name)
    lStatus  = file.DSDownload(0)
    
    print lStatus
Antworten