npm install wtf-plugin-image
Some additional methods for using and rendering images in wtf_wikipedia
const wtf = require('wtf_wikipedia')
wtf.extend(require('wtf-plugin-image'))
wtf.fetch('casa', { lang:'it', wiki: `wiktionary` }).then(async function(doc) {
let image = doc.images()[0]
// make a {method: 'HEAD'} request to test the image is there
let bool = await image.exists()
// instead of using the redirect api, generate a direct img url
let url = image.commonsURL()
// https://upload.wikimedia.org/wikipedia/commons/4/4e/RybnoeDistrict_06-13_Konstantinovo_village_05.jpg
let img = doc.mainImage()
//
// make a request to get the license and attribution information (results are HTML formatted)
let license = await image.license()
/*
{
license: 'CC BY-SA 3.0',
artist: '<b><span class="plainlinks"> ... (more HTML)',
credit: '<span class="int-own-work" lang="en">Own work</span>',
attributionRequired: 'true'
}
*/
})
<script src="https://unpkg.com/wtf_wikipedia"></script>
<script src="https://unpkg.com/wtf-plugin-images"></script>
<script defer>
wtf.plugin(window.wtfImage)
wtf.fetch('Hamburg').then((doc) => {
console.log(doc.mainImage().thumb())
// https://wikipedia.org/wiki/Special:Redirect/file/Flag_of_Hamburg.svg?width=300
})
</script>
The document's images
method now also accepts an options object as its argument, possible options are:
batch
Request-making methods that you want to call for all the images. (a string for one or array for more)
It's a best practice as it prevents overwhelming the wiki's servers by making one request for all the
images beforehand instead of multiple. (the return value ofimages
would be a Promise)
let images = await doc.images({batch: ['license', 'exists']}) // note the "await"
let image = images[0]
// even though they don't make requests, they still return Promises for consistency
let bool = await image.exists()
let license = await image.license()
plugin also has a method for choosing a good, or representative image for this page, if it exists:
// choose a good image for this article
let doc = await wtf.fetch('Toronto')
let img = doc.mainImage()
console.log(img.src())
// https://wikipedia.org/wiki/Special:Redirect/file/Toronto_Flag.svg
- image.exists() - double-check that the image is on the server
- image.commonsURL() - instead of the wikimedia redirect server, generate a url for the commons server.
- image.mainImage() - get only an image that should represent this topic, as a thumbnail.
- image.license() - get license and attribution information for the image.
- document.images() - accepts an options object as argument.
MIT