diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..5d3615c --- /dev/null +++ b/.gitattributes @@ -0,0 +1,8 @@ +.gitignore export-ignore +.gitattributes export-ignore +.github export-ignore +__pycache__ export-ignore +*.psd export-ignore +*.pyo export-ignore +*.pyc export-ignore +*.mo export-ignore \ No newline at end of file diff --git a/.github/workflows/addon-submitter.yml b/.github/workflows/addon-submitter.yml new file mode 100644 index 0000000..9a5bbed --- /dev/null +++ b/.github/workflows/addon-submitter.yml @@ -0,0 +1,70 @@ +name: Kodi Addon-Submitter + +on: + create: + tags: + - v* + +jobs: + kodi-addon-submitter: + runs-on: ubuntu-latest + name: Kodi Addon Submitter + steps: + + - name: Checkout + uses: actions/checkout@v1 + + - name: Extract kodi official repository target + id: extract_branch_pr + shell: bash + env: + ADDON_ID: ${{ github.event.repository.name }} + run: | + echo "##[set-output name=branch;]$(git --no-pager branch -a --contains "$GITHUB_SHA" | grep 'remotes/origin/' | cut -d '/' -f3)" + if [[ $ADDON_ID == plugin* ]]; then + echo "##[set-output name=repo;]repo-plugins" + else + echo "##[set-output name=repo;]repo-scripts" + fi + + - name: Kodi addon checker validation + id: kodi-addon-checker + uses: xbmc/action-kodi-addon-checker@v1.2 + with: + kodi-version: ${{ steps.extract_branch_pr.outputs.branch }} + addon-id: ${{ github.event.repository.name }} + is-pr: false + + - name: Generate distribution zip and submit to official kodi repository + id: kodi-addon-submitter + uses: xbmc/action-kodi-addon-submitter@v1.2 + with: # Replace all the below values + kodi-repository: ${{ steps.extract_branch_pr.outputs.repo }} + kodi-version: ${{ steps.extract_branch_pr.outputs.branch }} + addon-id: ${{ github.event.repository.name }} + env: # Make sure you create the below secrets (GH_TOKEN and EMAIL) + GH_USERNAME: ${{ github.repository_owner }} + GH_TOKEN: ${{secrets.GH_TOKEN}} + EMAIL: ${{secrets.EMAIL}} + + - name: Create Github Release + id: create_release + uses: actions/create-release@v1.0.0 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + tag_name: ${{ github.ref }} + release_name: Release ${{ github.ref }} + draft: false + prerelease: false + + - name: Upload Addon zip to github release + id: upload-release-asset + uses: actions/upload-release-asset@v1.0.1 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + upload_url: ${{ steps.create_release.outputs.upload_url }} + asset_path: ${{ steps.kodi-addon-submitter.outputs.addon-zip }} + asset_name: ${{ steps.kodi-addon-submitter.outputs.addon-zip }} + asset_content_type: application/zip \ No newline at end of file diff --git a/addon.xml b/addon.xml index bbc518e..a3a5ba1 100644 --- a/addon.xml +++ b/addon.xml @@ -1,24 +1,24 @@ - + - - - + + - - + executable + - AutoCompletion for the virtual keyboard (needs skin support) - AutoCompletion for the virtual keyboard (needs skin support) + AutoCompletion for the virtual keyboard (needs skin support) + AutoCompletion for the virtual keyboard (needs skin support) + Autocompletar para el teclado virtual (necesita soporte de skin) + Autocompletar para el teclado virtual (necesita soporte de skin) all - GNU GENERAL PUBLIC LICENSE Version 2.1, February 1999 - https://github.com/phil65/plugin.program.autocompletion + GPL-2.0-or-later + https://github.com/finkleandeinhorn/script.module.autocompletion resources/icon.png - resources/fanart.jpg resources/screenshot-01.jpg resources/screenshot-02.jpg resources/screenshot-03.jpg diff --git a/plugin.py b/plugin.py old mode 100755 new mode 100644 index 9a12059..2cad226 --- a/plugin.py +++ b/plugin.py @@ -3,12 +3,15 @@ # Copyright (C) 2015 - Philipp Temminghoff # This program is Free Software see LICENSE file for details -import sys import xbmc +import xbmcaddon import xbmcgui import xbmcplugin -import xbmcaddon -import simplejson as json + +import json +import sys +from urllib.parse import parse_qsl + import AutoCompletion ADDON = xbmcaddon.Addon() @@ -16,44 +19,45 @@ def get_kodi_json(method, params): - json_query = xbmc.executeJSONRPC('{"jsonrpc": "2.0", "method": "%s", "params": %s, "id": 1}' % (method, params)) - json_query = unicode(json_query, 'utf-8', errors='ignore') + query_params = {"jsonrpc": "2.0", "id": 1, "method": method, "params": params} + json_query = xbmc.executeJSONRPC(json.dumps(query_params)) + return json.loads(json_query) def start_info_actions(infos, params): + listitems = [] for info in infos: if info == 'autocomplete': listitems = AutoCompletion.get_autocomplete_items(params["id"], params.get("limit", 10)) elif info == 'selectautocomplete': - if params.get("handle"): - xbmcplugin.setResolvedUrl(handle=int(params.get("handle")), - succeeded=False, - listitem=xbmcgui.ListItem()) - try: - window = xbmcgui.Window(10103) - except Exception: - return None - window.setFocusId(300) - get_kodi_json(method="Input.SendText", - params='{"text":"%s", "done":false}' % params.get("id")) - return None - # xbmc.executebuiltin("SendClick(103,32)") - pass_list_to_skin(data=listitems, - handle=params.get("handle", ""), - limit=params.get("limit", 20)) + xbmc.executebuiltin('Dialog.Close(busydialog)') + xbmc.sleep(500) + get_kodi_json( + method="Input.SendText", + params={"text": params.get("id"), "done": False}, + ) + xbmc.executebuiltin('ActivateWindowAndFocus(virtualkeyboard,300,0)') + + pass_list_to_skin( + data=listitems, + handle=params.get("handle", ""), + limit=params.get("limit", 20), + ) def pass_list_to_skin(data=[], handle=None, limit=False): if data and limit and int(limit) < len(data): - data = data[:int(limit)] - if not handle: - return None - if data: + data = data[: int(limit)] + + if handle and data: items = create_listitems(data) - xbmcplugin.addDirectoryItems(handle=handle, - items=[(i.getProperty("path"), i, False) for i in items], - totalItems=len(items)) + xbmcplugin.addDirectoryItems( + handle=handle, + items=[(i.getProperty("path"), i, False) for i in items], + totalItems=len(items), + ) + xbmc.executebuiltin('Dialog.Close(busydialog)') xbmcplugin.endOfDirectory(handle) @@ -61,16 +65,15 @@ def create_listitems(data=None): if not data: return [] itemlist = [] - for (count, result) in enumerate(data): + for count, result in enumerate(data): listitem = xbmcgui.ListItem(str(count)) - for (key, value) in result.iteritems(): + for key, value in result.items(): if not value: continue - value = unicode(value) if key.lower() in ["label"]: listitem.setLabel(value) elif key.lower() in ["search_string"]: - path = "plugin://plugin.program.autocompletion/?info=selectautocomplete&&id=%s" % value + path = f"plugin://plugin.program.autocompletion/?info=selectautocomplete&id={value}" listitem.setPath(path=path) listitem.setProperty('path', path) listitem.setProperty("index", str(count)) @@ -79,24 +82,18 @@ def create_listitems(data=None): return itemlist -if (__name__ == "__main__"): - xbmc.log("version %s started" % ADDON_VERSION) +if __name__ == "__main__": + xbmc.log(f"version {ADDON_VERSION} started") args = sys.argv[2][1:] handle = int(sys.argv[1]) infos = [] params = {"handle": handle} - delimiter = "&&" - for arg in args.split(delimiter): - param = arg.replace('"', '').replace("'", " ") - if param.startswith('info='): - infos.append(param[5:]) - else: - try: - params[param.split("=")[0].lower()] = "=".join(param.split("=")[1:]).strip() - except Exception: - pass + params.update(dict(parse_qsl(args, keep_blank_values=True))) + + if "info" in params: + infos.append(params['info']) + if infos: start_info_actions(infos, params) xbmc.log('finished') - diff --git a/resources/language/English/strings.po b/resources/language/resource.language.en_gb/strings.po similarity index 100% rename from resources/language/English/strings.po rename to resources/language/resource.language.en_gb/strings.po diff --git a/resources/language/resource.language.es_es/strings.po b/resources/language/resource.language.es_es/strings.po new file mode 100644 index 0000000..48306ae --- /dev/null +++ b/resources/language/resource.language.es_es/strings.po @@ -0,0 +1,40 @@ +# Kodi language file +# Addon Name: AutoCompletion for virtual keyboard +# Addon id: plugin.program.autocompletion +# Addon version: 1.0.0 +# Addon Provider: phil65 +msgid "" +msgstr "" +"Project-Id-Version: XBMC-Addons\n" +"Report-Msgid-Bugs-To: alanwww1@xbmc.org\n" +"POT-Creation-Date: 2014-10-26 17:05+0000\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE\n" +"Language: es\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1)\n" + +msgctxt "Addon Summary" +msgid "AutoCompletion provider" +msgstr "Proveedor de autocompletado" + +msgctxt "Addon Description" +msgid "" +"This script offers various possibilities to display online content inside " +"Needs skin support for most functions." +msgstr "" + +msgctxt "#32001" +msgid "Autocompletion" +msgstr "Autocompletado" + +msgctxt "#32002" +msgid "Autocompletion language" +msgstr "Idioma de autocompletado" + +msgctxt "#32003" +msgid "Autocompletion provider" +msgstr "Proveedor para autocompletado" diff --git a/resources/language/French b/resources/language/resource.language.fr_fr/strings.po similarity index 100% rename from resources/language/French rename to resources/language/resource.language.fr_fr/strings.po diff --git a/resources/language/Hebrew/strings.po b/resources/language/resource.language.he_il/strings.po similarity index 100% rename from resources/language/Hebrew/strings.po rename to resources/language/resource.language.he_il/strings.po diff --git a/resources/language/Italian/strings.po b/resources/language/resource.language.it_it/strings.po similarity index 96% rename from resources/language/Italian/strings.po rename to resources/language/resource.language.it_it/strings.po index cb56b76..a7f0b12 100644 --- a/resources/language/Italian/strings.po +++ b/resources/language/resource.language.it_it/strings.po @@ -1,40 +1,40 @@ -# Kodi language file -# Addon Name: AutoCompletion for virtual keyboard -# Addon id: plugin.program.autocompletion -# Addon version: 1.0.0 -# Addon Provider: phil65 -msgid "" -msgstr "" -"Project-Id-Version: XBMC-Addons\n" -"Report-Msgid-Bugs-To: alanwww1@xbmc.org\n" -"POT-Creation-Date: 2014-10-26 17:05+0000\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE\n" -"Language: it\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" - -msgctxt "Addon Summary" -msgid "AutoCompletion provider" -msgstr "Provider di AutoCompletamento" - -msgctxt "Addon Description" -msgid "" -"This script offers various possibilities to display online content inside " -"Needs skin support for most functions." -msgstr "" - -msgctxt "#32001" -msgid "Autocompletion" -msgstr "Autocompletamento" - -msgctxt "#32002" -msgid "Autocompletion language" -msgstr "Linguaggio di autocompletamento" - -msgctxt "#32003" -msgid "Autocompletion provider" +# Kodi language file +# Addon Name: AutoCompletion for virtual keyboard +# Addon id: plugin.program.autocompletion +# Addon version: 1.0.0 +# Addon Provider: phil65 +msgid "" +msgstr "" +"Project-Id-Version: XBMC-Addons\n" +"Report-Msgid-Bugs-To: alanwww1@xbmc.org\n" +"POT-Creation-Date: 2014-10-26 17:05+0000\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE\n" +"Language: it\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1)\n" + +msgctxt "Addon Summary" +msgid "AutoCompletion provider" +msgstr "Provider di AutoCompletamento" + +msgctxt "Addon Description" +msgid "" +"This script offers various possibilities to display online content inside " +"Needs skin support for most functions." +msgstr "" + +msgctxt "#32001" +msgid "Autocompletion" +msgstr "Autocompletamento" + +msgctxt "#32002" +msgid "Autocompletion language" +msgstr "Linguaggio di autocompletamento" + +msgctxt "#32003" +msgid "Autocompletion provider" msgstr "Provider di autocompletamento" \ No newline at end of file diff --git a/resources/settings.xml b/resources/settings.xml old mode 100755 new mode 100644 index a42f9f8..6024ece --- a/resources/settings.xml +++ b/resources/settings.xml @@ -1,8 +1,91 @@ - - - - - - + +
+ + + + 0 + Google + + + + + + + + + false + + + 32003 + + + + + 0 + en + + + + + + + + + + + + + + + + + + + + + + + + + + + + false + + + 32002 + + + + + local + bing + + + + + + + 0 + en + + + + + + + + false + + + 32002 + + + local + + + + +