179 lines
6.3 KiB
Python
179 lines
6.3 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
|