ard.lua: Ard.to_s: Use service internal stream ID
authorToni Gundogdu <legatvs@gmail.com>
Fri, 8 Feb 2013 16:38:57 +0000 (8 18:38 +0200)
committerToni Gundogdu <legatvs@gmail.com>
Fri, 8 Feb 2013 16:45:48 +0000 (8 18:45 +0200)
Since the service provides an ID (1,2,3,...), use it in
the media stream ID to make them unique. Otherwise we'll
end up with identical media stream IDs in some cases.

Use 'i' for the lack of a better prefix. This is similar to
that of youtube.lua (0.9) and the use of the "itag" value in
YouTube the media stream IDs.

Signed-off-by: Toni Gundogdu <legatvs@gmail.com>
share/lua/website/ard.lua

index 7a3a8ac..5afb3ba 100644 (file)
@@ -114,9 +114,9 @@ function Ard.choose_default(t)
 end
 
 function Ard.to_s(t)
-    return string.format("%s_%s%s%s",
+    return string.format("%s_%s_i%02d%s%s",
               (t.quality) and t.quality or 'sd',
-              t.container,
+              t.container, t.stream_id,
               (t.encoding) and '_'..t.encoding or '',
               (t.height) and '_'..t.height or '')
 end
@@ -147,9 +147,9 @@ end
 function Ard.iter_formats(page)
     local r = {}
     local s = 'mediaCollection%.addMediaStream'
-                .. '%(0, %d+, "(.-)", "(.-)", "%w+"%);'
+                .. '%(0, (%d+), "(.-)", "(.-)", "%w+"%);'
 
-    for prefix, suffix in  page:gmatch(s) do
+    for s_id, prefix, suffix in  page:gmatch(s) do
         local u = prefix .. suffix
         u = u:match('^(.-)?') or u  -- remove querystring
         local t = {
@@ -157,6 +157,7 @@ function Ard.iter_formats(page)
             encoding = suffix:match('%.(h264)%.'),
             quality = Ard.quality_from(suffix),
             height = Ard.height_from(suffix),
+            stream_id = s_id, -- internally (by service) used stream ID
             url = u
         }
         table.insert(r,t)