the script from here - http://forum.videolan.org/viewtopic.php?f=29&t=71535&p=370875#p370875 - was updated and now works in both Windows and Linux. also, this version doesn't need 'View/Subtitle' Finder be clicked twice

Right! It is a mess; obsolete version here, updated versions there and there.
http://addons.videolan.org is the right place for VLC Extensions.
ale5000 seems to be inactive. thepanz has no access here to upload his updates.

I would like to have a subtitle file once and for good.
While the script says ‘Download subtitles’, I imagine they are downloaded temporarily during playback: where are they downloaded? can I manually save/safekeep them for future use?

The last time I visited this page, there was a download link for a windows installer for this someone made. I've used this and it works rather well, as long as the media I'm viewing is relatively new. Was that link here, or was it in the thread over on the VLC site? Thanx!

VLC can't recognize the input's format:
The format of 'http://www.opensubtitles.org/en/http://dl.opensubtitles.org/en/download/subad/xxxxxxx cannot be detected. Have a look at the log for details.
OS: Fedora 16
The link actually gives a .zip file.
Any workaround?

This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
--]]

--[[
Notes
- Because of internal changes in VLC, the minimum version of VLC required is now: 1.1.0 git - 2010-03-21
- VLC support only uncompressed .rar files

Know issues
- The search fail if you click the button two times consecutively

1.03
- Fixed the duplicated names that were appearing in the search
- Fixed the empty names that were appearing in the search
- Now there is a message when it doesn't find anything
- Minor optimizations
- Minor fixes

1.02
- Fix for the latest GIT build

1.01
- Changed version schema
- Now there isn't any dialog showed by default, you can still open them from the menu
- Now it is more clear when the script is working
- Added some dlg:flush() that were missing (this fix the elements in the dialog that weren't updated)
- Now it catch the fail of vlc.stream
- Minor fixes

0.1.8
- Now you can open a new dialog while the previous is still open
- Fixed getting title in the new version of VLC
- Now using dlg:flush() where appropriate
- Workarounded some bugs in VLC
IMPORTANT: Now it no longer work on old versions of VLC

0.1.7
- Removed the button "+"; it is useless since the title is updated automatically
- The download dialog can now be hidden/showed
- Added the "Load from url..." dialog
- The code of parse_archive() is now a separate function called by both "Load from url..." and the normal subtitles download dialog.
- Minor changes

0.1.6
- Some variables made local
- Minor fixes
- Added .rar archive support ("stream_filter_rar" is incomplete and can only use one file in the archive, need a fix in VLC)
Note: VLC support only uncompressed .rar files
]]

local title = item:name() -- It return the internal title or the filename if the first is missing
if title ~= nil then
title = string.gsub(title, "(.*)%.%w+$", "%1") -- Removes file extension
if title ~= "" then
main_text_input:set_text(title)
dlg:update()
return true
end
end

-- Function triggered when a element from the menu is selected
function trigger_menu(id)
if dialog_is_hidden then
if dlg == nil then
vlc.msg.err("[Subtitles] Dialog pointer lost")
close()
return false;
end

function collect(s)
local stack = {}
local top = {}
table.insert(stack, top)
local ni,c,label,xarg, empty
local i, j = 1, 1
while true do
ni,j,c,label,xarg, empty = string.find(s, "<(%/?)([%w:]+)(.-)(%/?)>", i)
if not ni then break end
local text = string.sub(s, i, ni-1)
if not string.find(text, "^%s*$") then
table.insert(top, text)
end
if empty == "/" then -- empty element tag
table.insert(top, {label=label, xarg=parseargs(xarg), empty=1})
elseif c == "" then -- start tag
top = {label=label, xarg=parseargs(xarg)}
table.insert(stack, top) -- new level
else -- end tag
local toclose = table.remove(stack) -- remove top
top = stack[#stack]
if #stack < 1 then
error("nothing to close with "..label)
end
if toclose.label ~= label then
error("trying to close "..toclose.label.." with "..label)
end
table.insert(top, toclose)
end
i = j+1
end
local text = string.sub(s, i)
if not string.find(text, "^%s*$") then
table.insert(stack[#stack], text)
end
if #stack > 1 then
error("unclosed "..stack[stack.n].label)
end
return stack[1]
end

-- Let's browse iteratively the 'xmldata' tree
-- OK, the variables' names aren't explicit enough, but just remember a couple
-- a,b contains the index (a) and the data (b) of the table, which might also be a table
for a,b in pairs(xmldata) do
if type(b) == "table" then
if b.label == "results" then
for c,d in pairs(b) do
if type(d) == "table" then
if d.label == "subtitle" then
for e,f in pairs(d) do
if type(f) == "table" then
if f.label == "releasename" then
if f[1] ~= nil then subname[subnum] = f[1]
else subname[subnum] = "" end
elseif f.label == "movie" then
if f[1] ~= nil then sub_movie[subnum] = f[1]
else sub_movie[subnum] = "" end
elseif f.label == "download" then
if f[1] ~= nil then suburl[subnum] = f[1]
else suburl[subnum] = "" end
elseif f.label == "iso639" then -- language
if f[1] ~= nil then sublang[subnum] = f[1]
else sublang[subnum] = "" end
elseif f.label == "language" then -- language -- not use yet
if f[1] ~= nil then sub_language[subnum] = f[1]
else sub_language[subnum] = "" end
elseif f.label == "format" then
if f[1] ~= nil then subformat[subnum] = f[1]
else subformat[subnum] = "" end
end
end
end
subnum = subnum + 1
end
end
end
elseif b.label == "base" then
baseurl = b[1]
end
end
end

I'm on Linux, Ubuntu. What do I do? I tried creating file subtitles-mod.lua in /usr/share/vlc/lua and then in /usr/share/vlc/lua/http and then also /usr/share/vlc/lua/playlist. It didn't work = I played video in VLC and didn't find anything new under rigth-click/View. Thanks.

I just copied the code into the file Quote:/usr/lib/vlc/lua/extensions/subtitles-mod.luac that I created.

Now, right-click/View/Subtitles opens a little window with subtitels searcher. The experience of using this not that much more comfortable than going to a browser and googling and downloading I'm afraid.

This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
--]]

--[[
Notes
- Because of internal changes in VLC, the minimum version of VLC required is now: 1.1.0 git - 2010-03-21
- VLC support only uncompressed .rar files

Know issues
- The search fail if you click the button two times consecutively

1.03
- Fixed the duplicated names that were appearing in the search
- Fixed the empty names that were appearing in the search
- Now there is a message when it doesn't find anything
- Minor optimizations
- Minor fixes

1.02
- Fix for the latest GIT build

1.01
- Changed version schema
- Now there isn't any dialog showed by default, you can still open them from the menu
- Now it is more clear when the script is working
- Added some dlg:flush() that were missing (this fix the elements in the dialog that weren't updated)
- Now it catch the fail of vlc.stream
- Minor fixes

0.1.8
- Now you can open a new dialog while the previous is still open
- Fixed getting title in the new version of VLC
- Now using dlg:flush() where appropriate
- Workarounded some bugs in VLC
IMPORTANT: Now it no longer work on old versions of VLC

0.1.7
- Removed the button "+"; it is useless since the title is updated automatically
- The download dialog can now be hidden/showed
- Added the "Load from url..." dialog
- The code of parse_archive() is now a separate function called by both "Load from url..." and the normal subtitles download dialog.
- Minor changes

0.1.6
- Some variables made local
- Minor fixes
- Added .rar archive support ("stream_filter_rar" is incomplete and can only use one file in the archive, need a fix in VLC)
Note: VLC support only uncompressed .rar files
]]

local title = item:name() -- It return the internal title or the filename if the first is missing
if title ~= nil then
title = string.gsub(title, "(.*)%.%w+$", "%1") -- Removes file extension
if title ~= "" then
main_text_input:set_text(title)
dlg:update()
return true
end
end

-- Function triggered when a element from the menu is selected
function trigger_menu(id)
if dialog_is_hidden then
if dlg == nil then
vlc.msg.err("[Subtitles] Dialog pointer lost")
close()
return false;
end

function collect(s)
local stack = {}
local top = {}
table.insert(stack, top)
local ni,c,label,xarg, empty
local i, j = 1, 1
while true do
ni,j,c,label,xarg, empty = string.find(s, "<(%/?)([%w:]+)(.-)(%/?)>", i)
if not ni then break end
local text = string.sub(s, i, ni-1)
if not string.find(text, "^%s*$") then
table.insert(top, text)
end
if empty == "/" then -- empty element tag
table.insert(top, {label=label, xarg=parseargs(xarg), empty=1})
elseif c == "" then -- start tag
top = {label=label, xarg=parseargs(xarg)}
table.insert(stack, top) -- new level
else -- end tag
local toclose = table.remove(stack) -- remove top
top = stack[#stack]
if #stack < 1 then
error("nothing to close with "..label)
end
if toclose.label ~= label then
error("trying to close "..toclose.label.." with "..label)
end
table.insert(top, toclose)
end
i = j+1
end
local text = string.sub(s, i)
if not string.find(text, "^%s*$") then
table.insert(stack[#stack], text)
end
if #stack > 1 then
error("unclosed "..stack[stack.n].label)
end
return stack[1]
end

-- Let's browse iteratively the 'xmldata' tree
-- OK, the variables' names aren't explicit enough, but just remember a couple
-- a,b contains the index (a) and the data (b) of the table, which might also be a table
for a,b in pairs(xmldata) do
if type(b) == "table" then
if b.label == "results" then
for c,d in pairs(b) do
if type(d) == "table" then
if d.label == "subtitle" then
for e,f in pairs(d) do
if type(f) == "table" then
if f.label == "releasename" then
if f[1] ~= nil then subname[subnum] = f[1]
else subname[subnum] = "" end
elseif f.label == "movie" then
if f[1] ~= nil then sub_movie[subnum] = f[1]
else sub_movie[subnum] = "" end
elseif f.label == "download" then
if f[1] ~= nil then suburl[subnum] = f[1]
else suburl[subnum] = "" end
elseif f.label == "iso639" then -- language
if f[1] ~= nil then sublang[subnum] = f[1]
else sublang[subnum] = "" end
elseif f.label == "language" then -- language -- not use yet
if f[1] ~= nil then sub_language[subnum] = f[1]
else sub_language[subnum] = "" end
elseif f.label == "format" then
if f[1] ~= nil then subformat[subnum] = f[1]
else subformat[subnum] = "" end
end
end
end
subnum = subnum + 1
end
end
end
elseif b.label == "base" then
baseurl = b[1]
end
end
end