Hallo liebe User.
Ich hätte mal ne Frage , wie kann ich per Python Kode eine ZIP Datei in Kodi mit Progress Bar entpacken !
Währe echt sau lieb von euch wenn ihr mir da weiter helfen könntet .
Vielen Dank im voraus - L.G.Loki1979
Hallo liebe User.
Ich hätte mal ne Frage , wie kann ich per Python Kode eine ZIP Datei in Kodi mit Progress Bar entpacken !
Währe echt sau lieb von euch wenn ihr mir da weiter helfen könntet .
Vielen Dank im voraus - L.G.Loki1979
entpacken ist einfach - Progress ? je nach Größe geht das enpacken ruckzuck, da brauchste normalerweise keine Progress
im Beispiel wird die Zip erst gedownloaded in ein Verzeichnis und danach entpackt
gruß Gerhard
xbmc.executebuiltin('XBMC.Notification(Senderlogos werden aktualisiert, der komplette Logopack wird geladen und extrahiert,600000,icon.png)')
import zipfile
urllib.urlretrieve ('http://........../logopack.zip', Pfad + 'logopack.zip') # download der zip
zfile = zipfile.ZipFile(Pfad + 'logopack.zip')
zfile.extractall(Ziel-Pfad)
xbmc.executebuiltin( "Dialog.Close(infodialog)" )
Danke Gerhard für die Antwort !
Ich versuch mal was damit umzusetzen und meld mich dann wieder .
Vor allem bin ich mal gespannt ob es jetz unter Android geht !
10 Minuten ist doch gut, zumindest nicht knapp bemessen
deshalb habe ich auch in der letzten Zeile das Dialog.Close drin, wenn alles abgearbeitet ist schließt sich der Dialog
dann weiß man zumindest wann die Routine durch ist, mach ich meistens so
das import xbmc wird er wahrscheinlich schon am Anfang vom Script haben, denke es geht nicht nur ums entpacken
gruß Gerhard
Ja mal schaun wie sich TVX1979 schlägt.
Ich finde das übrigens mal schön, wenn auch Fragen kommen, wie man programmiertechnisch ein Problem lösen und vor allen Dingen mal Python-mäßig selber Hand anlegen will. Respekt!
Moym ,Moyn Gerhard & BJ1 ((-;
So nun mal butter bei die Fische , in VB bräuchte ich für mein Vorhaben 15 Min,
aber in Python +XBMC steh ich etwas auf verlorenem Posten und muss auch erst mahl alle Möglichkeiten kennen lernen !
Ich hab folgendes vor !
ich möchte ein Addon schreiben das vor allem FireStick Besitzern aber auch andern das leben erleichtert !
Wie soll das aussehen ( Aufbau ) !
Als erstes erscheind ein Feld für die Eingabe einer Download URL
Diese URL beherbergt die Zip Datei die ich downloaden möchte ( Ein komplettes Backup ) = ( userdata + addons ) !
Danach erscheint z.B. ein Auswahlfeld, wo 6 feste Pfade zur Verfügung stehen
die zugleich auch den Zielpfad darstellen !
AndroidAndroid/data/http://org.xbmc.kodi/files/.kodi
iOS/private/var/mobile/Library/Preferences/Kodi
Linux~/.kodi/userdata/Mac/Users/<your_user_name>/Library/Application Support/Kodi
OpenELEC/storage/.kodi
WindowsStart - type %APPDATA%\kodi
An dieser Stelle soll nun geprüft werden ob unter dem gewählten Pfad der 6 Pfade
die Verzeichnisse ( userdata + addons ) und mein Zip Backup bestehen und diese wenn ja gelöscht werden ( bis auf das benötigte Addon geleert werden ) !
Nun soll das Zip Backup unter den angegebenen Pfaden in den Order ( Kodi gedownloadet werden + entpackt )
Wenn das Zip Backup dann fertig entpackt ist soll das Zip Backup wieder gelöscht werden und
die fertig Meldung erscheinen !
So weit bin ich bis Jetzt im ersten Abschnitt !
[/b]
import urllib, os,re,urllib2
import xbmc,xbmcgui
import xbmcaddon
import zipfile
import time
import sys
keyboard = xbmc.Keyboard()
keyboard.setHeading('HTTP Backup Download URL eingeben !') # Läßt sich nicht prüfen ob Eingabe leer
keyboard.doModal()
if keyboard.isConfirmed():
result_url = keyboard.getText()
[/b]# Hier sollte die 6 X Pfad Auswahl kommen [b]
def DownloaderClass(url,dest):
dp = xbmcgui.DialogProgress()
dp.create("Kodi ZIP Backup Downloader","Downloading File",url)
urllib.urlretrieve(url,dest,lambda nb, bs, fs, url=url: _pbhook(nb,bs,fs,url,dp))
def _pbhook(numblocks, blocksize, filesize, url=None,dp=None):
try:
percent = min((numblocks*blocksize*100)/filesize, 100)
print percent
dp.update(percent)
except:
percent = 100
dp.update(percent)
if dp.iscanceled():
dp.close()
DownloaderClass(result_url,'C:\Users\Loki1979\Desktop\Neuer Ordner\Backup.zip')
# Hier das prüfen und löschen von vorhandenen Ordnern ( Inhalt außer dem benutzten Addon ) + Zip Datei
# Das entpacken der Zip Datei mi Procress Bar ( Gerhard deine Vorgabe verursacht einen Fehler )
#ich hatte es zum test so versuch , ging aber auch nur unter Windows !
[b]targetzip = xbmc.translatePath('C:\Users\Loki1979\Desktop\Neuer Ordner\Backup.zip')
extractto = xbmc.translatePath('C:\Users\Loki1979\Desktop\Neuer Ordner')
fh = open(targetzip, 'rb')
z = zipfile.ZipFile(fh)
for name in z.namelist():
z.extract(name, extractto)
fh.close()
# Zip Datei wieder löschen - FERTIG ....
[b]
Alles anzeigen
Frage gibts da irgend en Fehler [definition='1','3']Debug[/definition] ?
Ich schreime in Notpad++
L.G. Loki1979
[/b]
Die 6 Pfade (für unterschiedliche OS) kannst Du dir sparen, unter Python ist das einfach nur
addons = os.path.join(xbmc.translatePath('special://home'), 'addons')
userdata = os.path.join(xbmc.translatePath('special://home'), 'userdata')
Fehler werden im [definition=3,2]kodi.[definition='1','0']log[/definition][/definition] (Logdatei) geloggt.
Danke BJ1 ((-;
Bin grad erst von der Arbeit gekommen ,ich test mal grad und meld mich dann nochmal .
Das entpacken geht jetz auch .
Ich teste das auf Kodi Portable und Kodi 14,2 auf BlueStacks
EDIT:
Die Sache mit en Pfaden gelöst und 2 Weisheiten gewonnen !
1 Ich bin en Idiot weil ich nicht an die unter benutzung stehenden Dateien gedacht habe !
2. Ich weis jetz warum beim normalen Kodi Backup nicht alles übernommen wird !
Damit weis ich aber umzugehen !
Hey @BJ1 !
Ich hab en Ordner löschen Problem .
Ich wollte nen vollen Ordner löschen mit :
Behalte aber Leichen zurück :
script.extendedinfo
skin.back-row
skin.xperience1080
alles andre is weg !
L.G. Loki1979
Die Leichen liegen im Ordner KodiData2? Was passiert, wenn Du ignore_errors=False setzt?
Ich kuck ma nach !
10:11:01 T:5832 NOTICE: Thread LanguageInvoker start, auto delete: false
10:11:01 T:5832 NOTICE: -->Python Interpreter Initialized<--
10:11:01 T:5832 ERROR: EXCEPTION Thrown (PythonToCppException) : -->Python callback/script returned the following error<--
- NOTE: IGNORING THIS CAN LEAD TO MEMORY LEAKS!
Error Type: <type 'exceptions.WindowsError'>
Error Contents: [Error 2] Das System kann die angegebene Datei nicht finden: 'C:\\Users\\Loki1979\\AppData\\Roaming\\Kodi\\Kodi_Backup\\201507221607\\addons\\script.extendedinfo\\resources\\skins\\Default\\media\\flags\\studios\\Zesp\xf3l Filmowy Oko.png'
Traceback (most recent call last):
File "C:\Users\Loki1979\AppData\Roaming\Kodi\addons\plugin.program.backupzipdownloader\addon.py", line 15, in <module>
shutil.rmtree(KodiData2, ignore_errors=False)
File "C:\Program Files (x86)\Kodi\system\python\Lib\shutil.py", line 247, in rmtree
rmtree(fullname, ignore_errors, onerror)
File "C:\Program Files (x86)\Kodi\system\python\Lib\shutil.py", line 247, in rmtree
rmtree(fullname, ignore_errors, onerror)
File "C:\Program Files (x86)\Kodi\system\python\Lib\shutil.py", line 247, in rmtree
rmtree(fullname, ignore_errors, onerror)
File "C:\Program Files (x86)\Kodi\system\python\Lib\shutil.py", line 247, in rmtree
rmtree(fullname, ignore_errors, onerror)
File "C:\Program Files (x86)\Kodi\system\python\Lib\shutil.py", line 247, in rmtree
rmtree(fullname, ignore_errors, onerror)
File "C:\Program Files (x86)\Kodi\system\python\Lib\shutil.py", line 247, in rmtree
rmtree(fullname, ignore_errors, onerror)
File "C:\Program Files (x86)\Kodi\system\python\Lib\shutil.py", line 247, in rmtree
rmtree(fullname, ignore_errors, onerror)
File "C:\Program Files (x86)\Kodi\system\python\Lib\shutil.py", line 247, in rmtree
rmtree(fullname, ignore_errors, onerror)
File "C:\Program Files (x86)\Kodi\system\python\Lib\shutil.py", line 247, in rmtree
rmtree(fullname, ignore_errors, onerror)
File "C:\Program Files (x86)\Kodi\system\python\Lib\shutil.py", line 252, in rmtree
onerror(os.remove, fullname, sys.exc_info())
File "C:\Program Files (x86)\Kodi\system\python\Lib\shutil.py", line 250, in rmtree
os.remove(fullname)
WindowsError: [Error 2] Das System kann die angegebene Datei nicht finden: 'C:\\Users\\Loki1979\\AppData\\Roaming\\Kodi\\Kodi_Backup\\201507221607\\addons\\script.extendedinfo\\resources\\skins\\Default\\media\\flags\\studios\\Zesp\xf3l Filmowy Oko.png'
-->End of Python script error report<--
10:11:01 T:5952 ERROR: XFILE::CDirectory::GetDirectory - Error getting plugin://plugin.program.backupzipdownloader/
10:11:01 T:5952 ERROR: CGUIMediaWindow::GetDirectory(plugin://plugin.program.backupzipdownloader/) failed
10:11:01 T:3056 NOTICE: Thread BackgroundLoader start, auto delete: false
CodeError Type: <type 'exceptions.WindowsError'> Error Contents: [Error 2] Das System kann die angegebene Datei nicht finden: 'C:\\Users\\Loki1979\\AppData\\Roaming\\Kodi\\Kodi_Backup\\201507221607\\addons\\script.extendedinfo\\resources\\skins\\Default\\media\\flags\\studios\\Zesp\xf3l Filmowy Oko.png'
Das heißt, die o.g. Datei kann die Datei nicht finden und bricht dann das Skript ab. skin.backrow und skin.xperience1080 werden dann schon garnicht mehr angefasst...
Ja das ist ma doof , weil da ist se ja ((-;
Edit erst mal fertig mit Arbeiten , jetz schau ich mal nach wie in Python rekursiv löscht + errors aqbfängt
Höchstwahrscheinlich ein Unicodefehler. Die Datei enthält (laut Google) ein polnisches Sonderzeichen
. Python ist in dieser Hinsicht ziemlich scheiße... Hier ist ein Antwortversuch, spontan würde mir aber auch nichts einfallen, ich vermute unter Unix würde der selbe Python-Code die Datei löschen.
Btw: Beim schreiben von == True solltest du immer zweimal überlegen, eine boolsche Funktion (erkennbar an is..., has... im Namen, zB isdir()) liefert einen Wahrheitswert zurück d.h. du kannst ==True einfach weglassen und erhälst das gleiche Ergebnis.
Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!