ard.lua: Add Ard.quality_from function
authorToni Gundogdu <legatvs@gmail.com>
Fri, 8 Feb 2013 16:01:02 +0000 (8 18:01 +0200)
committerToni Gundogdu <legatvs@gmail.com>
Fri, 8 Feb 2013 16:21:07 +0000 (8 18:21 +0200)
Have the Ard.quality function return a string containing one of the
strings 'ld', 'md', 'sd', 'hd'. Other websites.

Plenty of guessing going on here, these strings are roughly based on
the findings posted here:
  http://article.gmane.org/gmane.comp.web.flash.quvi/170

  0 = '256x144' -- ld
  1 = '512x288' -- md
  2 = '960x540' -- sd
  3 ='1280x720' -- hd

share/lua/website/ard.lua

index db8d357..7e7f516 100644 (file)
@@ -121,12 +121,25 @@ function Ard.to_s(t)
               (t.height) and '_'..t.height or '')
 end
 
+function Ard.quality_from(suffix)
+    local q = suffix:match('%.web(%w)%.') or suffix:match('%.(%w)%.')
+                or suffix:match('[=%.]Web%-(%w)') -- .webs. or Web-S or .s
+    if q then
+        q = q:lower()
+        local t = {s='ld', m='md', l='sd', xl='hd'}
+        for k,v in pairs(t) do
+            if q == k then return v end
+        end
+    end
+    return q
+end
+
 function Ard.iter_formats(page)
     local r = {}
     local s = 'mediaCollection%.addMediaStream'
-                .. '%(0, (%d), "(.-)", "(.-)", "%w+"%);'
+                .. '%(0, %d+, "(.-)", "(.-)", "%w+"%);'
 
-    for quality, prefix, suffix in  page:gmatch(s) do
+    for prefix, suffix in  page:gmatch(s) do
         local u = prefix .. suffix
         -- remove querystring
         u = u:match('^(.-)?') or u
@@ -143,8 +156,8 @@ function Ard.iter_formats(page)
              url = u,
              container = suffix:match('^(...):') or suffix:match('%.(...)$')
                          or suffix:match('%.(...)$') or 'mp4',
-             quality = tonumber(quality),
              encoding = suffix:match('%.(h264)%.'),
+             quality = Ard.quality_from(suffix),
              height = height,
              webx = webx
            }