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