astrXbian/.install/.kodi/addons/plugin.video.vstream/resources/lib/library.py

179 lines
6.5 KiB
Python

# -*- coding: utf-8 -*-
# vStream https://github.com/Kodi-vStream/venom-xbmc-addons
from resources.lib.handler.inputParameterHandler import cInputParameterHandler
from resources.lib.handler.outputParameterHandler import cOutputParameterHandler
from resources.lib.gui.gui import cGui
from resources.lib.util import cUtil, QuotePlus
from resources.lib.comaddon import addon, dialog, xbmc, VSlog, VSPath
from resources.lib.gui.hoster import cHosterGui
import xbmcvfs
import xbmcplugin, xbmcgui
import os, sys
SITE_IDENTIFIER = 'cLibrary'
SITE_NAME = 'Library'
# sources.xml
class cLibrary:
ADDON = addon()
def __init__(self):
self.__sMovieFolder = self.ADDON.getSetting('Library_folder_Movies')
self.__sTVFolder = self.ADDON.getSetting('Library_folder_TVs')
if not self.__sMovieFolder:
self.__sMovieFolder = 'special://userdata/addon_data/plugin.video.vstream/Films'
self.ADDON.setSetting('Library_folder_Movies', self.__sMovieFolder)
if not xbmcvfs.exists(self.__sMovieFolder):
xbmcvfs.mkdir(self.__sMovieFolder)
if not self.__sTVFolder:
self.__sTVFolder = 'special://userdata/addon_data/plugin.video.vstream/Series'
self.ADDON.setSetting('Library_folder_TVs', self.__sTVFolder)
if not xbmcvfs.exists(self.__sTVFolder):
xbmcvfs.mkdir(self.__sTVFolder)
self.__sTitle = ''
def setLibrary(self):
oInputParameterHandler = cInputParameterHandler()
sHosterIdentifier = oInputParameterHandler.getValue('sHosterIdentifier')
sFileName = oInputParameterHandler.getValue('sFileName')
sMediaUrl = oInputParameterHandler.getValue('sMediaUrl')
ret = dialog().VSselect(['Film', 'Série'], 'Sélectionner une catégorie')
if ret == 0:
sCat = '1'
elif ret == -1:
return
else:
sCat = '2'
sMediaUrl = QuotePlus(sMediaUrl)
sFileName = QuotePlus(sFileName)
sLink = 'plugin://plugin.video.vstream/?function=play&site=cHosterGui&sFileName=' + sFileName + '&sMediaUrl=' + sMediaUrl + '&sHosterIdentifier=' + sHosterIdentifier
sTitle = sFileName
if sCat == '1': # film
sTitle = cUtil().CleanName(sTitle)
sTitle = self.showKeyBoard(sTitle, 'Nom du dossier et du fichier')
try:
sPath = '/'.join([self.__sMovieFolder, sTitle])
if not xbmcvfs.exists(sPath):
xbmcvfs.mkdir(sPath)
self.MakeFile(sPath, sTitle, sLink)
except:
dialog().VSinfo('Rajout impossible')
elif sCat == '2': # serie
sTitle = cUtil().CleanName(sTitle)
sFTitle = self.showKeyBoard(sTitle, 'Recommandé Nomdeserie/Saison00')
try:
sPath = '/'.join([self.__sTVFolder, sFTitle])
if not xbmcvfs.exists(sPath):
xbmcvfs.mkdir(sPath)
sTitle = self.showKeyBoard(sTitle, 'Recommandé NomdeserieS00E00')
self.MakeFile(sPath, sTitle, sLink)
except:
dialog().VSinfo('Rajout impossible')
def MakeFile(self, folder, name, content):
stream = '/'.join([folder, str(name)]) + '.strm'
f = xbmcvfs.File(stream, 'w')
result = f.write(str(content))
f.close()
if result:
dialog().VSinfo('Elément rajouté à la librairie')
else:
dialog().VSinfo('Rajout impossible')
def getLibrary(self):
#xbmc.executebuiltin("Container.Update(special://userdata/addon_data/plugin.video.vstream/)", True)
#xbmc.executebuiltin('ActivateWindow(Videos,"special://userdata/addon_data/plugin.video.vstream/")', True)
oGui = cGui()
path = 'special://userdata/addon_data/plugin.video.vstream/'
listDir = xbmcvfs.listdir(path)
for i in listDir[0]:
Year = os.path.basename(i)
oOutputParameterHandler = cOutputParameterHandler()
oOutputParameterHandler.addParameter('filePath', path+i)
oGui.addDir(SITE_IDENTIFIER, 'openLibrary', Year, 'annees.png', oOutputParameterHandler)
oGui.setEndOfDirectory()
def openLibrary(self):
oGui = cGui()
oInputParameterHandler = cInputParameterHandler()
sFile = oInputParameterHandler.getValue('filePath')
listDir = xbmcvfs.listdir(sFile)
if listDir[0]:
data = listDir[0]
else:
data = listDir[1]
for i in data:
path = VSPath(sFile+'/'+i) #Suppression du special: pour plus tard
sTitle = os.path.basename(path) #Titre du fichier .strm
if '.strm' in i:
sHosterUrl = sFile+'/'+i
addon_handle = int(sys.argv[1])
xbmcplugin.setContent(addon_handle, 'video')
li = xbmcgui.ListItem(sTitle)
xbmcplugin.addDirectoryItem(handle=addon_handle, url=sHosterUrl, listitem=li)
else:
oOutputParameterHandler = cOutputParameterHandler()
oOutputParameterHandler.addParameter('filePath', sFile+'/'+i)
oGui.addDir(SITE_IDENTIFIER, 'openLibrary', sTitle, 'annees.png', oOutputParameterHandler)
if '.strm' in i:
xbmcplugin.endOfDirectory(addon_handle)
else:
oGui.setEndOfDirectory()
def Delfile(self):
oInputParameterHandler = cInputParameterHandler()
sFile = oInputParameterHandler.getValue('sFile')
xbmcvfs.delete(sFile)
runClean = self.DIALOG.VSyesno('Voulez vous mettre à jour la librairie maintenant (non conseillé)', 'Fichier supprimé')
if not runClean:
return
xbmc.executebuiltin('CleanLibrary(video)')
def ShowContent(self):
oInputParameterHandler = cInputParameterHandler()
sFolder = oInputParameterHandler.getValue('folder')
xbmc.executebuiltin('Container.Update(' + sFolder + ')')
def showKeyBoard(self, sDefaultText='', Heading=''):
keyboard = xbmc.Keyboard(sDefaultText)
keyboard.setHeading(Heading) # optional
keyboard.doModal()
if keyboard.isConfirmed():
sSearchText = keyboard.getText()
if (len(sSearchText)) > 0:
return sSearchText
return False