Forget autoexec.py: the right way to automatically starts addons

  Thread Rating:
  • 2 Votes - 5 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Post Reply
lophie Offline
Junior Member
Posts: 12
Joined: Feb 2011
Reputation: 0
Post: #11
blinkseb Wrote:No, it's not available on Dharma, it wasn't backported

so if we downloaded the latest how would we implements this?
find quote
V-Turn Offline
Member
Posts: 99
Joined: Oct 2004
Reputation: 6
Post: #12
lophie Wrote:so if we downloaded the latest how would we implements this?

Here is what I have (XBMC 10.0 "Dharma") on Ubuntu: /home/user/.xbmc/userdata/autoexec.py
Code:
## auto execute scripts when xbmc starts
## note:- use only one script at a time which asks for user input!

import os, xbmc

# create playlists from iTunes playlist file
print "running autoexec.py"
xbmc.executescript('special://home/scripts/myscript.py')
print "finished autoexec.py"

and myscript.py is located in /home/user/.xbmc/scripts

Hope that helps.

V.
find quote
Joerg.Liebner Offline
Junior Member
Posts: 4
Joined: Feb 2011
Reputation: 0
Post: #13
Do i understand this right? autoexec.py is gone, service has not yet come, so there is no mechanism for autostart at the moment?
find quote
spiff Offline
Grumpy Bastard Developer
Posts: 12,234
Joined: Nov 2003
Reputation: 82
Post: #14
you understand exactly everything wrong Smile

services are in master, autoexec.py is gone in master, autoexec.py still works in dharma.

Always read the XBMC online-manual, FAQ and search the forum before posting.
Do not e-mail XBMC-Team members directly asking for support. Read/follow the forum rules.
For troubleshooting and bug reporting please make sure you read this first.
find quote
cbull Offline
Junior Member
Posts: 1
Joined: Apr 2011
Reputation: 0
Post: #15
The Wiki page is very misleading, as it suggests that xbmc.service is available in Dharma.

http://wiki.xbmc.org/index.php?title=Add...elopement)
find quote
malte Offline
Skilled Python Coder
Posts: 1,186
Joined: Jan 2010
Reputation: 21
Location: Germany
Post: #16
I am using autoexec.py in Rom Collection Browser in two scenarios:
- relaunching RCB when emulator is used in solo mode (quit XBMC -> start emu -> play game -> quit emu -> start XBMC -> launch RCB)
- start scraping games at XBMC startup (background scraping while watching movies etc.)

What is the suggested way to get this working with the new service mechanism?
1. Add extension point "xbmc.service" to the original addon pointing to a little startup module that checks what to do (do nothing, launch RCB or start scraping)
2. Add one or two additional service addons that perform the tasks. In this case: How do I enable/disable a service from python code?

Edit: Nevermind, I decided to go with the second option.
(This post was last modified: 2011-06-03 20:32 by malte.)
find quote
vikjon0 Offline
---
Posts: 2,430
Joined: Apr 2009
Reputation: 7
Location: Sweden
Post: #17
Quote:What is the suggested way to get this working with the new service mechanism?
I am also interested in best practise for this situation.
find quote
malte Offline
Skilled Python Coder
Posts: 1,186
Joined: Jan 2010
Reputation: 21
Location: Germany
Post: #18
Not sure, if this is the official way, but I did it like this and it was accepted to go into the repo:

- In main addon write a setting with the action for the service
- On XBMC startup the service checks the setting and disables the setting again
- The service does its job

Example service code is here.
find quote
Steve Evans Offline
Junior Member
Posts: 20
Joined: Dec 2010
Reputation: 0
Post: #19
I've followed the guidance at http://wiki.xbmc.org/index.php?title=HOW...g_services and have an issue using an autologout service started at login.

Before explaining the issue, see the script shown below for reference. addon.xml:

Code:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<addon id="script.autologout"
       name="autologout"
       version="0.2"
       provider-name="Steve Evans">
  <requires>
    <import addon="xbmc.python" version="1.0"/>
  </requires>
  <extension point="xbmc.service"
             library="default.py" start="login">
  </extension>
  <extension point="xbmc.addon.metadata">
    <platform>all</platform>
    <summary lang="en">Auto-logout if left idle</summary>
  </extension>
</addon>

default.py:

Code:
import xbmc,time

# idle time in minutes
IDLE_TIME_MIN = 5
      
s = 1
while s > 0:
    # get idle time
    it = xbmc.getGlobalIdleTime()
    #calculate sleep time in msec
    s = ((IDLE_TIME_MIN * 60) - it ) * 1000
    # sleep for IDLE_TIME_MIN if playing
    if (xbmc.Player().isPlaying()): s = IDLE_TIME_MIN * 60 * 1000
#    print("autologout: Sleeping for %d ms" % s)
    if (s > 0): xbmc.sleep(s)

# log off
print('autologout: Logging off')
xbmc.executebuiltin('System.LogOff')
#print('autologout: Logged off')

I use profiles to manage who gets to watch what, and also have assigned the red button on my remote to logout by tweaking .xbmc/userdata/keymaps/remote.xml by adding the following.

Code:
<red>System.LogOff</red>

Should I forget to hit the red button after viewing something I don't want the kids watching, the above script will log off automatically after 5 minutes on inactivity. Everything appears OK, however, should I remember to log off, this script, launched at logon, isn't terminated. If I log into and out of a few profiles, several copies of the script end up running at the same time, evidenced by the following appearing in the log 5 minutes later:

Code:
19:48:41 T:3069180784  NOTICE: autologout: Logging off
19:48:41 T:3069180784    INFO: Scriptresult: Success
19:48:41 T:3069180784    INFO: Python script interrupted by user
19:48:41 T:3069180784   DEBUG: Thread XBPyThread 3069180784 terminating
19:48:41 T:3010460528  NOTICE: autologout: Logging off
19:48:41 T:3010460528    INFO: Scriptresult: Success
19:48:41 T:3010460528    INFO: Python script stopped
19:48:41 T:3010460528   DEBUG: Thread XBPyThread 3010460528 terminating
19:48:41 T:81242992  NOTICE: autologout: Logging off
19:48:41 T:81242992    INFO: Scriptresult: Success
19:48:41 T:81242992    INFO: Python script stopped
19:48:41 T:81242992   DEBUG: Thread XBPyThread 81242992 terminating
19:48:41 T:3035626352  NOTICE: autologout: Logging off
19:48:41 T:3035626352    INFO: Scriptresult: Success
19:48:41 T:3035626352    INFO: Python script interrupted by user
19:48:41 T:3035626352   DEBUG: Thread XBPyThread 3035626352 terminating

In the above example there were clearly three copies of the script still running.

So, my question is, how should service scripts started at login be terminated?

Steve
find quote
paddycarey Offline
Senior Member
Posts: 246
Joined: Sep 2009
Reputation: 8
Post: #20
Is there a way to pass an argument to my script at startup using this method?
find quote