Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
29 commits
Select commit Hold shift + click to select a range
ee472c3
add TMDB provider
bbaronSVK Oct 18, 2018
fe36621
Update addon.xml
roliverosc Nov 20, 2018
d17a4ec
Add files via upload
roliverosc Nov 20, 2018
93e30fb
Update addon.xml
roliverosc Nov 20, 2018
9440fa9
Update strings.po
roliverosc Mar 18, 2019
3f816a8
Move extension points in addon.xml
finkleandeinhorn Jun 16, 2022
39dfa57
Merge pull request #5 from finkleandeinhorn/finkleandeinhorn-patch-1
finkleandeinhorn Jun 16, 2022
0ee3147
Merge pull request #2 from roliverosc-zz/master
finkleandeinhorn Jun 16, 2022
2b25c69
Merge pull request #1 from bbaronSVK/master
finkleandeinhorn Jun 16, 2022
e3a7c47
Cleanup of JSON-RPC method
finkleandeinhorn Jun 17, 2022
289e39f
Remove Netflix provider
finkleandeinhorn Jun 17, 2022
44841bc
Fix translations
finkleandeinhorn Jun 17, 2022
3a9c389
Close extra busy dialogs
finkleandeinhorn Jun 17, 2022
47a1f34
Add kodi-addon-submitter to CI
finkleandeinhorn Jun 18, 2022
50ea1dd
Py3 fixes
finkleandeinhorn Jun 17, 2022
3b1726b
Update addon.xml
finkleandeinhorn Jun 17, 2022
a5d1924
Cleanup of JSON-RPC method
finkleandeinhorn Jun 17, 2022
44917e0
Fix translations
finkleandeinhorn Jun 17, 2022
1f96ee1
Add kodi-addon-submitter to CI
finkleandeinhorn Jun 18, 2022
ba35896
Update addon.xml
finkleandeinhorn Jun 18, 2022
522f511
:recycle: - Modernize settings format
finkleandeinhorn Nov 21, 2022
d5d8886
:zap: - Performance fixes
finkleandeinhorn Nov 21, 2022
9387d8a
Update addon.xml
finkleandeinhorn Nov 21, 2022
c631013
Nicer settings
finkleandeinhorn Nov 21, 2022
c7c9b6e
Update addon.xml
finkleandeinhorn Nov 21, 2022
db622de
Merge branch 'matrix'
finkleandeinhorn Nov 22, 2022
0ce9d93
:bug: - Fix bug in start_info_actions
finkleandeinhorn Dec 18, 2022
e818210
:children_crossing: - Focus Enter after choice
finkleandeinhorn Dec 18, 2022
0947512
:bookmark: - Update to 2.1.2
finkleandeinhorn Dec 18, 2022
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 8 additions & 0 deletions .gitattributes
Original file line number Diff line number Diff line change
@@ -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
70 changes: 70 additions & 0 deletions .github/workflows/addon-submitter.yml
Original file line number Diff line number Diff line change
@@ -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
22 changes: 11 additions & 11 deletions addon.xml
Original file line number Diff line number Diff line change
@@ -1,24 +1,24 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<addon id="plugin.program.autocompletion" name="AutoCompletion for virtual keyboard" version="1.0.1" provider-name="Philipp Temminghoff (phil65)">
<addon id="plugin.program.autocompletion" name="AutoCompletion for virtual keyboard" version="2.1.2" provider-name="Philipp Temminghoff (phil65), sualfred, xulek, finkleandeinhorn">
<requires>
<import addon="xbmc.python" version="2.25.0" />
<import addon="script.module.simplejson" version="3.3.0"/>
<import addon="script.module.autocompletion" version="1.0.0"/>
<import addon="xbmc.python" version="3.0.0" />
<import addon="script.module.autocompletion" version="2.0.5"/>
</requires>
<extension point="xbmc.python.pluginsource" library="plugin.py" />
<extension point="xbmc.python.script" library="default.py">
<extension point="xbmc.python.script" library="default.py">
<provides>executable</provides>
</extension>
<extension point="xbmc.python.pluginsource" library="plugin.py" />

<extension point="xbmc.addon.metadata">
<summary lang="en">AutoCompletion for the virtual keyboard (needs skin support)</summary>
<description lang="en">AutoCompletion for the virtual keyboard (needs skin support)</description>
<summary lang="en_GB">AutoCompletion for the virtual keyboard (needs skin support)</summary>
<description lang="en_GB">AutoCompletion for the virtual keyboard (needs skin support)</description>
<summary lang="es_ES">Autocompletar para el teclado virtual (necesita soporte de skin)</summary>
<description lang="es_ES">Autocompletar para el teclado virtual (necesita soporte de skin)</description>
<platform>all</platform>
<license>GNU GENERAL PUBLIC LICENSE Version 2.1, February 1999</license>
<source>https://github.com/phil65/plugin.program.autocompletion</source>
<license>GPL-2.0-or-later</license>
<source>https://github.com/finkleandeinhorn/script.module.autocompletion</source>
<assets>
<icon>resources/icon.png</icon>
<fanart>resources/fanart.jpg</fanart>
<screenshot>resources/screenshot-01.jpg</screenshot>
<screenshot>resources/screenshot-02.jpg</screenshot>
<screenshot>resources/screenshot-03.jpg</screenshot>
Expand Down
87 changes: 42 additions & 45 deletions plugin.py
100755 → 100644
Original file line number Diff line number Diff line change
Expand Up @@ -3,74 +3,77 @@
# Copyright (C) 2015 - Philipp Temminghoff <phil65@kodi.tv>
# 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()
ADDON_VERSION = ADDON.getAddonInfo('version')


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)


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))
Expand All @@ -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')

40 changes: 40 additions & 0 deletions resources/language/resource.language.es_es/strings.po
Original file line number Diff line number Diff line change
@@ -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 <EMAIL@ADDRESS>\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"
File renamed without changes.
Original file line number Diff line number Diff line change
@@ -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 <EMAIL@ADDRESS>\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 <EMAIL@ADDRESS>\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"
Loading