Kodi Community Forum
Delete pictures - Printable Version

+- Kodi Community Forum (https://forum.kodi.tv)
+-- Forum: Support (/forumdisplay.php?fid=33)
+--- Forum: General Support (/forumdisplay.php?fid=111)
+---- Forum: Linux and Live support (/forumdisplay.php?fid=52)
+---- Thread: Delete pictures (/showthread.php?tid=128877)



Delete pictures - wdu010 - 2012-04-14 17:42

Hello everyone. I am struggling for a while now with an annoying problem. I have a canon digital camera that makes pictures of 6 MB per piece. I read them directly into my media PC to the Pictures folder. Then I use XBMC to watch all pictures.

The problem is that XBMC does not give me the option to delete a certain picture when viewing the file fullscreen. I can only watch them. This is quite annoying because I will have to use my laptop and a SAMBA connection to view and delete the files. Because they are 6MB, this is a very slow process.

My question: is there a way (maybe with some XML file?) to enable deletion of pictures in XBMC while vieweing them full screen? Seems like a simple feature that will save many users a lot of time.

Thank you for your help.


RE: Delete pictures - zenomat - 2014-04-19 13:21

I had the same problem so after 2 days of googeling around I finally managed to make it work. In order to implement this function follow the next steps:

1. Go to system - settings - Appearance - File List - "Allow file renaming and deleting" - checked
2. Create a subfolder in your xbmc folder called "UserScripts" - ex "d:\Program Files (x86)\XBMC\UserScripts"
3. Create the fololwing script in that folder. Save it as "delete.py"

#============== Delete Pictures Script =======================================
Code:
import xbmc, xbmcgui, os,  sys
import time

filePath = xbmc.getInfoLabel("Slideshow.Path")
fileName = xbmc.getInfoLabel("Slideshow.FileName")

file = filePath + fileName

xbmc.executebuiltin('Notification(' + 'File Deleted' + ', ' + file + ',1000)')
def delete_file(file):
    if os.path.exists(file):
        os.remove(file)

delete_file(file)
xbmc.executebuiltin("Action(Right)")
xbmc.executebuiltin("XBMC.CleanLibrary(video)")

#=============================================================================

4. Edit the file "d:\Program Files (x86)\XBMC\system\keymaps\keyboard.xml"
In the <SlideShow> group add a line
<delete>RunScript("d:\Program Files (x86)\XBMC\UserScripts\delete.py")</delete>

5. Restart XBMC


RE: Delete pictures - Lamoboy - 2015-12-06 13:08

When I use the script above with Kodi under Debian 8.2, I get the following error in log:
Code:
12:34:28 T:2691771200  NOTICE: -->Python Interpreter Initialized<--
12:34:28 T:2691771200 WARNING: CPythonInvoker(5): Script invoked without an addon. Adding all addon modules installed to python path as fallback. This behaviour will be removed in future version.
12:34:28 T:2691771200   ERROR: EXCEPTION Thrown (PythonToCppException) : -->Python callback/script returned the following error<--
                                             - NOTE: IGNORING THIS CAN LEAD TO MEMORY LEAKS!
                                            Error Type: <type 'exceptions.IndentationError'>
                                            Error Contents: ('expected an indented block', ('/usr/share/kodi/system/python/delete.py', 11, 2, 'if os.path.exists(file):\n'))
                                            IndentationError: ('expected an indented block', ('/usr/share/kodi/system/python/delete.py', 11, 2, 'if os.path.exists(file):\n'))
                                            -->End of Python script error report<--
Please tell me how to make this script work in my case?


RE: Delete pictures - ronie - 2015-12-06 14:22

the code didn't display properly in the post. fixed now.


RE: Delete pictures - Lamoboy - 2015-12-06 14:37

(2015-12-06 14:22)ronie Wrote:  the code didn't display properly in the post. fixed now.
I haven't noticed any changes in the code. What you have changed?


RE: Delete pictures - ronie - 2015-12-06 14:45

indenting :-)


RE: Delete pictures - Lamoboy - 2015-12-06 15:20

(2015-12-06 14:45)ronie Wrote:  indenting :-)
Thanks! The script now works but only for local files.
How to make it work for files on smb share?


RE: Delete pictures - ronie - 2015-12-06 16:44

something like this should work:

Code:
import os, xbmc, xbmcgui, xbmcvfs

filePath = xbmc.getInfoLabel("Slideshow.Path")
fileName = xbmc.getInfoLabel("Slideshow.FileName")

file = os.path.join(filePath, fileName)

def delete_file(file):
    if xbmcvfs.exists(file):
        success = xbmcvfs.delete(file)
        dialog = xbmcgui.Dialog()
        if success:
            dialog.notification('File Deleted', file, xbmcgui.NOTIFICATION_INFO, 1000)
        else:
            dialog.notification('Failed To Delete', file, xbmcgui.NOTIFICATION_ERROR, 1000)

delete_file(file)
xbmc.executebuiltin("Action(Right)")



RE: Delete pictures - Lamoboy - 2015-12-06 17:54

ronie, you are amazing! Now this script deletes files on smb shares too. Thank you very much!


RE: Delete pictures - un1versal - 2015-12-06 19:21

If you have a remote controller all you need to do is press the clear button when you are hovering over the picture you want to delete, it will ask you if you want to delete it.


RE: Delete pictures - Lamoboy - 2015-12-06 23:02

(2015-12-06 19:21)un1versal Wrote:  If you have a remote controller all you need to do is press the clear button when you are hovering over the picture you want to delete, it will ask you if you want to delete it.
I don't have "clear" button on my Apple TV 1st gen remote control.


RE: Delete pictures - holsten - 2017-02-20 15:24

Hi, I hope somebody is still following this threat.

When I was trying the scripts I obtain only error messages when pressing the "delete" button while watching a pictures slide show. These are the two logs I get from the two scripts (I tried both)
Code:
13:47:08 T:200   DEBUG: CInputManager::OnKey: delete (0xf087) pressed, action is RunScript("C:\Program Files (x86)\Kodi\UserScripts\delete.py")
13:47:08 T:1916   DEBUG: Thread LanguageInvoker start, auto delete: false
13:47:08 T:1916    INFO: initializing python engine.
13:47:08 T:1916   DEBUG: CPythonInvoker(5, C:\Program Files (x86)\Kodi\UserScripts\delete.py): start processing
13:47:08 T:1916   DEBUG: -->Python Interpreter Initialized<--
13:47:08 T:1916   DEBUG: CPythonInvoker(5, C:\Program Files (x86)\Kodi\UserScripts\delete.py): the source file to load is "C:\Program Files (x86)\Kodi\UserScripts\delete.py"
13:47:08 T:1916 WARNING: CPythonInvoker(5): Script invoked without an addon. Adding all addon modules installed to python path as fallback. This behaviour will be removed in future version.
13:47:08 T:1916   DEBUG: CPythonInvoker(5, C:\Program Files (x86)\Kodi\UserScripts\delete.py): setting the Python path to C:\Program Files (x86)\Kodi\UserScripts;C:\Users\Kodi\AppData\Roaming\Kodi\addons\script.module.t​0mm0.common\lib;C:\Users\Kodi\AppData\Roaming\Kodi\addons\script.module.bigpictu​res\lib;C:\Users\Kodi\AppData\Roaming\Kodi\addons\script.module.simplejson\lib;C​:\Users\Kodi\AppData\Roaming\Kodi\addons\script.module.xmltodict\lib;C:\Users\Ko​di\AppData\Roaming\Kodi\addons\script.module.addon.common\lib;C:\Users\Kodi\AppD​ata\Roaming\Kodi\addons\script.module.beautifulsoup\lib;C:\Program Files (x86)\Kodi\addons\script.module.pil\lib;C:\Users\Kodi\AppData\Roaming\Kodi\addon​s\script.module.pytz\lib;C:\Users\Kodi\AppData\Roaming\Kodi\addons\script.module​.urlresolver\lib;C:\Users\Kodi\AppData\Roaming\Kodi\addons\script.module.parsedo​m\lib;C:\Users\Kodi\AppData\Roaming\Kodi\addons\script.module.xbmcswift2\lib;C:\​Program Files (x86)\Kodi\system\python\DLLs;C:\Program Files (x86)\Kodi\system\python\Lib;C:\Program Files (x86)\Kodi\python27.zip;C:\Program Files (x86)\Kodi\system\python\lib\plat-win;C:\Program Files (x86)\Kodi\system\python\lib\lib-tk;C:\Program Files (x86)\Kodi;C:\Program Files (x86)\Kodi\system\python;C:\Program Files (x86)\Kodi\system\python\lib\site-packages
13:47:08 T:1916   DEBUG: CPythonInvoker(5, C:\Program Files (x86)\Kodi\UserScripts\delete.py): entering source directory C:\Program Files (x86)\Kodi\UserScripts
13:47:08 T:1916   ERROR: EXCEPTION Thrown (PythonToCppException) : -->Python callback/script returned the following error<--
                                             - NOTE: IGNORING THIS CAN LEAD TO MEMORY LEAKS!
                                            Error Type: <type 'exceptions.IndentationError'>
                                            Error Contents: ('unexpected indent', ('C:\\Program Files (x86)\\Kodi\\UserScripts\\delete.py', 2, 1, ' import time\n'))
                                            IndentationError: ('unexpected indent', ('C:\\Program Files (x86)\\Kodi\\UserScripts\\delete.py', 2, 1, ' import time\n'))
                                            -->End of Python script error report<--
13:47:08 T:1916    INFO: Python script stopped

and from the second script (the one working for NAS as well):
Code:
13:38:57 T:3000   DEBUG: CInputManager::OnKey: delete (0xf087) pressed, action is RunScript("C:\Program Files (x86)\Kodi\UserScripts\delete.py")
13:38:57 T:5024   DEBUG: Thread LanguageInvoker start, auto delete: false
13:38:57 T:5024    INFO: initializing python engine.
13:38:57 T:5024   DEBUG: CPythonInvoker(5, C:\Program Files (x86)\Kodi\UserScripts\delete.py): start processing
13:38:57 T:5024   DEBUG: -->Python Interpreter Initialized<--
13:38:57 T:5024   DEBUG: CPythonInvoker(5, C:\Program Files (x86)\Kodi\UserScripts\delete.py): the source file to load is "C:\Program Files (x86)\Kodi\UserScripts\delete.py"
13:38:57 T:5024 WARNING: CPythonInvoker(5): Script invoked without an addon. Adding all addon modules installed to python path as fallback. This behaviour will be removed in future version.
13:38:57 T:5024   DEBUG: CPythonInvoker(5, C:\Program Files (x86)\Kodi\UserScripts\delete.py): setting the Python path to C:\Program Files (x86)\Kodi\UserScripts;C:\Users\Kodi\AppData\Roaming\Kodi\addons\script.module.t​0mm0.common\lib;C:\Users\Kodi\AppData\Roaming\Kodi\addons\script.module.bigpictu​res\lib;C:\Users\Kodi\AppData\Roaming\Kodi\addons\script.module.simplejson\lib;C​:\Users\Kodi\AppData\Roaming\Kodi\addons\script.module.xmltodict\lib;C:\Users\Ko​di\AppData\Roaming\Kodi\addons\script.module.addon.common\lib;C:\Users\Kodi\AppD​ata\Roaming\Kodi\addons\script.module.beautifulsoup\lib;C:\Program Files (x86)\Kodi\addons\script.module.pil\lib;C:\Users\Kodi\AppData\Roaming\Kodi\addon​s\script.module.pytz\lib;C:\Users\Kodi\AppData\Roaming\Kodi\addons\script.module​.urlresolver\lib;C:\Users\Kodi\AppData\Roaming\Kodi\addons\script.module.parsedo​m\lib;C:\Users\Kodi\AppData\Roaming\Kodi\addons\script.module.xbmcswift2\lib;C:\​Program Files (x86)\Kodi\system\python\DLLs;C:\Program Files (x86)\Kodi\system\python\Lib;C:\Program Files (x86)\Kodi\python27.zip;C:\Program Files (x86)\Kodi\system\python\lib\plat-win;C:\Program Files (x86)\Kodi\system\python\lib\lib-tk;C:\Program Files (x86)\Kodi;C:\Program Files (x86)\Kodi\system\python;C:\Program Files (x86)\Kodi\system\python\lib\site-packages
13:38:57 T:5024   DEBUG: CPythonInvoker(5, C:\Program Files (x86)\Kodi\UserScripts\delete.py): entering source directory C:\Program Files (x86)\Kodi\UserScripts
13:38:57 T:5024   ERROR: EXCEPTION Thrown (PythonToCppException) : -->Python callback/script returned the following error<--
                                             - NOTE: IGNORING THIS CAN LEAD TO MEMORY LEAKS!
                                            Error Type: <type 'exceptions.IndentationError'>
                                            Error Contents: ('unexpected indent', ('C:\\Program Files (x86)\\Kodi\\UserScripts\\delete.py', 3, 1, ' filePath = xbmc.getInfoLabel("Slideshow.Path")\n'))
                                            IndentationError: ('unexpected indent', ('C:\\Program Files (x86)\\Kodi\\UserScripts\\delete.py', 3, 1, ' filePath = xbmc.getInfoLabel("Slideshow.Path")\n'))
                                            -->End of Python script error report<--
13:38:57 T:5024    INFO: Python script stopped

My question would be if I have done something fundamentally wrong or if these scripts can not run on the current Kodi version(s) (the errors are from Jarvis 16.1 but I guess the question would be the same for Krypton)?