Mholloway has uploaded a new change for review. (
https://gerrit.wikimedia.org/r/394641 )
Change subject: Media: exclude 'width' and 'height' properties from audio items
......................................................................
Media: exclude 'width' and 'height' properties from audio items
Also tightens up some adjacent things.
Bug: T177430
Change-Id: Ifec5d430d6147542eab26ba5c07fa2e420df3b19
---
M lib/media.js
M routes/media.js
M test/diff/results/page_media-enwiki-Ko%C5%A1ice.json
3 files changed, 16 insertions(+), 29 deletions(-)
git pull ssh://gerrit.wikimedia.org:29418/mediawiki/services/mobileapps
refs/changes/41/394641/1
diff --git a/lib/media.js b/lib/media.js
index c1dcfc0..4d89149 100644
--- a/lib/media.js
+++ b/lib/media.js
@@ -2,6 +2,7 @@
const api = require('./api-util');
const mUtil = require('./mobile-util');
+const Title = require('mediawiki-title').Title;
const MIN_IMAGE_SIZE = 64;
const MAX_IMAGE_WIDTH = 1280;
@@ -118,13 +119,13 @@
return Object.assign(...meta.map(item => ({ [item.name]: item.value })));
}
-function makeResults(items) {
+function makeResults(items, siteinfo) {
return items.map((item) => {
const info = item.imageinfo[0];
const meta = info.metadata && metadataToObject(info.metadata);
const ext = info.extmetadata;
return {
- title: item.title,
+ title: Title.newFromText(item.title, siteinfo).getPrefixedDBKey(),
thumb: {
source: info.thumburl,
width: info.thumbwidth,
@@ -133,8 +134,8 @@
},
original: {
source: info.url,
- width: info.width,
- height: info.height,
+ width: info.mediatype === 'AUDIO' ? undefined : info.width,
+ height: info.mediatype === 'AUDIO' ? undefined : info.height,
mime: info.mime,
size: info.size
},
@@ -167,11 +168,8 @@
* the max we can specify at a time through the query title parameter.
*
* https://www.mediawiki.org/wiki/API:Query#Specifying_pages
- *
- * TODO: Determine a strategy for handling multilingual extmetadata content
(i.e., whether to apply
- * viextmetadatalanguage or viextmetadatamultilang or both)
*/
-function getMetadataFromApi(app, req, titles) {
+function getMetadataFromApi(app, req, titles, siteinfo) {
const props = [
'canonicaltitle',
'url',
@@ -197,7 +195,7 @@
};
return api.mwApiGetBatched(app, req.params.domain, query,
titles).then((response) => {
- return { items: makeResults(response) };
+ return { items: makeResults(response, siteinfo) };
});
}
diff --git a/routes/media.js b/routes/media.js
index b4ec043..db34514 100644
--- a/routes/media.js
+++ b/routes/media.js
@@ -7,7 +7,6 @@
const sUtil = require('../lib/util');
const mwapi = require('../lib/mwapi');
const media = require('../lib/media');
-const Title = require('mediawiki-title').Title;
const router = sUtil.router();
let app;
@@ -17,9 +16,12 @@
* Gets the media items associated with the given page.
*/
router.get('/media/:title/:revision?/:tid?', (req, res) => {
- return parsoid.getParsoidHtml(app, req).then((response) => {
- const headers = response.headers;
- const doc = domino.createDocument(response.body);
+ return BBPromise.props({
+ html: parsoid.getParsoidHtml(app, req),
+ siteinfo: mwapi.getSiteInfo(app, req)
+ }).then((response) => {
+ const revTid = parsoid.getRevAndTidFromEtag(response.html.headers);
+ const doc = domino.createDocument(response.html.body);
// todo: handle Mathoid-rendered math images
const selection = doc.querySelectorAll(media.SELECTORS.join(','));
if (!selection) {
@@ -28,22 +30,11 @@
}
const mediaList = media.getMediaItemInfoFromPage(selection);
const titles = mUtil.deduplicate(mediaList.map(item => item.title));
- return BBPromise.props({
- metadata: media.getMetadataFromApi(app, req, titles),
- siteinfo: mwapi.getSiteInfo(app, req)
- }).then((response) => {
- const revTid = parsoid.getRevAndTidFromEtag(headers);
- const metadataList = response.metadata.items;
- metadataList.forEach((item) => {
- item.title = Title.newFromText(item.title,
response.siteinfo).getPrefixedDBKey();
- });
- mUtil.mergeByProp(mediaList, metadataList, 'title', false);
- const result = mediaList.filter((item) => {
- return media.filterResult(item);
- });
+ return media.getMetadataFromApi(app, req, titles,
response.siteinfo).then((response) => {
+ mUtil.mergeByProp(mediaList, response.items, 'title', false);
mUtil.setETag(res, revTid.revision, revTid.tid);
mUtil.setContentType(res, mUtil.CONTENT_TYPES.unpublished);
- res.send({ items: result });
+ res.send({ items: mediaList.filter(item =>
media.filterResult(item)) });
});
});
});
diff --git a/test/diff/results/page_media-enwiki-Ko%C5%A1ice.json
b/test/diff/results/page_media-enwiki-Ko%C5%A1ice.json
index f9bd8cf..b15ded6 100644
--- a/test/diff/results/page_media-enwiki-Ko%C5%A1ice.json
+++ b/test/diff/results/page_media-enwiki-Ko%C5%A1ice.json
@@ -1167,8 +1167,6 @@
},
"original": {
"source":
"https://upload.wikimedia.org/wikipedia/commons/f/f2/En-Kosice.ogg",
- "width": 0,
- "height": 0,
"mime": "application/ogg",
"size": 86739162
},
--
To view, visit https://gerrit.wikimedia.org/r/394641
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings
Gerrit-MessageType: newchange
Gerrit-Change-Id: Ifec5d430d6147542eab26ba5c07fa2e420df3b19
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/services/mobileapps
Gerrit-Branch: master
Gerrit-Owner: Mholloway <[email protected]>
_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits