Beispiel #1
0
def save_merkliste(fname, merkliste, my_ordner):
    PLog('save_merkliste:')

    # Merkliste + Ordnerinfo + Ordner:
    err_msg = ''  # gefüllt von Aufrufer
    my_ordner = " ".join(my_ordner)
    if my_ordner == '':
        my_ordner = ORDNER
    ordner_info = "\n".join(ORDNER_INFO)
    merkliste = "<merkliste>\n%s</merkliste>\n\n%s\n\n<ordnerliste>%s</ordnerliste>\n" %\
     (merkliste, ordner_info, my_ordner)
    try:
        if '//' not in fname:
            err_msg = RSave(fname, merkliste,
                            withcodec=True)  # Merkliste speichern
            if err_msg:
                ret = False
            else:
                ret = True
        else:
            PLog("xbmcvfs_fname: " + fname)
            f = xbmcvfs.File(fname, 'w')  # extern - Share
            ret = f.write(merkliste)
            f.close()
            PLog("xbmcvfs_ret: " + str(ret))
        if ret:
            sync_list_intern(src_file=fname,
                             dest_file=WATCHFILE)  # Synchronisation
        return ret, err_msg

    except Exception as exception:
        ret = False
        PLog(str(exception))
        err_msg = str(exception)
        return ret, err_msg
Beispiel #2
0
def save_merkliste(merkliste, my_ordner):
    PLog('save_merkliste:')

    fname = WATCHFILE
    if SETTINGS.getSetting(
            'pref_merkextern') == 'true':  # externe Merkliste gewählt?
        fname = SETTINGS.getSetting('pref_MerkDest_path')
        if fname == '' or xbmcvfs.exists(fname) == False:
            PLog("merkextern: %s, %d" % (fname, xbmcvfs.exists(fname)))
            msg1 = u"Merkliste nicht gefunden\nBitte Settings überprüfen"
            return False, err_msg
    PLog(fname)

    # Merkliste + Ordnerinfo + Ordner:
    err_msg = ''  # gefüllt von Aufrufer
    if my_ordner == '' or my_ordner == []:  # Fallback Basis-Ordner-Liste
        my_ordner = ORDNER
    my_ordner = " ".join(my_ordner)
    ordner_info = "\n".join(ORDNER_INFO)
    merkliste = "<merkliste>\n%s</merkliste>\n\n%s\n\n<ordnerliste>%s</ordnerliste>\n" %\
     (merkliste, ordner_info, my_ordner)
    try:
        if '//' not in fname:
            err_msg = RSave(fname, merkliste,
                            withcodec=True)  # Merkliste speichern
            if err_msg:
                ret = False
            else:
                ret = True
        else:
            PLog("xbmcvfs_fname: " + fname)
            f = xbmcvfs.File(fname, 'w')
            if PYTHON2:
                ret = f.write(merkliste)
                f.close()
            else:  # Python3: Bytearray
                buf = bytearray()
                buf.extend(merkliste.encode())
                ret = f.write(buf)
                f.close()
            PLog("xbmcvfs_ret: " + str(ret))
        if ret:
            sync_list_intern(src_file=fname,
                             dest_file=WATCHFILE)  # Synchronisation
        return ret, err_msg

    except Exception as exception:
        ret = False
        PLog(str(exception))
        err_msg = str(exception)
        return ret, err_msg
Beispiel #3
0
def watch_filter(delete=''):
    PLog("watch_filter:")

    if delete:
        icon = R(ICON_DIR_WATCH)
        PLog('watch_filter: entferne_Filter')
        msg1 = 'Filter entfernen:'
        if os.path.isfile(MERKFILTER):
            os.remove(MERKFILTER)
            if os.path.isfile(MERKACTIVE) == True:  # Merkliste aktiv?
                xbmc.executebuiltin('Container.Refresh')
            msg2 = "Filter wurde entfernt"
        else:
            msg2 = "kein Filter gefunden"

        xbmcgui.Dialog().notification(msg1, msg2, icon, 5000)
        return

    my_items, my_ordner = ReadFavourites('Merk')  # Ordnerliste holen
    my_ordner = check_ordner(my_ordner)
    my_ordner.insert(0, u"*ohne Zuordnung*")

    preselect = 0  # Vorauswahl
    if os.path.isfile(MERKFILTER) == True:
        myfilter = RLoad(MERKFILTER, abs_path=True)
        PLog('myfilter: ' + myfilter)
        if myfilter:  # leer möglich
            preselect = my_ordner.index(myfilter)

    ret = xbmcgui.Dialog().select(u'Ordner wählen (Abbrechen = ohne Filter)',
                                  my_ordner,
                                  preselect=preselect)
    ordner = ''
    if ret >= 0:
        ordner = my_ordner[ret]
    PLog("ordner: " + ordner)

    # RunScript + RunPlugin hier fehlgeschlagen, daher
    #	Filterung via Triggerdatei MERKFILTER
    err_msg = RSave(MERKFILTER, ordner, withcodec=True)
    xbmc.executebuiltin('Container.Refresh')
Beispiel #4
0
def Watch(action, name, thumb='', Plot='', url=''):		
	PLog('Watch: ' + action)

	# CallFunctions: Funktionen, die Videos direkt oder indirekt (isPlayable) aufrufen.
	#	Ist eine der Funktionen in der Plugin-Url enthalten, wird der Parameter Merk='true'
	#	für PlayVideo bzw. zum Durchreichen angehängt.
	#	Funktioniert nicht mit Modul funk
	CallFunctions = ["PlayVideo", "ZDF_getVideoSources", "resources.lib.zdfmobile.ShowVideo",
						"resources.lib.zdfmobile.PlayVideo", "SingleSendung", "ARDStartVideoStreams", 
						"ARDStartVideoMP4", "SenderLiveResolution", "resources.lib.phoenix.SingleBeitrag"
					]
	
	url = unquote_plus(url)	
	PLog(unquote_plus(url)[100:])  			# url in fparams zusätzlich quotiert
	PLog(name); PLog(thumb); PLog(Plot);
	
	fname = WATCHFILE		
	item_cnt = 0; 
	err_msg	= ''
	doppler = False
	
	if action == 'add':
		# Base64-Kodierung wird nicht mehr verwendet (addDir in Modul util), Code verbleibt 
		#	hier bis auf Weiteres
		if 'plugin://plugin' not in url:				# Base64-kodierte Plugin-Url in ActivateWindow
			b64_clean= convBase64(url)					# Dekodierung mit oder ohne padding am Ende	
			b64_clean=unquote_plus(b64_clean)	# unquote aus addDir-Call
			b64_clean=unquote_plus(b64_clean)	# unquote aus Kontextmenü
			#PLog(b64_clean)
			CallFunction = stringextract("&dirID=", "&", b64_clean) 
			PLog('CallFunction: ' + CallFunction)
			if CallFunction in CallFunctions:			# Parameter Merk='true' anhängen
				new_url = b64_clean[:-1]				# cut } am Ende fparams
				new_url = "%s, 'Merk': 'true'}" % new_url
				PLog("CallFunction_new_url: " + new_url)
				url = quote_plus(new_url)
				url = base64.b64encode(url)			
			
		url = url.replace('&', '&amp;') # Anpassung an Favorit-Schema
		merk = '<merk name="%s" thumb="%s" Plot="%s">ActivateWindow(10025,&quot;%s&quot;,return)</merk>'  \
			% (name, thumb, Plot, url)
		PLog('merk: ' + merk)
		my_items = ReadFavourites('Merk')				# 'utf-8'-Decoding in ReadFavourites
		merkliste = ''
		if len(my_items):
			PLog('my_items: ' + my_items[0])
			for item in my_items:						# Liste -> String
				iname = stringextract('name="', '"', item) 
				PLog('Name: %s, IName: %s' % (py2_decode(name), py2_decode(iname)))
				if py2_decode(iname) == py2_decode(name):# Doppler vermeiden
					doppler = True
					PLog('Doppler')
					break
				merkliste = merkliste + item + "\n"
				item_cnt = item_cnt + 1
		else:											# 1. Eintrag
			pass
		
		item_cnt = item_cnt + 1		
		if doppler == False:
			msg1 = u"Eintrag hinzugefügt" 
			PLog(type(merkliste)); PLog(type(merk));
			merkliste = py2_decode(merkliste) + merk + "\n"
			#item_cnt = item_cnt + 1			
			merkliste = "<merkliste>\n%s</merkliste>"	% merkliste
			err_msg = RSave(fname, merkliste, withcodec=True)		# Merkliste speichern
		else:
			msg1 = u"Eintrag schon vorhanden"
							 
	if action == 'del':
		my_items = ReadFavourites('Merk')			# 'utf-8'-Decoding in ReadFavourites
		if len(my_items):
			PLog('my_items: ' + my_items[-1])
		PLog(type(name));
		merkliste = ''
		deleted = False
		for item in my_items:						# Liste -> String
			iname = stringextract('name="', '"', item) # unicode
			iname = py2_decode(iname)
			name = py2_decode(name)		
			PLog('Name: %s, IName: %s' % (name, iname))		
			if name == iname:
				deleted = True						# skip Satz = löschen 
				continue
			item_cnt = item_cnt + 1
			merkliste = py2_decode(merkliste) + py2_decode(item) + "\n"
		if deleted:
			err_msg = RSave(fname, merkliste, withcodec=True)		# Merkliste speichern
			msg1 = u"Eintrag gelöscht"
			PLog(msg1)
		else:
			msg1 = "Eintrag nicht gefunden." 
			err_msg = u"Merkliste unverändert."
			PLog(msg1)	
							
	return msg1, err_msg, str(item_cnt)	
Beispiel #5
0
def Watch_items(action, name, thumb='', Plot='', url=''):
    PLog('Watch: ' + action)

    url = unquote_plus(url)
    PLog(unquote_plus(url)[100:])  # url in fparams zusätzlich quotiert
    PLog(name)
    PLog(thumb)
    PLog(Plot)

    item_cnt = 0
    err_msg = ''
    doppler = False

    fname = WATCHFILE
    if SETTINGS.getSetting(
            'pref_merkextern') == 'true':  # externe Merkliste gewählt?
        fname = SETTINGS.getSetting('pref_MerkDest_path')
        if fname == '' or xbmcvfs.exists(fname) == False:
            PLog("merkextern: %s, %d" % (fname, xbmcvfs.exists(fname)))
            msg1 = u"Merkliste nicht gefunden"
            err_msg = u"Bitte Settings überprüfen"
            return msg1, err_msg, str(item_cnt)
    #------------------
    if action == 'add':
        url = get_plugin_url(url)  # url aus ev. Base64-Kodierung
        my_items, my_ordner = ReadFavourites(
            'Merk')  # 'utf-8'-Decoding in ReadFavourites
        my_ordner = check_ordner(my_ordner)
        merkliste = ''
        if len(my_items):
            PLog('my_items: ' + my_items[0])  # 1. Eintrag
            for item in my_items:  # Liste -> String
                iname = stringextract('name="', '"', item)
                PLog('Name: %s, IName: %s' %
                     (py2_decode(name), py2_decode(iname)))
                if py2_decode(iname) == py2_decode(name):  # Doppler vermeiden
                    doppler = True
                    PLog('Doppler')
                    break
                merkliste = merkliste + item + "\n"
                item_cnt = item_cnt + 1
        else:
            item = ''

        ordner = ''
        if SETTINGS.getSetting('pref_merkordner') == 'true':  # Ordner-Auswahl
            if doppler == False:
                if len(my_ordner) == 0:  # leer: Initialisierung
                    my_ordner = ORDNER
                my_ordner.insert(0, u"*ohne Zuordnung*")

                ret = xbmcgui.Dialog().select(u'Ordner wählen',
                                              my_ordner,
                                              preselect=0)
                if ret > 0:
                    ordner = my_ordner[ret]
                else:
                    ordner = ''  # ohne Zuordnung=leer
                del my_ordner[0]

        # Neuer Eintrag:
        url = url.replace('&', '&amp;')  # Anpassung an Favorit-Schema
        merk = '<merk name="%s" ordner="%s" thumb="%s" Plot="%s">ActivateWindow(10025,&quot;%s&quot;,return)</merk>'  \
         % (name, ordner, thumb, Plot, url)
        PLog('merk: ' + merk)

        item_cnt = item_cnt + 1
        if doppler == False:
            msg1 = u"Eintrag hinzugefügt"
            merkliste = py2_decode(merkliste) + merk + "\n"
            #item_cnt = item_cnt + 1

            # Merkliste + Ordnerinfo + Ordner + Ordnerwahl:
            my_ordner = " ".join(my_ordner)
            if my_ordner == '':
                my_ordner = ORDNER
            ordner_info = "\n".join(ORDNER_INFO)
            merkliste = "<merkliste>\n%s</merkliste>\n\n%s\n\n<ordnerliste>%s</ordnerliste>\n" %\
             (merkliste, ordner_info, my_ordner)
            try:
                if '//' not in fname:
                    err_msg = RSave(fname, merkliste,
                                    withcodec=True)  # Merkliste speichern
                else:
                    PLog("xbmcvfs_fname: " + fname)
                    f = xbmcvfs.File(fname, 'w')  # extern - Share
                    if PYTHON2:
                        f = xbmcvfs.File(fname, 'w')
                        ret = f.write(merkliste)
                        f.close()
                    else:  # Python3: Bytearray
                        buf = bytearray()
                        buf.extend(merkliste.encode())
                        ret = f.write(buf)
                        f.close()
                    PLog("xbmcvfs_ret: " + str(ret))
                    if ret:
                        sync_list_intern(
                            src_file=fname,
                            dest_file=WATCHFILE)  # Synchronisation
            except Exception as exception:
                PLog(str(exception))
                msg1 = u"Problem Merkliste"
                err_msg = str(exception)
                return msg1, err_msg, str(item_cnt)
        else:
            msg1 = u"Eintrag schon vorhanden"

    #------------------
    if action == 'del':
        my_items, my_ordner = ReadFavourites(
            'Merk')  # 'utf-8'-Decoding in ReadFavourites
        my_ordner = check_ordner(my_ordner)
        if len(my_items):
            PLog('my_items: ' + my_items[-1])
        merkliste = ''
        deleted = False
        for item in my_items:  # Liste -> String
            iname = stringextract('name="', '"', item)  # unicode
            iname = py2_decode(iname)
            name = py2_decode(name)
            PLog('Name: %s, IName: %s' % (name, iname))
            if name == iname:
                deleted = True  # skip Satz = löschen
                continue
            item_cnt = item_cnt + 1
            merkliste = py2_decode(merkliste) + py2_decode(item) + "\n"

        if deleted:
            # Merkliste + Ordnerinfo + Ordner + Ordnerwahl:
            my_ordner = " ".join(my_ordner)
            if my_ordner == '':
                my_ordner = ORDNER
            ordner_info = "\n".join(ORDNER_INFO)
            merkliste = "<merkliste>\n%s</merkliste>\n\n%s\n\n<ordnerliste>%s</ordnerliste>\n" %\
             (merkliste, ordner_info, my_ordner)
            try:
                msg1 = u"Eintrag gelöscht"
                if '//' not in fname:
                    err_msg = RSave(fname, merkliste,
                                    withcodec=True)  # Merkliste speichern
                    PLog(msg1)
                    if err_msg:
                        ret = False
                    else:
                        ret = True
                else:
                    PLog("xbmcvfs_fname: " + fname)
                    f = xbmcvfs.File(fname, 'w')  # extern - Share
                    ret = f.write(merkliste)
                    f.close()
                    PLog("xbmcvfs_ret: " + str(ret))
                if ret:
                    sync_list_intern(src_file=fname,
                                     dest_file=WATCHFILE)  # Synchronisation

            except Exception as exception:
                PLog(str(exception))
                msg1 = u"Problem Merkliste"
                err_msg = str(exception)
                return msg1, err_msg, str(item_cnt)
        else:
            msg1 = "Eintrag nicht gefunden."
            err_msg = u"Merkliste unverändert."
            PLog(msg1)

    #------------------
    if action == 'folder':  # Ordner ändern
        my_items, my_ordner = ReadFavourites(
            'Merk')  # 'utf-8'-Decoding in ReadFavourites
        my_ordner = check_ordner(my_ordner)

        merkliste = ''
        ret = True
        for item in my_items:  # Liste -> String
            iname = stringextract('name="', '"', item)  # unicode
            iname = py2_decode(iname)
            name = py2_decode(name)
            PLog('Name: %s, IName: %s' % (name, iname))
            if name == iname:
                if SETTINGS.getSetting(
                        'pref_merkordner') == 'true':  # Ordner eingeschaltet?
                    oldordner = stringextract('ordner="', '"', item)
                    if len(my_ordner) == 0:  # leer: Initialisierung
                        my_ordner = ORDNER
                    my_ordner.insert(0, u"*ohne Zuordnung*")

                    ret = xbmcgui.Dialog().select(u'Ordner wählen',
                                                  my_ordner,
                                                  preselect=0)
                    ordner = oldordner  # Fallback: vorh. Ordner
                    if ret >= 0:
                        ordner = my_ordner[ret]
                        if ret == 0:  # ohne Zuordnung=leer
                            ordner = ''
                            oldordner = 'dummy'  # dummy ->  ''
                    PLog("ordner: %s, oldordner: %s" % (ordner, oldordner))
                    del my_ordner[0]  # "ohne Zuordnung" löschen

                    if ordner != oldordner:
                        # Ordner im Eintrag aktualisieren:
                        PLog("url: " + url[:100])
                        url = get_plugin_url(
                            url)  # url aus ev. Base64-Kodierung
                        PLog("url: " + url[:100])
                        url = url.replace(
                            '&', '&amp;')  # Anpassung an Favorit-Schema
                        merk = '<merk name="%s" ordner="%s" thumb="%s" Plot="%s">ActivateWindow(10025,&quot;%s&quot;,return)</merk>'  \
                         % (name, ordner, thumb, Plot, url)
                        PLog('merk: ' + merk)
                        item = merk

            item_cnt = item_cnt + 1
            merkliste = py2_decode(merkliste) + py2_decode(item) + "\n"

        if ordner != oldordner:
            ret, err_msg = save_merkliste(fname, merkliste, my_ordner)
        if ret:  # Merkliste gespeichert
            if ordner == oldordner:
                msg1 = u"Ordner unverändert"
            else:
                msg1 = u"Ordner geändert"
            err_msg = u"gewählter Ordner: %s" % ordner
        else:  # Problem beim Speichern
            msg1 = "Problem Merkliste"  # err_msg s. save_merkliste

    return msg1, err_msg, str(item_cnt)