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