Skip to content

Commit

Permalink
Fixed foreign image file names
Browse files Browse the repository at this point in the history
Fixes #51
  • Loading branch information
dijs committed Jul 26, 2017
1 parent 51e5691 commit 4db94f2
Show file tree
Hide file tree
Showing 3 changed files with 131 additions and 1 deletion.
7 changes: 6 additions & 1 deletion src/page.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,11 @@ import { aggregatePagination, pagination, api } from './util';
import infoboxParser from 'infobox-parser';
import {parseCoordinates} from './coordinates';

const byNamedImage = searchName => image => {
const [type, name] = image.title.split(':');
return name === searchName;
};

/**
* WikiPage
* @namespace WikiPage
Expand Down Expand Up @@ -94,7 +99,7 @@ export default function wikiPage(rawPageInfo, apiOptions) {
function mainImage() {
return Promise.all([rawImages(), info()])
.then(([images, info]) => {
const image = images.find(image => image.title === `File:${info.image}`);
const image = images.find(byNamedImage(info.image));
return image.imageinfo.length > 0 ? image.imageinfo[0].url : undefined;
});
}
Expand Down
114 changes: 114 additions & 0 deletions test/data/1463865891844-f.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,114 @@
{
"batchcomplete": "",
"limits": {
"images": 500
},
"query": {
"pages": {
"23473511": {
"pageid": 23473511,
"ns": 6,
"title": "File:Folder Hexagonal Icon.svg",
"imagerepository": "local",
"imageinfo": [
{
"url": "https://upload.wikimedia.org/wikipedia/en/4/48/Folder_Hexagonal_Icon.svg",
"descriptionurl": "https://en.wikipedia.org/wiki/File:Folder_Hexagonal_Icon.svg",
"descriptionshorturl": "https://en.wikipedia.org/w/index.php?curid=23473511"
}
]
},
"33285257": {
"pageid": 33285257,
"ns": 6,
"title": "File:Portal-puzzle.svg",
"imagerepository": "local",
"imageinfo": [
{
"url": "https://upload.wikimedia.org/wikipedia/en/f/fd/Portal-puzzle.svg",
"descriptionurl": "https://en.wikipedia.org/wiki/File:Portal-puzzle.svg",
"descriptionshorturl": "https://en.wikipedia.org/w/index.php?curid=33285257"
}
]
},
"38400241": {
"pageid": 38400241,
"ns": 6,
"title": "Datei:Luke Skywalker.png",
"imagerepository": "local",
"imageinfo": [
{
"url": "https://upload.wikimedia.org/wikipedia/en/9/9b/Luke_Skywalker.png",
"descriptionurl": "https://de.wikipedia.org/wiki/Datei:Luke_Skywalker.png",
"descriptionshorturl": "https://de.wikipedia.org/w/index.php?curid=38400241"
}
]
},
"-1": {
"ns": 6,
"title": "File:Friendly stickman.svg",
"missing": "",
"imagerepository": "shared",
"imageinfo": [
{
"url": "https://upload.wikimedia.org/wikipedia/commons/d/dd/Friendly_stickman.svg",
"descriptionurl": "https://commons.wikimedia.org/wiki/File:Friendly_stickman.svg",
"descriptionshorturl": "https://commons.wikimedia.org/w/index.php?curid=5521126"
}
]
},
"-2": {
"ns": 6,
"title": "File:Lightsaber blue.svg",
"missing": "",
"imagerepository": "shared",
"imageinfo": [
{
"url": "https://upload.wikimedia.org/wikipedia/commons/6/67/Lightsaber_blue.svg",
"descriptionurl": "https://commons.wikimedia.org/wiki/File:Lightsaber_blue.svg",
"descriptionshorturl": "https://commons.wikimedia.org/w/index.php?curid=9380236"
}
]
},
"-3": {
"ns": 6,
"title": "File:Padlock-silver-light.svg",
"missing": "",
"imagerepository": "shared",
"imageinfo": [
{
"url": "https://upload.wikimedia.org/wikipedia/commons/2/28/Padlock-silver-light.svg",
"descriptionurl": "https://commons.wikimedia.org/wiki/File:Padlock-silver-light.svg",
"descriptionshorturl": "https://commons.wikimedia.org/w/index.php?curid=1843291"
}
]
},
"-4": {
"ns": 6,
"title": "File:People icon.svg",
"missing": "",
"imagerepository": "shared",
"imageinfo": [
{
"url": "https://upload.wikimedia.org/wikipedia/commons/3/37/People_icon.svg",
"descriptionurl": "https://commons.wikimedia.org/wiki/File:People_icon.svg",
"descriptionshorturl": "https://commons.wikimedia.org/w/index.php?curid=824285"
}
]
},
"-5": {
"ns": 6,
"title": "File:Symbol book class2.svg",
"missing": "",
"imagerepository": "shared",
"imageinfo": [
{
"url": "https://upload.wikimedia.org/wikipedia/commons/8/89/Symbol_book_class2.svg",
"descriptionurl": "https://commons.wikimedia.org/wiki/File:Symbol_book_class2.svg",
"descriptionshorturl": "https://commons.wikimedia.org/w/index.php?curid=8459010"
}
]
}
}
}
}
11 changes: 11 additions & 0 deletions test/spec.js
Original file line number Diff line number Diff line change
Expand Up @@ -190,6 +190,17 @@ describe('Page Methods', () => {
.reply(200, JSON.parse(fs.readFileSync('./test/data/1463865915453.json')))
return luke.mainImage().should.eventually.equal('https://upload.wikimedia.org/wikipedia/en/9/9b/Luke_Skywalker.png');
});

it('should get main image from a foreign article', () => {
nock('http://en.wikipedia.org')
.get('/w/api.php?generator=images&gimlimit=max&prop=imageinfo&iiprop=url&titles=Luke%20Skywalker&format=json&action=query&origin=*&redirects=')
.once()
.reply(200, JSON.parse(fs.readFileSync('./test/data/1463865891844-f.json')))
.get('/w/api.php?prop=revisions&rvprop=content&rvsection=0&titles=Luke%20Skywalker&format=json&action=query&origin=*&redirects=')
.once()
.reply(200, JSON.parse(fs.readFileSync('./test/data/1463865915453.json')))
return luke.mainImage().should.eventually.equal('https://upload.wikimedia.org/wikipedia/en/9/9b/Luke_Skywalker.png');
});

it('should get empty image list if no query data', () => {
nock('http://en.wikipedia.org')
Expand Down

0 comments on commit 4db94f2

Please sign in to comment.