The branch, frodo has been updated
       via  c86258fa9ddea6a9fab7ea89e0186499433d5cf3 (commit)
      from  7ff2d469530c06aae3fa08e98da9da96561f80ff (commit)

- Log -----------------------------------------------------------------
http://xbmc.git.sourceforge.net/git/gitweb.cgi?p=xbmc/plugins;a=commit;h=c86258fa9ddea6a9fab7ea89e0186499433d5cf3

commit c86258fa9ddea6a9fab7ea89e0186499433d5cf3
Author: kibje <k...@xbmc.org>
Date:   Mon Jul 1 12:38:12 2013 +0200

    [plugin.image.moebooru] updated to version 0.8.0

diff --git a/plugin.image.moebooru/addon.xml b/plugin.image.moebooru/addon.xml
index ee8566e..18f1bbd 100644
--- a/plugin.image.moebooru/addon.xml
+++ b/plugin.image.moebooru/addon.xml
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
 <addon id="plugin.image.moebooru"
        name="Moebooru"
-       version="0.5.0"
+       version="0.8.0"
        provider-name="Markus Koch">
   <requires>
     <import addon="xbmc.python" version="2.1.0"/>
diff --git a/plugin.image.moebooru/changelog.txt 
b/plugin.image.moebooru/changelog.txt
index 586bceb..1674714 100644
--- a/plugin.image.moebooru/changelog.txt
+++ b/plugin.image.moebooru/changelog.txt
@@ -1,14 +1,26 @@
 ## Version history ##
+### 0.8 Beta ###
+    2013-06-20  Added sorting options for tags
+                Various bugfixes
+### 0.7 Beta ###
+    2013-06-15  Added related tags for tags
+    2013-06-16  Added the search for tags
+                Search will be automatically invoked if no images were 
retrieved
+### 0.6 Beta ###
+    2013-06-04  Fixed random
+                Added installation instructions
+    2013-06-14  Added a function to show the tags of the image to the context 
menu
+    2013-06-15  Added preview images for related tags
 ### 0.5 Beta ###
-    2013-05-29  Fixed an error requiring the user to reenter the search query 
when using the slideshow button.
+    2013-05-29  Fixed an error requiring the user to reenter the search query 
when using the slideshow button
 ### 0.4 Beta ###
     2013-05-20  Updated translation system
                 Various bugfixes
                 Added the German translation
 ### 0.3 Beta ###
+    2013-05-19  Various bugfixes and optimizations
     2013-05-20  Added proper icons
                 Added a fanart
-    2013-05-19  Various bugfixes and optimizations
 ### 0.2 Beta ###
     2013-04-01  Added default search parameters (rating and order)
     2013-04-03  Finished the pools
diff --git a/plugin.image.moebooru/default.py b/plugin.image.moebooru/default.py
index a1655be..057d3ce 100644
--- a/plugin.image.moebooru/default.py
+++ b/plugin.image.moebooru/default.py
@@ -14,7 +14,24 @@ language = __settings__.getLocalizedString
 
 IMAGE_PATH = 
os.path.join(xbmc.translatePath(__settings__.getAddonInfo('path')),'resources','images')
 SHISTORY_PATH = 
os.path.join(xbmc.translatePath(__settings__.getAddonInfo('profile')),'search_history')
-SHISTORY_DATASEP = '%preview_img%'
+SHISTORY_DATASEP = '#preview_img#'
+
+_MODE_LATEST = 1
+_MODE_SEARCH = 2
+_MODE_RANDOM = 3
+_MODE_POOLS = 4
+_MODE_POOL = 5
+_MODE_HISTORY = 6
+_MODE_ADVSEARCH = 7
+_MODE_TAGS = 8
+
+_MODE_IMAGE = 100
+
+_GETREL = "#gEtReL#" # Needs to be 8 characters and must not be a valid tag
+_GETUSR = "#gEtUsR#"
+
+_REF_HISTORY = 1
+_REF_TAGLIST = 2
 
 # Make profile dir on first startup
 if not 
os.path.exists(xbmc.translatePath(__settings__.getAddonInfo('profile'))):
@@ -25,6 +42,7 @@ class moebooruApi:
     def __init__(self):
         self.pRating = ["", "safe", "questionable", "explicit", 
"questionableplus", "questionableless"]
         self.pOrder = ["", "score", "fav", "wide", "nonwide"]
+        self.pTagOrder = ["", "date", "count", "name"]
         
     def getAdvSearch(self, search):
         advSettings = ""
@@ -36,9 +54,9 @@ class moebooruApi:
                 advSettings += " rating:" + 
self.pRating[int(__settings__.getSetting('rating'))]
         return advSettings
         
-    def getImages(self, search, page=1):
+    def getImages(self, search, page=1, epp=__settings__.getSetting('epp')):
         result = []
-        raw_result = urllib.urlopen(__settings__.getSetting('server') + 
"/post.json" + "?tags=" + urllib.quote_plus(str(search) + 
self.getAdvSearch(search)) + "&limit=" + str(__settings__.getSetting('epp')) + 
"&page=" + str(page))
+        raw_result = urllib.urlopen(__settings__.getSetting('server') + 
"/post.json" + "?tags=" + urllib.quote_plus(str(search) + 
self.getAdvSearch(search)) + "&limit=" + str(epp) + "&page=" + str(page))
         json = simplejson.loads(raw_result.read())
         return json
         
@@ -55,39 +73,59 @@ class moebooruApi:
         return result
         
     def getImageCount(self, search=""): # Since the JSON answer doesn't 
include the total post count we need to "parse" XML.
-        raw_result = urllib.urlopen(__settings__.getSetting('server') + 
"/post.xml" + "?limit=1&query=" + urllib.quote_plus(str(search) + 
self.getAdvSearch(search)))
+        raw_result = urllib.urlopen(__settings__.getSetting('server') + 
"/post.xml" + "?limit=1&tags=" + self.getAdvSearch(search))
         result = []
         result = raw_result.read().split("\"")
         return result[5]
 
+    def getRelatedTags(self, tags): # Queries the tags related to the given 
ones
+        json = []
+        raw_result = urllib.urlopen(__settings__.getSetting('server') + 
"/tag/related.json" + "?tags=" + urllib.quote_plus(str(tags)))
+        json = simplejson.loads(raw_result.read())
+        return json
+        
+    def searchTags(self, search):
+        json = []
+        advSettings = ""
+        if (int(__settings__.getSetting('tagOrder')) > 0):
+            advSettings += "&order=" + 
self.pTagOrder[int(__settings__.getSetting('tagOrder'))]
+        raw_result = urllib.urlopen(__settings__.getSetting('server') + 
"/tag.json" + "?name=" + urllib.quote_plus(str(search)) + advSettings)
+        json = simplejson.loads(raw_result.read())
+        return json
 
 class moebooruSession:
     def __init__(self):
         self.api = moebooruApi()
         self.max_history = int(float(__settings__.getSetting('shistorySize')))
-    def addDir(self,name,url,mode,iconimage,page=1,tot=0,sort=0, 
q="newsearch"):
-        
#u=sys.argv[0]+"?url="+urllib.quote_plus(url)+"&mode="+str(mode)+"&page="+str(page)+"&name="+urllib.quote_plus(name)+"&q="+urllib.quote_plus(str(q))
+    def addDir(self,name,url,mode,iconimage,page=1,tot=0,sort=0, 
q="newsearch", ref=0):
         
u=sys.argv[0]+"?url="+urllib.quote_plus(url)+"&mode="+str(mode)+"&page="+str(page)+"&q="+urllib.quote_plus(str(q))
         liz=xbmcgui.ListItem(name, 'test',iconImage="DefaultFolder.png", 
thumbnailImage=iconimage)
         liz.setInfo( type="image", infoLabels={"Title": 
name,"Label":str(sort)} )
-        if mode == 2: # This also includes the search button itself... but who 
cares?
-            contextMenu = [(language(33001), 
xbmc.translatePath('XBMC.RunScript(special://home/addons/plugin.image.moebooru/default.py,rmFromHistory,'+q+')'))]
-            liz.addContextMenuItems(contextMenu)
+        contextMenu = []
+        if ref == _REF_HISTORY or ref == _REF_TAGLIST: # The related tags 
button
+            contextMenu.append ([language(32003), 
xbmc.translatePath('Container.Update(%s?mode=%s&url=tags&q=%s)' % (sys.argv[0], 
_MODE_TAGS, _GETREL + q))])
+        if ref == _REF_HISTORY:
+            contextMenu.append([language(33001), 
xbmc.translatePath('XBMC.RunScript(special://home/addons/plugin.image.moebooru/default.py,rmFromHistory,'+q+')')])
+        liz.addContextMenuItems(contextMenu)
         return 
xbmcplugin.addDirectoryItem(handle=int(sys.argv[1]),url=u,listitem=liz,isFolder=True,totalItems=tot)
 
-    def addImage(self, iId, url, mode, iconimage, tot=0):
+    def addImage(self, iId, url, mode, iconimage, tot=0, relatedTags=""):
         liz=xbmcgui.ListItem(iId, iconImage="DefaultImage.png", 
thumbnailImage=iconimage)
         liz.setInfo( type="image", infoLabels={ "Id": iId })
+        if (mode == _MODE_IMAGE) and (relatedTags != ""):
+            contextMenu = [(language(36001), 
xbmc.translatePath('Container.Update(%s?mode=%s&url=tags&q=%s)' % (sys.argv[0], 
_MODE_TAGS, relatedTags)))]
+            liz.addContextMenuItems(contextMenu)
         return 
xbmcplugin.addDirectoryItem(handle=int(sys.argv[1]),url=url,listitem=liz,isFolder=False,totalItems=tot)
 
     def CATEGORIES(self):
-        
self.addDir(language(31001),'latest',1,os.path.join(IMAGE_PATH,'latest.png'),sort=0)
-        
self.addDir(language(31002),'search',2,os.path.join(IMAGE_PATH,'search.png'),sort=0)
-        
self.addDir(language(31003),'random',3,os.path.join(IMAGE_PATH,'random.png'),sort=0)
-        
self.addDir(language(31004),'pools',4,os.path.join(IMAGE_PATH,'pools.png'),sort=0)
+        
self.addDir(language(31001),'latest',_MODE_LATEST,os.path.join(IMAGE_PATH,'latest.png'),sort=0)
+        
self.addDir(language(31002),'search',_MODE_SEARCH,os.path.join(IMAGE_PATH,'search.png'),sort=0)
+        
self.addDir(language(31003),'random',_MODE_RANDOM,os.path.join(IMAGE_PATH,'random.png'),sort=0)
+        
self.addDir(language(31004),'pools',_MODE_POOLS,os.path.join(IMAGE_PATH,'pools.png'),sort=0)
         # 5 is used for pools
         # NYI: self.addDir('Advanced 
Search','advSearch',7,os.path.join(IMAGE_PATH,'search.png'),sort=0)
-        
self.addDir(language(31005),'history',6,os.path.join(IMAGE_PATH,'search_history.png'),sort=0)
+        
self.addDir(language(31006),'tags',_MODE_TAGS,os.path.join(IMAGE_PATH,'tags.png'),sort=0,
 q=_GETUSR)
+        
self.addDir(language(31005),'history',_MODE_HISTORY,os.path.join(IMAGE_PATH,'search_history.png'),sort=0)
         return True
         
     def SEARCH(self, query="", page=1):
@@ -96,19 +134,22 @@ class moebooruSession:
             kbd.doModal()
             if (kbd.isConfirmed()):
                 query = kbd.getText()
-                
xbmc.executebuiltin("Container.Refresh(%s?mode=2&url=search&q=%s)" % 
(sys.argv[0], query))
-                return False;
-            else:
-                return False
+                
xbmc.executebuiltin("Container.Refresh(%s?mode=%s&url=search&q=%s)" % 
(sys.argv[0], _MODE_SEARCH, query))
+            return False
         else:
             images = self.api.getImages(query, page)
             
+            if len(images) == 0: # No results -> suggestions
+                xbmc.executebuiltin("Notification(" + language(37001) + ")")
+                self.TAGS(_GETUSR + query)
+            if page == 1 and query != "" and len(images) > 0: # Display the 
related tags button on the first page nly
+                
self.addDir(language(32003),'tags',_MODE_TAGS,os.path.join(IMAGE_PATH,'tags.png'),sort=0,
 q=_GETREL + query)
             for img in images:
-                self.addImage(str(img.get("id","")),img.get("jpeg_url", 
""),100,img.get("preview_url",""), len(images))
+                self.addImage(str(img.get("id","")),img.get("jpeg_url", 
""),_MODE_IMAGE,img.get("preview_url",""), len(images), relatedTags = 
img.get("tags",""))
             if query!="" and page == 1 and kbd.isConfirmed() and len(images) > 
0: # Only add newly entered things and only add these, if results were found
                  self.conf_appendList(SHISTORY_PATH, query + SHISTORY_DATASEP 
+ img.get("preview_url",os.path.join(IMAGE_PATH,'search.png')))
             if float(len(images)) == float(__settings__.getSetting('epp')): # 
If we loaded the max. number of images that we can, we assume there are more
-                
self.addDir(language(32002),'search',2,os.path.join(IMAGE_PATH,'more.png'),page=int(page)+1,sort=0,
 q=query)
+                
self.addDir(language(32002),'search',_MODE_SEARCH,os.path.join(IMAGE_PATH,'more.png'),page=int(page)+1,sort=0,
 q=query)
             return True
     def ADVSEARCH(self, query="", page=1):
         print "NYI"
@@ -121,20 +162,18 @@ class moebooruSession:
             item = item.split(SHISTORY_DATASEP)
             imgUrl=item[1]
             query=item[0]
-            self.addDir(query,'search',2,imgUrl,sort=0, q=query)
+            self.addDir(query,'search',_MODE_SEARCH,imgUrl,sort=0, q=query, 
ref=_REF_HISTORY)
         return True
     def POOLS(self, query="", page=1):
         kbd = xbmc.Keyboard('',language(34001))
         if query=="":
-            
self.addDir(language(35001),'pools',4,os.path.join(IMAGE_PATH,'search.png'),sort=0,
 q="newquery")
+            
self.addDir(language(35001),'pools',_MODE_POOLS,os.path.join(IMAGE_PATH,'search.png'),sort=0,
 q="newquery")
         if query=="newquery":
             kbd.doModal()
             if (kbd.isConfirmed()):
                 query = kbd.getText()
-                
xbmc.executebuiltin("Container.Refresh(%s?mode=4&url=pools&q=%s)" % 
(sys.argv[0], query))
-                return False
-            else:
-                return False
+                
xbmc.executebuiltin("Container.Refresh(%s?mode=%s&url=pools&q=%s)" % 
(sys.argv[0], _MODE_POOLS, query))
+            return False
         else:
             pools = self.api.getPools(query,page)
             for pool in pools:
@@ -142,35 +181,82 @@ class moebooruSession:
                 pId=pool.get("id","0")
                 try:
                     previewUrl = os.path.join(IMAGE_PATH,'pools.png')
-                    print str(__settings__.getSetting('previewPools'))
                     if str(__settings__.getSetting('previewPools')) == "true":
                         imgs = self.api.getImagesFromPool(str(pId))
                         previewUrl = imgs[0].get('preview_url')
-                    self.addDir(str(name).replace("_"," 
"),'pool',5,previewUrl,sort=0, q=str(pId), tot=len(pools))
+                    self.addDir(str(name).replace("_"," 
"),'pool',_MODE_POOL,previewUrl,sort=0, q=str(pId), tot=len(pools))
                 except:
                     print language(40001)
 
         if str(len(pools))=="20":
-            
self.addDir(language(32002),'pools',4,os.path.join(IMAGE_PATH,'more.png'),page=int(page)+1,sort=0,
 q=query)
+            
self.addDir(language(32002),'pools',_MODE_POOLS,os.path.join(IMAGE_PATH,'more.png'),page=int(page)+1,sort=0,
 q=query)
         return True
     def POOL(self, query="", page=1):
         images = self.api.getImagesFromPool(query, page)
         for img in images:
-            self.addImage(str(img.get("id","")),img.get("jpeg_url", 
""),100,img.get("preview_url",""), tot=len(images))
+            self.addImage(str(img.get("id","")),img.get("jpeg_url", 
""),_MODE_IMAGE,img.get("preview_url",""), tot=len(images), relatedTags = 
img.get("tags",""))
         return True
     def RANDOM(self):
         page=randint(1,int(self.api.getImageCount()) // 
int(float(__settings__.getSetting('epp'))))
-        print "RAND:" + str(page)
-        images = self.api.getImages(" rating:all", page) # "rating all" is 
required because we can currently not get the amount of images for a specific 
search.
+        images = self.api.getImages("", page)
         for img in images:
-            self.addImage(str(img.get("id","")),img.get("jpeg_url", 
""),100,img.get("preview_url",""), tot=len(images))
-        
self.addDir(language(32002),'random',3,os.path.join(IMAGE_PATH,'more.png'),sort=0)
+            self.addImage(str(img.get("id","")),img.get("jpeg_url", 
""),_MODE_IMAGE,img.get("preview_url",""), tot=len(images), relatedTags = 
img.get("tags",""))
+        
self.addDir(language(32002),'random',_MODE_RANDOM,os.path.join(IMAGE_PATH,'more.png'),sort=0)
         return True
+    def TAGS(self, query):
+        typ = 0 # 0=list
+        
+        # Secton for related tags
+        if (query[:8] == _GETREL):
+            query = query[8:]
+            typ = 1 # 1=relTags
+            
+        # Section for user input
+        elif (query[:8] == _GETUSR):
+            query = query[8:]
+            typ = 2 #2=searchTag
+            if (query == ""):
+                kbd = xbmc.Keyboard('',language(34002))
+                kbd.doModal()
+                if (kbd.isConfirmed()):
+                    query = _GETUSR + kbd.getText()
+                    
xbmc.executebuiltin("Container.Refresh(%s?mode=%s&url=tags&q=%s)" % 
(sys.argv[0], _MODE_TAGS, query))
+                return False
+            else:
+                tags = self.api.searchTags(query)
+                lst = []
+                for tag in tags:
+                    lst.append(tag.get("name"))
+                tags = lst
         
+        # Parse the completed list / query the related things
+        if typ == 0 or typ == 1:
+            tags = query.split(" ")
+        if (typ == 1):
+            query = self.api.getRelatedTags(query)
+            lst = []
+            for tag in tags:
+                temp = query.get(tag)
+                for subtag in temp:
+                    lst.append(subtag[0])
+            tags = lst
+        
+        # General output
+        for tag in tags:
+            previewUrl = os.path.join(IMAGE_PATH,'search.png')
+            if str(__settings__.getSetting('previewTags')) == "true":
+                imgs = self.api.getImages(tag, epp=1)
+                if (len(imgs) > 0):
+                    previewUrl = imgs[0].get('preview_url')
+            self.addDir(tag,'search',_MODE_SEARCH,previewUrl,sort=0, q=tag, 
ref=_REF_TAGLIST, tot=len(tags))
+        return True
+    
     def conf_getList(self, config_file):
         if not os.path.exists(config_file): return []
         fobj = open(config_file,'r')
         history = fobj.read()
+        if ("%preview_img%" in history): # Required when updating from any 
version older than 0.8
+            history = history.replace("%preview_img%", SHISTORY_DATASEP)
         fobj.close()
         return history.splitlines()
     def conf_appendList(self, config_file, item):
@@ -213,7 +299,6 @@ def get_params():
 
 def main():
     # Get all parameters (current path etc.)
-    print "MOE: FULL PATH=" + sys.argv[2]
     params = get_params()
     url=None
     name=None
@@ -250,22 +335,24 @@ def main():
 
     if mode==None or url==None or len(url)<1:
         success = moe.CATEGORIES()
-    elif mode==1:
+    elif mode == _MODE_LATEST:
         success = moe.LATEST(page)
-    elif mode==2:
+    elif mode == _MODE_SEARCH:
         success = moe.SEARCH(query, page)
-    elif mode==3:
+    elif mode == _MODE_RANDOM:
         success = moe.RANDOM()
-    elif mode==4:
+    elif mode == _MODE_POOLS:
         if query=="newsearch":
             query=""
         success = moe.POOLS(query, page)
-    elif mode==5:
+    elif mode == _MODE_POOL:
         success = moe.POOL(query, page)
-    elif mode==6:
+    elif mode == _MODE_HISTORY:
         success = moe.HISTORY()
-    elif mode==7:
+    elif mode == _MODE_ADVSEARCH:
         success = moe.ADVSEARCH()
+    elif mode == _MODE_TAGS:
+        success = moe.TAGS(query)
         
     
xbmcplugin.endOfDirectory(int(sys.argv[1]),succeeded=success,updateListing=update_dir,cacheToDisc=cache)
     xbmc.executebuiltin("Container.SetViewMode(500)") # I don't really like 
this but I did not find any way to set the default layout.
diff --git a/plugin.image.moebooru/icon.png b/plugin.image.moebooru/icon.png
index c82d693..a94eb36 100644
Binary files a/plugin.image.moebooru/icon.png and 
b/plugin.image.moebooru/icon.png differ
diff --git a/plugin.image.moebooru/resources/images/search.png 
b/plugin.image.moebooru/resources/images/search.png
index 3d54934..67f5226 100644
Binary files a/plugin.image.moebooru/resources/images/search.png and 
b/plugin.image.moebooru/resources/images/search.png differ
diff --git a/plugin.image.moebooru/resources/language/English/strings.po 
b/plugin.image.moebooru/resources/language/English/strings.po
index 60c1748..0edf29e 100644
--- a/plugin.image.moebooru/resources/language/English/strings.po
+++ b/plugin.image.moebooru/resources/language/English/strings.po
@@ -3,7 +3,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: XBMC-Addons\n"
 "Report-Msgid-Bugs-To: alanw...@xbmc.org\n"
-"POT-Creation-Date: 2013-05-20 19:31+0000\n"
+"POT-Creation-Date: 2013-06-20 14:57+0000\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language-Team: LANGUAGE\n"
@@ -50,7 +50,11 @@ msgctxt "#30122"
 msgid "Rating"
 msgstr ""
 
-#empty strings from id 30123 to 30140
+msgctxt "#30123"
+msgid "Sort tags by"
+msgstr ""
+
+#empty strings from id 30124 to 30140
 
 msgctxt "#30141"
 msgid "Load preview for pools"
@@ -62,7 +66,12 @@ msgstr ""
 
 #APPLICATION
 #Main menu
-#empty strings from id 30143 to 30800
+
+msgctxt "#30143"
+msgid "Load preview for tags"
+msgstr ""
+
+#empty strings from id 30144 to 30800
 
 msgctxt "#30801"
 msgid "Server default"
@@ -110,8 +119,26 @@ msgctxt "#30826"
 msgid "Questionable and Safe"
 msgstr ""
 
+#empty strings from id 30827 to 30840
+
+msgctxt "#30841"
+msgid "Server default"
+msgstr ""
+
+msgctxt "#30842"
+msgid "Date"
+msgstr ""
+
+msgctxt "#30843"
+msgid "Count"
+msgstr ""
+
+msgctxt "#30844"
+msgid "Name"
+msgstr ""
+
 #misc
-#empty strings from id 30827 to 31000
+#empty strings from id 30845 to 31000
 
 msgctxt "#31001"
 msgid "Latest"
@@ -133,15 +160,23 @@ msgctxt "#31005"
 msgid "Search history"
 msgstr ""
 
+msgctxt "#31006"
+msgid "Search tags"
+msgstr ""
+
 #Generic buttons
-#empty strings from id 31006 to 32001
+#empty strings from id 31007 to 32001
 
 msgctxt "#32002"
 msgid "More"
 msgstr ""
 
+msgctxt "#32003"
+msgid "Related tags"
+msgstr ""
+
 #history
-#empty strings from id 32003 to 33000
+#empty strings from id 32004 to 33000
 
 msgctxt "#33001"
 msgid "Remove from history"
@@ -154,15 +189,33 @@ msgctxt "#34001"
 msgid "Enter tag to search for:"
 msgstr ""
 
+msgctxt "#34002"
+msgid "Enter string to search for:"
+msgstr ""
+
 #Pools
-#empty strings from id 34002 to 35000
+#empty strings from id 34003 to 35000
 
 msgctxt "#35001"
 msgid "Search pool"
 msgstr ""
 
+#Image context menus
+#empty strings from id 35002 to 36000
+
+msgctxt "#36001"
+msgid "Image tags"
+msgstr ""
+
+#Notifications
+#empty strings from id 36002 to 37000
+
+msgctxt "#37001"
+msgid "No results were found!, Showing suggested tags instead."
+msgstr ""
+
 #ERRORS / DEBUG / CONSOLE
-#empty strings from id 35002 to 40000
+#empty strings from id 37002 to 40000
 
 msgctxt "#40001"
 msgid "ERROR: Pool not readable. Maybe because of japanese characters in it?"
diff --git a/plugin.image.moebooru/resources/language/German/strings.po 
b/plugin.image.moebooru/resources/language/German/strings.po
index d7bb7fe..bc3f7bf 100644
--- a/plugin.image.moebooru/resources/language/German/strings.po
+++ b/plugin.image.moebooru/resources/language/German/strings.po
@@ -3,7 +3,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: XBMC-Addons\n"
 "Report-Msgid-Bugs-To: alanw...@xbmc.org\n"
-"POT-Creation-Date: 2013-05-20 19:31+0000\n"
+"POT-Creation-Date: 2013-06-20 14:57+0000\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language-Team: LANGUAGE\n"
@@ -41,6 +41,10 @@ msgctxt "#30122"
 msgid "Rating"
 msgstr "Einstufung"
 
+msgctxt "#30123"
+msgid "Sort tags by"
+msgstr "Tags sortieren nach"
+
 msgctxt "#30141"
 msgid "Load preview for pools"
 msgstr "Vorschau für Bilderpools laden"
@@ -49,6 +53,10 @@ msgctxt "#30142"
 msgid "Size of the search history"
 msgstr "Größe des Suchverlaufs"
 
+msgctxt "#30143"
+msgid "Load preview for tags"
+msgstr "Vorschau für Tags laden"
+
 msgctxt "#30801"
 msgid "Server default"
 msgstr "Servereinstellung"
@@ -93,6 +101,22 @@ msgctxt "#30826"
 msgid "Questionable and Safe"
 msgstr "Fraglich und jugendfrei"
 
+msgctxt "#30841"
+msgid "Server default"
+msgstr "Servereinstellung"
+
+msgctxt "#30842"
+msgid "Date"
+msgstr "Datum"
+
+msgctxt "#30843"
+msgid "Count"
+msgstr "Anzahl"
+
+msgctxt "#30844"
+msgid "Name"
+msgstr "Name"
+
 msgctxt "#31001"
 msgid "Latest"
 msgstr "Neueste"
@@ -113,22 +137,42 @@ msgctxt "#31005"
 msgid "Search history"
 msgstr "Suchverlauf"
 
+msgctxt "#31006"
+msgid "Search tags"
+msgstr "Tags suchen"
+
 msgctxt "#32002"
 msgid "More"
 msgstr "Mehr"
 
+msgctxt "#32003"
+msgid "Related tags"
+msgstr "Verwandte Tags"
+
 msgctxt "#33001"
 msgid "Remove from history"
 msgstr "Aus dem Verlauf löschen"
 
 msgctxt "#34001"
 msgid "Enter tag to search for:"
-msgstr "Geben sie die Tags ein:"
+msgstr "Geben Sie die Tags ein:"
+
+msgctxt "#34002"
+msgid "Enter string to search for:"
+msgstr "Geben Sie den Suchbegriff ein:"
 
 msgctxt "#35001"
 msgid "Search pool"
 msgstr "Bilderpool suchen"
 
+msgctxt "#36001"
+msgid "Image tags"
+msgstr "Bildtags"
+
+msgctxt "#37001"
+msgid "No results were found!, Showing suggested tags instead."
+msgstr "Keine Bilder gefunden!, Meinten Sie einen der angezeigten Tags?"
+
 msgctxt "#40001"
 msgid "ERROR: Pool not readable. Maybe because of japanese characters in it?"
 msgstr "FEHLER: Bilderpool kann nicht gelesen werden."
diff --git a/plugin.image.moebooru/resources/settings.xml 
b/plugin.image.moebooru/resources/settings.xml
index cee82f9..63126c8 100644
--- a/plugin.image.moebooru/resources/settings.xml
+++ b/plugin.image.moebooru/resources/settings.xml
@@ -6,9 +6,11 @@
     <category label="30002">
            <setting id="order" type="enum" label="30121" 
lvalues="30801|30802|30803|30804|30805" default="0"/>
         <setting id="rating" type="enum" label="30122" 
lvalues="30821|30822|30823|30824|30825|30826" default="5"/>
+        <setting id="tagOrder" type="enum" label="30123" 
lvalues="30841|30842|30843|30844" default="0"/>
     </category>
     <category label="30003">
            <setting id="previewPools" type="bool" label="30141" 
default="false"/>
+           <setting id="previewTags" type="bool" label="30143" default="true"/>
            <setting id="shistorySize" type="slider" label="30142" 
range="1,100" option="int" default="10"/>
     </category>
 </settings>

-----------------------------------------------------------------------

Summary of changes:
 plugin.image.moebooru/addon.xml                    |    2 +-
 plugin.image.moebooru/changelog.txt                |   16 ++-
 plugin.image.moebooru/default.py                   |  173 +++++++++++++++-----
 plugin.image.moebooru/icon.png                     |  Bin 102193 -> 116975 
bytes
 plugin.image.moebooru/resources/images/search.png  |  Bin 18398 -> 17243 bytes
 .../resources/images/{search.png => tags.png}      |  Bin 18398 -> 18398 bytes
 .../resources/language/English/strings.po          |   69 +++++++-
 .../resources/language/German/strings.po           |   48 +++++-
 plugin.image.moebooru/resources/settings.xml       |    2 +
 9 files changed, 254 insertions(+), 56 deletions(-)
 copy plugin.image.moebooru/resources/images/{search.png => tags.png} (100%)


hooks/post-receive
-- 
Plugins

------------------------------------------------------------------------------
This SF.net email is sponsored by Windows:

Build for Windows Store.

http://p.sf.net/sfu/windows-dev2dev
_______________________________________________
Xbmc-addons mailing list
Xbmc-addons@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/xbmc-addons

Reply via email to