From 6c3554c4e10a30afaef9fb35ba9dc28e3e17c1a7 Mon Sep 17 00:00:00 2001
From: Richard <richard@fsmpi.rwth-aachen.de>
Date: Wed, 14 Oct 2020 19:00:21 +0200
Subject: [PATCH] manifest improvements + media details

---
 .gitignore    |  1 +
 free.js       | 36 ++++++++++++++++++++++++++----------
 manifest.json | 12 ++++++++++--
 3 files changed, 37 insertions(+), 12 deletions(-)

diff --git a/.gitignore b/.gitignore
index 2ccbe46..6206540 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1 +1,2 @@
 /node_modules/
+/web-ext-artifacts/
diff --git a/free.js b/free.js
index 2a30a79..928a6a9 100644
--- a/free.js
+++ b/free.js
@@ -10,15 +10,12 @@ if (window.location.host === 'engage.streaming.rwth-aachen.de') {
       window._meta = meta
       let videoTracks = meta['search-results'].result.mediapackage.media.track
         .filter(t=> t.mimetype.startsWith('video/') && t.url.startsWith('http'))
-        .sort((a,b) => {
-          let mimeComp = a.mimetype.localeCompare(b.mimetype)
-          if (mimeComp) return mimeComp
-          let resAI = parseInt(a.video.resolution)
-          let resBI = parseInt(b.video.resolution)
-          if (resAI > resBI) return 1
-          if (resAI < resBI) return -1
-          return 0
-        })
+        .sort((a,b) =>
+            a.mimetype.localeCompare(b.mimetype)
+            || Math.sign(parseInt(a.video.resolution) - parseInt(b.video.resolution))
+            || Math.sign(a.video.bitrate - b.video.bitrate)
+            || 00
+        )
       videoTracks.forEach(t=>console.debug(t.id, t.mimetype, t.video.resolution, t.url))
       if (inFrame) {
         window.parent.postMessage({videoTracks, meta}, '*')
@@ -66,6 +63,19 @@ function genVideoContainerId(vidIdOrMeta) {
   return `${genIdPrefix(vidIdOrMeta)}_container`
 }
 
+const FMT = (()=>{
+  const _locale = undefined
+  const _defaults = { style: 'unit', unitDisplay: 'narrow'}
+  const kbps = new Intl.NumberFormat(undefined, {..._defaults, unit: 'kilobit-per-second'})
+  const base = new Intl.NumberFormat(undefined, {..._defaults, style: 'decimal' })
+
+  return {
+    fps: v => `${base.format(v)}fps`,
+    hz: v => `${base.format(v/1000)}kHz`,
+    bps: v => kbps.format(v/1000),
+  }
+})()
+
 function genLinkContainer(tracks, meta) {
   let videoTitle = meta['search-results'].result.dcTitle || '?'
   let details = document.createElement('details')
@@ -78,11 +88,17 @@ function genLinkContainer(tracks, meta) {
   let videoLinkList = document.createElement('ul')
   videoLinkList.classList.add('videoLinkList')
   tracks.forEach(track => {
+    let mVid = track.video || {}
+    let mAud = track.audio || {}
     let li = document.createElement('li')
     let a = document.createElement('a')
     a.classList.add('videoLink')
     a.href = track.url
-    a.innerText = `${track.video.resolution} (${track.mimetype.replace(/^video\//, '')})`
+    a.innerText = `${mVid.resolution} (${track.mimetype.replace(/^video\//, '')})`
+    a.title = `Title: ${videoTitle}
+Type: ${track.mimetype}
+Video: ${mVid.resolution}@${FMT.fps(mVid.framerate)} (${FMT.bps(mVid.bitrate)}, ${mVid.encoder.type})
+Audio: ${mAud.channels}ch@${FMT.hz(mAud.samplingrate)} (${FMT.bps(mAud.bitrate)}, ${mAud.encoder.type})`
     li.appendChild(a)
     videoLinkList.appendChild(li)
   })
diff --git a/manifest.json b/manifest.json
index 5e66683..75fb043 100644
--- a/manifest.json
+++ b/manifest.json
@@ -1,8 +1,9 @@
 {
   "manifest_version": 2,
   "name": "OpenExcellenceMedia",
-  "version": "0.0.1",
+  "version": "0.0.2",
   "description": "Adds download links to videos on RWTH moodle which are served using an OpenCast iframe.",
+  "homepage_url": "https://git.fsmpi.rwth-aachen.de/moodleOpenCastDownloads/ff-ext",
   "icons": {
     "48": "icons/base-00.export-plain-opti.svg",
     "96": "icons/base-00.export-plain-opti.svg",
@@ -18,6 +19,13 @@
       "js": ["free.js"],
       "css": ["free.css"]
     }
-  ]
+  ],
+  "browser_specific_settings": {
+    "gecko": {
+        "id": "{cc975a31-cc03-49ce-8c82-2b265f327227}",
+        "strict_min_version": "60.0",
+        "update_url": "https://dev.sudo42.de/public/ff-addons/updates.json"
+    }
+  }
 
 }
-- 
GitLab