vlc | branch: master | Jean-Baptiste Kempf <[email protected]> | Tue Nov 11 16:27:17 2014 +0100| [4b07f72828f93289b70365dfa9d729f4d4a2dff2] | committer: Jean-Baptiste Kempf
lua: Update VLSub to 0.9.13 > http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=4b07f72828f93289b70365dfa9d729f4d4a2dff2 --- share/lua/extensions/VLSub.lua | 73 +++++++++++++++++++++++++--------------- 1 file changed, 45 insertions(+), 28 deletions(-) diff --git a/share/lua/extensions/VLSub.lua b/share/lua/extensions/VLSub.lua index 42c45f0..213e34d 100644 --- a/share/lua/extensions/VLSub.lua +++ b/share/lua/extensions/VLSub.lua @@ -95,13 +95,13 @@ local options = { Download subtitles from <a href='http://www.opensubtitles.org/'> opensubtitles.org - </a> and display them while watching a video.<br>".. + </a> and display them while watching a video.<br> <br> <b><u>Usage:</u></b><br> <br> - VLSub is meant to be used while you are watching the video, - so start it first (if nothing is playing you will get a link - to download the subtitles in your browser).<br> + Start your video. If you use Vlsub witout playing a video + you will get a link to download the subtitles in your browser + but the subtitles won't be saved and loaded automatically.<br> <br> Choose the language for your subtitles and click on the button corresponding to one of the two research methods @@ -326,8 +326,8 @@ local select_conf = {} -- Drop down widget / option table association function descriptor() return { - title = "VLsub 0.9.12", - version = "0.9.12", + title = "VLsub 0.9.13", + version = "0.9.13", author = "exebetche", url = 'http://www.opensubtitles.org/', shortdesc = "VLsub"; @@ -1667,7 +1667,8 @@ function download_subtitles() local item = openSub.itemStore[index] - if openSub.option.downloadBehaviour == 'manual' then + if openSub.option.downloadBehaviour == 'manual' + or not subfileName then local link = "<span style='color:#181'>" link = link.."<b>"..lang["mess_dowload_link"]..":</b>" link = link.."</span> " @@ -1866,34 +1867,50 @@ function http_req(host, port, request) vlc.net.send(fd, request) vlc.net.poll(pollfds) - local response = vlc.net.recv(fd, 2048) - local headerStr, body = string.match(response, "(.-\r?\n)\r?\n(.*)") - local header = parse_header(headerStr) - local contentLength = tonumber(header["Content-Length"]) - local TransferEncoding = header["Transfer-Encoding"] - local status = tonumber(header["statuscode"]) - local bodyLenght = string.len(body) + local chunk = vlc.net.recv(fd, 2048) + local response = "" + local headerStr, header, body + local contentLength, status local pct = 0 - --~ if status ~= 200 then return status end - - while contentLength and bodyLenght < contentLength do - vlc.net.poll(pollfds) - response = vlc.net.recv(fd, 1024) + while chunk do + response = response..chunk + if not header then + headerStr, body = response:match("(.-\r?\n)\r?\n(.*)") + if headerStr then + response = body + header = parse_header(headerStr) + contentLength = tonumber(header["Content-Length"]) + status = tonumber(header["statuscode"]) + end + end - if response then - body = body..response - else - vlc.net.close(fd) - return false + if contentLength then + bodyLenght = #response + pct = bodyLenght / contentLength * 100 + setMessage(openSub.actionLabel..": "..progressBarContent(pct)) + if bodyLenght >= contentLength then + break + end end - bodyLenght = string.len(body) - pct = bodyLenght / contentLength * 100 - setMessage(openSub.actionLabel..": "..progressBarContent(pct)) + + vlc.net.poll(pollfds) + chunk = vlc.net.recv(fd, 1024) end + vlc.net.close(fd) - return status, body + if status == 301 + and header["Location"] then + local host, path = parse_url(trim(header["Location"])) + request = request + :gsub("^([^%s]+ )([^%s]+)", "%1"..path) + :gsub("(Host: )([^\n]*)", "%1"..host) + + return http_req(host, port, request) + end + + return status, response end function parse_header(data) _______________________________________________ vlc-commits mailing list [email protected] https://mailman.videolan.org/listinfo/vlc-commits
