Seite 1 von 1
convert VB6 Source 2 python - Download from Docushare server
Verfasst: Donnerstag 20. Januar 2011, 21:56
von neweman
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
Re: convert VB6 Source 2 python - Download from Docushare se
Verfasst: Donnerstag 20. Januar 2011, 22:07
von Hyperion
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.
Re: convert VB6 Source 2 python - Download from Docushare se
Verfasst: Donnerstag 20. Januar 2011, 22:19
von neweman
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
Re: convert VB6 Source 2 python - Download from Docushare se
Verfasst: Donnerstag 20. Januar 2011, 22:33
von 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.
Re: convert VB6 Source 2 python - Download from Docushare se
Verfasst: Donnerstag 20. Januar 2011, 22:48
von 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
Re: convert VB6 Source 2 python - Download from Docushare se
Verfasst: Donnerstag 20. Januar 2011, 23:02
von neweman
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
Re: convert VB6 Source 2 python - Download from Docushare se
Verfasst: Donnerstag 20. Januar 2011, 23:50
von Hyperion
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.
Re: convert VB6 Source 2 python - Download from Docushare se
Verfasst: Samstag 22. Januar 2011, 14:23
von neweman
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