Readable stream to Bing's Image Search API
npm install bing-image-search-streamoffset request parameter in a subsequent API call. This module automates the process of filling the offset parameter value and determines when to stop making API calls— what you get in the end is a readable stream of parsed responses.value field.``JS`
{
_type: 'Images',
totalEstimatedMatches: 834,
nextOffset: 195,
value: [
{
name: ...,
thumbnailUrl: ...,
datePublished: ...,
contentUrl: ...,
...
},
...
],
...
}
This module doesn't unwrap search results for you because response objects may contain additional metadata (e.g., queryExpansions, pivotSuggestions, similarTerms and relatedSearches).
npm install --save bing-image-search-stream
`Example Usage
Here's an example the calculating the total number of search results.
`js
const BingImageSearchStream = require('bing-image-search-stream');let responses = [];
new BingImageSearchStream({
key:'',
query: 'kittens',
amount: 151,
}).on('data', (data) => {
responses.push(data);
}).on('end', () => {
const total = responses.reduce((acc, result) => acc + result.value.length, 0);
console.log('total: ', total);
});
`This example takes advantage of Node.js 10's experimental support for asynchronously iterating over readable streams to print out search results to the console.
`js
const BingImageSearchStream = require('bing-image-search-stream');(async () => {
const resultsStream = new BingImageSearchStream({
key:'',
query: 'kittens',
amount: 151,
})
for await (const results of resultsStream) {
for (const result of results.value) {
console.log(result);
}
}
})();
`Options
| Parameter | Type | Default | Description |
| ------------ | ---------- | -------------- | ------------------------------------------------------------------ |
| key | string | | (Required) Bing Image Search API Subscription Key |
| query | string | | (Required) Search query |
| amount | integer | 2000 | Desired count of results |
| market | string | | Market Code of request origin (e.g., en-US) |
| safeSearch | string | Moderate | Filter adult content (Off, Moderate, Strict) |
| offset | integer | 0 | Offset of the initial API call |
| count | integer | 150 | Count of results per API call (lower this value may result in more API calls) |
| queryParams | object | | Additional query params (e.g., { imageType: "AnimatedGif" }) |
| headerParams | object | | Additional header params (e.g., { Pragma: "no-cache" }) |
| fetchCb | function | fetch | Callback to construct a request that returns a response promise |Features
- Turns a search query into a stream of search response objects
- Ends stream _when requested amount is reached_ or _whenthere are no more results_
- Avoids results overlap by specifying the
offset API parameter with previous response's nextOffset value
- Fills in X-MSEdge-ClientID` automatically based on previous API responses