trying to get my apk installer to work with kodi 18
#1
it worked with kodi 17 and below but kodi 18 fails to prompt the install. i found some code on here that says is suppose to work for 18 but im getting indent errors when trying to implant it into my addon.
its driving me nuts and i was wondering if anyone can look at if for me?
python:
import xbmc, xbmcgui
import urllib2,urllib
import os,sys,re
import time
import shutil
import base64,zipfile
import platform, subprocess
import xbmc, xbmcaddon, xbmcgui, xbmcplugin, os, subprocess
dialog = xbmcgui.Dialog()


def iiNT3LiiCheckURL(url):
    try:
        req = urllib2.Request(url)
        req.add_header('User-Agent', 'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-GB; rv:1.9.0.3) Gecko/2008092417 Firefox/3.0.3')
        response = urllib2.urlopen(req)
        link=response.read()
        response.close()
        return link
    except:
        return False


def iiNT3LiiBrothers(url):
    Jose = url
    Mathews = base64.b64decode(Jose)
    iiNT3LiiG3NCii = base64.b64decode(Mathews)
    Robb = base64.b64decode(iiNT3LiiG3NCii)
    return Robb



def launch_command(command_launch):
    try:
        xbmc.log('[%s] %s' % ('LAUNCHING SUBPROCESS:', command_launch), 2)
        external_command = subprocess.call(command_launch, shell = True, executable = '/system/bin/sh')
    except Exception, e:
        try:
            xbmc.log('[%s] %s' % ('ERROR LAUNCHING COMMAND !!!', e.message, external_command), 2)
            xbmc.log('[%s] %s' % ('LAUNCHING OS:', command_launch), 2)
            external_command = os.system(command_launch)
        except:
            xbmc.log('[%s]' % ('ERROR LAUNCHING COMMAND !!!', external_command), 2)


if xbmc.getCondVisibility('system.platform.android'):
    iiNT3LiiAPK = subprocess.Popen(['exec ''/system/bin/pm list packages -3'''], executable='/system/bin/sh', shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT).communicate()[0].rstrip('\n').splitlines()
    for i in range(len(iiNT3LiiAPK)):
        iiNT3LiiAPK[i] = iiNT3LiiAPK[i].partition(':')[2]


    if 'com.retroarch' not in iiNT3LiiAPK:
        path = xbmc.translatePath(os.path.join('special://home/addons','packages'))
        lib = os.path.join(path, 'Retro.apk')
        try: os.remove(lib)
        except: pass
        url = iiNT3LiiBrothers('WVVoU01HTklUVFpNZVRrelpETmpkVnBJU25aalIwcDJaVU0xYW1JeU1IWmplVGt3VGpOa00xcFhVVEJOV0ZKb1QwaHdiVmxYZDNaVmJWWXdZMjA1UW1OdFRtOU5hVFZvWTBkekwxcEhkemxOVVQwOQ==') # base64 encoded 3 times
        urllib.urlretrieve(url, lib)
        xbmcgui.Dialog().ok("[COLOR cyan]Standard-inc[/COLOR]","[COLOR cyan]Detected a Required App Not On The System![/COLOR]","[COLOR cyan]Please Install When Prompted To Install![/COLOR]","")
        path = xbmc.translatePath(os.path.join('special://home/addons','packages'))
        pathdownload = os.path.join(path, 'Retro.apk')
        command = 'pm install -rgd' + pathdownload
        launch_command(command)
        theZip = os.path.join(path,"retroStuff.zip")
        urllib.urlretrieve(iiNT3LiiBrothers("WVVoU01HTklUVFpNZVRrelpETmpkVnBJU25aalIwcDJaVU0xYW1JeU1IWmplVGx6WlZoQmVHVlhUbmRqUjNSdVRtNUdkbUZJUVhaVmJWWXdZMjA1UW1OdFRtOU1ibkJ3WTBRNWEySkVNSGc9"),theZip)
        match = re.compile('(/Android/data/[^/]*/files/[^/]*/)').findall(xbmc.translatePath("special://home"))
        if match:
            thePath = xbmc.translatePath("special://home").replace(match[0],"/")
        else:
            thePath = "/sdcard/"
        theUnzip = zipfile.ZipFile(theZip)
        for i in theUnzip.infolist():
            try:
                theUnzip.extract(i,thePath)
            except:
                pass
        xbmcgui.Dialog().ok("[COLOR cyan]Standard-inc[/COLOR]","","[COLOR cyan]Operation Completed![/COLOR]","")
        try: os.remove(lib)
        except: pass
Reply
#2
i don't see any indent errors in the code you've posted above.
but without a log it's hard to tell what the problem is.
Do not PM or e-mail Team-Kodi members directly asking for support.
Always read the Forum rules, Kodi online-manual, FAQ, Help and Search the forum before posting.
Reply
#3
What's up with the obfuscated urls?
Image Lunatixz - Kodi / Beta repository
Image PseudoTV - Forum | Website | Youtube | Help?
Reply
#4
(2020-01-13, 03:29)Lunatixz Wrote: What's up with the obfuscated urls?

keep basic people from seeing them
Reply
#5
(2020-01-13, 03:54)daveftw84 Wrote:
(2020-01-13, 03:29)Lunatixz Wrote: What's up with the obfuscated urls?

keep basic people from seeing them

I understand obfuscation of api keys, however IMO obfuscating urls make anything you're up to sketchy... Regardless of what the URL actually is.
Image Lunatixz - Kodi / Beta repository
Image PseudoTV - Forum | Website | Youtube | Help?
Reply
#6
(2020-01-13, 04:09)Lunatixz Wrote:
(2020-01-13, 03:54)daveftw84 Wrote:
(2020-01-13, 03:29)Lunatixz Wrote: What's up with the obfuscated urls?

keep basic people from seeing them 

I understand obfuscation of api keys, however IMO obfuscating urls make anything you're up to sketchy... Regardless of what the URL actually is. 
but most api keys are free ....
Reply
#7
(2020-01-13, 02:58)ronie Wrote: i don't see any indent errors in the code you've posted above.
but without a log it's hard to tell what the problem is.
i fixed the indent by re pasting the code back in the py.
its still not prompting the install

https://paste.kodi.tv/raw/opexoqurit
Reply
#8
2020-01-13 10:53:04.191 T:11434 NOTICE: [LAUNCHING SUBPROCESS:] pm install -rgd/storage/emulated/0/Android/data/org.xbmc.kodi/files/.kodi/addons/packages/Retro.apk

my guess would be there needs to be a space between the command and the path
Do not PM or e-mail Team-Kodi members directly asking for support.
Always read the Forum rules, Kodi online-manual, FAQ, Help and Search the forum before posting.
Reply
#9
(2020-01-13, 21:51)ronie Wrote: 2020-01-13 10:53:04.191 T:11434 NOTICE: [LAUNCHING SUBPROCESS:] pm install -rgd/storage/emulated/0/Android/data/org.xbmc.kodi/files/.kodi/addons/packages/Retro.apk

my guess would be there needs to be a space between the command and the path
i saw that and edit the command to have a space 'pm install -rgd '
log reflected it and still did nothing
Reply
#10
i don't think subprocess.call() will raise an exception if the returncode is non-zero ?

perhaps give it a shot with subprocess.check_output() which can capture and return any errors:
https://docs.python.org/2/library/subpro...eck_output
Do not PM or e-mail Team-Kodi members directly asking for support.
Always read the Forum rules, Kodi online-manual, FAQ, Help and Search the forum before posting.
Reply
#11
here is what i have so far 
python:
import xbmc, xbmcgui
import urllib2,urllib
import os,sys,re
import time
import shutil
import base64,zipfile
import platform, subprocess
import xbmc, xbmcaddon, xbmcgui, xbmcplugin, os, subprocess
dialog = xbmcgui.Dialog()


def iiNT3LiiCheckURL(url):
    try:
        req = urllib2.Request(url)
        req.add_header('User-Agent', 'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-GB; rv:1.9.0.3) Gecko/2008092417 Firefox/3.0.3')
        response = urllib2.urlopen(req)
        link=response.read()
        response.close()
        return link
    except:
        return False


def iiNT3LiiBrothers(url):
    Jose = url
    Mathews = base64.b64decode(Jose)
    iiNT3LiiG3NCii = base64.b64decode(Mathews)
    Robb = base64.b64decode(iiNT3LiiG3NCii)
    return Robb



def launch_command(command_launch):
    try:
        xbmc.log('[%s] %s' % ('LAUNCHING SUBPROCESS:', command_launch), 2)
        external_command = subprocess.call(command_launch, shell = True, executable = '/system/bin/sh')
    except Exception, e:
        try:
            xbmc.log('[%s] %s' % ('ERROR LAUNCHING COMMAND !!!', e.message, external_command), 2)
            xbmc.log('[%s] %s' % ('LAUNCHING OS:', command_launch), 2)
            external_command = os.system(command_launch)
        except:
            xbmc.log('[%s]' % ('ERROR LAUNCHING COMMAND !!!', external_command), 2)


if xbmc.getCondVisibility('system.platform.android'):
    iiNT3LiiAPK = subprocess.Popen(['exec ''/system/bin/pm list packages -3'''], executable='/system/bin/sh', shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT).communicate()[0].rstrip('\n').splitlines()
    for i in range(len(iiNT3LiiAPK)):
        iiNT3LiiAPK[i] = iiNT3LiiAPK[i].partition(':')[2]


    if 'com.retroarch' not in iiNT3LiiAPK:
        path = xbmc.translatePath(os.path.join('special://home/addons','packages'))
        lib = os.path.join(path, 'Retro.apk')
        url = iiNT3LiiBrothers('WVVoU01HTkViM1pNTTJnMFpXazFkMlI1T1doalNFSjZUREZLYkdSSVNuWlJXRXBxWVVSSmRWbFlRbkk9')
        urllib.urlretrieve(url, lib)
        xbmcgui.Dialog().ok("[COLOR cyan]Standard-inc[/COLOR]","[COLOR cyan]Detected a Required App Not On The System![/COLOR]","[COLOR cyan]Please Install When Prompted To Install![/COLOR]","")
        command = 'pm install -r -g -d ' + lib
        launch_command(command)
        xbmc.executebuiltin('StartAndroidActivity("","android.intent.action.VIEW","application/vnd.android.package-archive","file:'+lib+'")')
        theZip = os.path.join(path,"retroStuff.zip")
        urllib.urlretrieve(iiNT3LiiBrothers("WVVoU01HTklUVFpNZVRrelpETmpkVnBJU25aalIwcDJaVU0xYW1JeU1IWmplVGx6WlZoQmVHVlhUbmRqUjNSdVRtNUdkbUZJUVhaVmJWWXdZMjA1UW1OdFRtOU1ibkJ3WTBRNWEySkVNSGc9"),theZip)
        match = re.compile('(/Android/data/[^/]*/files/[^/]*/)').findall(xbmc.translatePath("special://home"))
        if match:
            thePath = xbmc.translatePath("special://home").replace(match[0],"/")
        else:
            thePath = "/sdcard/"
        theUnzip = zipfile.ZipFile(theZip)
        for i in theUnzip.infolist():
            try:
                theUnzip.extract(i,thePath)
            except:
                pass
        xbmcgui.Dialog().ok("[COLOR cyan]Standard-inc[/COLOR]","","[COLOR cyan]Operation Completed![/COLOR]","")
        try: os.remove(lib)
        except: pass
Reply
#12
i removed anything that would delete the apk before process is done. 
i cleaned up the immerssion of the code
i update the url to a known working one
and i included the old launch code as a second since it works on rooted boxes still.
just worked on the rooted box, but not the non rooted shield
Reply
#13
(2020-01-13, 18:31)daveftw84 Wrote:
(2020-01-13, 04:09)Lunatixz Wrote:
(2020-01-13, 03:54)daveftw84 Wrote: keep basic people from seeing them 

I understand obfuscation of api keys, however IMO obfuscating urls make anything you're up to sketchy... Regardless of what the URL actually is. 
but most api keys are free ....

Never paid for a URL before...
Image Lunatixz - Kodi / Beta repository
Image PseudoTV - Forum | Website | Youtube | Help?
Reply
#14
(2020-01-14, 02:57)Lunatixz Wrote:
(2020-01-13, 18:31)daveftw84 Wrote:
(2020-01-13, 04:09)Lunatixz Wrote: I understand obfuscation of api keys, however IMO obfuscating urls make anything you're up to sketchy... Regardless of what the URL actually is. 
but most api keys are free .... 

Never paid for a URL before... 
im guessing you never paid for hosting
Reply
#15
(2020-01-24, 22:11)daveftw84 Wrote:
(2020-01-14, 02:57)Lunatixz Wrote:
(2020-01-13, 18:31)daveftw84 Wrote: but most api keys are free .... 

Never paid for a URL before...  
im guessing you never paid for hosting 

There is a huge difference between securing a domain ie. Login/Password... and obscuring a URL which gives zero transparency to the user and/or a simple inquiry via code review.

Either way good luck with your project; which is not Kodi / forum friendly due to obfuscation and limited transparency. Login/Password would have been allowed.
Image Lunatixz - Kodi / Beta repository
Image PseudoTV - Forum | Website | Youtube | Help?
Reply

Logout Mark Read Team Forum Stats Members Help
trying to get my apk installer to work with kodi 180