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')
if 'url' in mydict: url = mydict['url'] PLog(action) PLog(name) PLog(thumb) PLog(Plot) PLog(url) if 'filter' in action: # Filter-Aktionen: if action == 'filter': # Aufrufer ShowFavs (Settings: Ordner) watch_filter() # Filter setzen if action == 'filter_delete': watch_filter(delete=True) # Filter (MERKFILTER) löschen else: # Merklisten-Aktionen: Plot = clean_Plot(Plot) msg1, err_msg, item_cnt = Watch_items(action, name, thumb, Plot, url) # Einträge add / del / folder msg2 = err_msg if item_cnt: msg2 = "%s\n%s" % (msg2, u"Einträge: %s" % item_cnt) if action == 'del' or action == 'folder': # Refresh Liste nach Löschen # MERKACTIVE ersetzt hier Ermitteln von Window + Control # bei Verzicht würde jede Liste refresht (stört bei großen Listen) if os.path.isfile(MERKACTIVE) == True: # Merkliste aktiv? xbmc.executebuiltin('Container.Refresh') # 01.02.2029 Dialog ersetzt durch notification icon = R(ICON_DIR_WATCH) xbmcgui.Dialog().notification(msg1, msg2, icon, 5000) # exit() # thread.lock-Error in Kodi-Matrix
def do_folder(): PLog("do_folder:") dialog = xbmcgui.Dialog() head = 'Merklisten-Ordner bearbeiten' slist = [ u'INFO: aktuelle Liste der Merklisten-Ordner', u'INFO: Regeln für neue Merklisten-Ordner', u'Ordner entfernen (nur möglich, wenn nicht verknüpft)', u'Neuen Ordner hinzufügen (bitte die Regeln beachten - s.o.)', u'[COLOR red]RESET:[/COLOR] Basis-Ordnerliste wiederherstellen' ] while 1: # Dauerschleife bis Abbruch ret = xbmcgui.Dialog().select(head, slist) PLog("ret: %d" % ret) if ret == -1 or ret == None: break icon = R(ICON_DIR_WATCH) my_items, my_ordner_list = ReadFavourites('Merk') my_ordner_list = check_ordnerlist( my_ordner_list) # Fallback Basis-Ordner-Liste my_ordner_list = sorted(my_ordner_list) merkliste = " ".join(my_items) # speichern als String merkliste = py2_decode(merkliste) #----------------------------------------------------- # Ordner listen if ret == 0: my_ordner_list = "\n".join(my_ordner_list) ret1 = dialog.textviewer(slist[0], my_ordner_list) if ret1 == None: continue PLog("ret1: %d" % ret1) #----------------------------------------------------- # Regeln für neue Ordner listen if ret == 1: my_info_list = "\n".join(ORDNER_INFO) ret2 = dialog.textviewer(slist[1], my_info_list) if ret2 == None: continue PLog("ret2: %d" % ret2) #----------------------------------------------------- # Ordner entfernen if ret == 2: ret3 = xbmcgui.Dialog().select(slist[2], my_ordner_list) PLog("ret3: %d" % ret3) if ret3 == -1: # Abbruch, Esc continue ordner = '' ordner = my_ordner_list[ret3] PLog("ordner: " + ordner) msg1 = u"Ordner [COLOR red]%s[/COLOR] wirklich löschen?" % ordner ret4 = MyDialog(msg1=msg1, msg2='', msg3='', ok=False, cancel='Abbruch', yes='JA', heading=slist[1]) PLog("ret4: %d" % ret4) if ret4 == 1: exist, link_cnt = check_ordner( ordner, my_ordner_list, my_items) # Abgleich Ordner mit Ordnerliste if link_cnt > 0: msg2 = '' msg3 = '' msg1 = u"Ordner [COLOR red]%s[/COLOR] ist bereits verknüpft." % ordner if link_cnt: msg2 = u"Anzahl der Verknüpfungen: %d" % link_cnt msg3 = u"Ordner kann nicht entfernt werden." MyDialog(msg1, msg2, msg3) else: my_ordner_list.remove(ordner) ret, err_msg = save_merkliste(merkliste, my_ordner_list) # PLog(my_ordner_list) # Debug msg1 = u'Merklisten-Ordner:' msg2 = u"[COLOR red]%s[/COLOR] entfernt" % ordner if ret == False: msg2 = err_msg xbmcgui.Dialog().notification(msg1, msg2, icon, 5000) #----------------------------------------------------- # Ordner hinzufügen if ret == 3: new = get_keyboard_input('Neuen Ordner hinzufügen') # Modul util if new == None or new.strip() == '': continue new_org = py2_decode(new) PLog(new) # kein 100%iger Schutz erforderlich: no_chars = [ u'#', u' ', u'*', u'+', u'|', u',', u'!', u'"', u'$', u'%', u'(', u')', u'?', u'\\', u'~', u'\'', u';', u':', u'.', u'^', u'°' ] notsafe = False for char in no_chars: if char in new: if char == ' ': char = 'Leerzeichen' notsafe = True msg1 = u'unerlaubtes Zeichen: [COLOR red]%s[/COLOR]' % char MyDialog(msg1, '', '') break if notsafe: continue my_ordner_list.append(new) ret, err_msg = save_merkliste(merkliste, my_ordner_list) #PLog(my_ordner_list) # Debug msg1 = u'Merklisten-Ordner:' msg2 = u"[COLOR red]%s[/COLOR] hinzugefügt" % new if ret == False: msg2 = err_msg xbmcgui.Dialog().notification(msg1, msg2, icon, 5000) #----------------------------------------------------- # Basis-Ordnerliste wiederherstellen if ret == 4: msg1 = u"Basis-Ordnerliste wirklich wiederherstellen?" msg2 = u"Eigene Ordner und das Filtern damit entfallen." msg3 = u"Verknüpfungen mit diesen Ordnern bleiben aber erhalten." ret5 = MyDialog(msg1, msg2, msg3, ok=False, cancel='Abbruch', yes='JA', heading=slist[4]) PLog("ret5: %d" % ret5) if ret5 == 1: my_ordner_list = [] ret, err_msg = save_merkliste(merkliste, my_ordner_list) #PLog(my_ordner_list) # Debug msg1 = u'Merklisten-Ordner:' msg2 = u"Basis-Ordnerliste wiederhergestellt" if ret == False: msg2 = err_msg xbmcgui.Dialog().notification(msg1, msg2, icon, 5000) return