[vlc-devel] [PATCH] Add VLSub feature: Download multiple subtitles

Alon Sirota sirotaalon at gmail.com
Tue Aug 11 20:20:21 CEST 2020


All selected subtitles are now downloaded, instead of only one.

Change 'get_first_sel' function to return ALL selected subtitles
instead of only one, and refactored name to 'get_all_sel'.

Change 'download_subtitles' function to iterate over 'get_all_sel'
returned table instead of downloading the only subtitle from old 'get_first_sel'.
---
 share/lua/extensions/VLSub.lua | 20 ++++++++++++--------
 1 file changed, 12 insertions(+), 8 deletions(-)

diff --git a/share/lua/extensions/VLSub.lua b/share/lua/extensions/VLSub.lua
index 2edc73ecdc..ceb49e302d 100644
--- a/share/lua/extensions/VLSub.lua
+++ b/share/lua/extensions/VLSub.lua
@@ -1429,12 +1429,15 @@ function display_subtitles()
     lang["mess_no_res"])
 end
 
-function get_first_sel(list)
+  function get_all_sel(list)
   local selection = list:get_selection()
+    local indexes = {}
+    local i = 1 -- key counter
   for index, name in pairs(selection) do
-    return index
+      indexes[i] = index
+      i = i + 1
   end
-  return 0
+    return indexes
 end
 
 function find_subtitle_in_archive(archivePath, subfileExt)
@@ -1453,18 +1456,18 @@ function find_subtitle_in_archive(archivePath, subfileExt)
 end
 
 function download_subtitles()
-  local index = get_first_sel(input_table["mainlist"])
-
-  if index == 0 then
+    local indexes = get_all_sel(input_table["mainlist"])
+    if #indexes == 0 then -- if no subtitles selected
     setMessage(lang["mess_no_selection"])
     return false
   end
-
   openSub.actionLabel = lang["mess_downloading"]
 
   display_subtitles() -- reset selection
 
-  local item = openSub.itemStore[index]
+  -- for each subtitle index
+  for _, index in pairs(indexes) do
+    item = openSub.itemStore[index]
 
   if openSub.option.downloadBehaviour == 'manual'
   or not openSub.file.hasInput then
@@ -1581,6 +1584,7 @@ function download_subtitles()
 
   setMessage(message)
 end
+end
 
 function dump_zip(url, dir, subfileName)
   -- Dump zipped data in a temporary file
-- 
2.28.0



More information about the vlc-devel mailing list