Armando Elban Quito
Armando Elban Quito

Reputation: 43

vlc lua: how do I get the full path of the current playing item?

I'm not a programmer so this is difficult for me. I want to make an extension to send the full path to the clipboard in the full format. Example:

D:\MyFolder\music\audio.mp3

I recently found and butchered this extension which sends the running time to the clipboard. Is it possible to modify it so it gets the full path instead of the running time?

I'm using VLC media player 2.0.5 Twoflower 32 bits.

Windows 7 professional 32bits SP1

Here's the content of the .lua file I'm using and want to modify:

-- Time2Clip.lua -- VLC extension --
--[[
INSTALLATION:
Put the file in the VLC subdir /lua/extensions, by default:
* Windows (all users): %ProgramFiles%\VideoLAN\VLC\lua\extensions\
Restart the VLC.
Then you simply use the extension by going to the "View" menu and selecting it.
--]]
function descriptor()
   return {
      title = "Time2Clip";
      version = "1.0";
      author = "valuex";
      url = 'https://forum.videolan.org/viewtopic.php?f=29&t=101114';
      shortdesc = "Time2Clip";
      description = "<div style=\"background-color:lightgreen;\"><b>just a simple VLC extension </b></div>";
      capabilities = {"input-listener"}
   }
end
function activate()
   create_dialog()
end

function close()
   vlc.deactivate()
end

function create_dialog()
   w = vlc.dialog("Time2Clip")
   --w2 = w:add_button("Save_to_Clip", click_SAVE,2,1,1,1)
   click_SAVE()
end

function click_SAVE()
   local input = vlc.object.input()
   if input then
      local curtime=vlc.path()
     -- local curtime=vlc.var.get(input, "time")
     -- w2:set_text( curtime )
      save_to_clipboard(curtime)
   end
end

function save_to_clipboard(var)
   strCmd = 'echo '..var..' |clip'
   os.execute(strCmd)
   vlc.deactivate()
end

I read LUA's README.TXT file and found this but I don't know how to use it. Please help me. Thanks in advance.

input.item(): Get the current input item. Input item methods are:
  :uri(): Get item's URI.
  :name(): Get item's name.

Upvotes: 4

Views: 3160

Answers (1)

TessellatingHeckler
TessellatingHeckler

Reputation: 29003

How about:

function descriptor()
   return {
      title = "URI2Clip";
      version = "1.0";
      author = "";
      url = '';
      shortdesc = "URI2Clip";
      description = "<div><b>Copy the media URI to the Windows clipboard</b></div>";
   }
end

function activate()
   local item = vlc.input.item()
   local uri = item:uri()
   uri = string.gsub(uri, '^file:///', '')
   uri = string.gsub(uri, '/', '\\')

   strCmd = 'echo '..uri..' |clip'
   os.execute(strCmd)
end

URI returns something like file:///c:/users/username/Documents/song.mp3 so I convert that to c:\users\username... format instead. NB. This is only going to work for saved files, it will mangle web addresses.

Upvotes: 2

Related Questions