Socket
Socket
Sign inDemoInstall

bing-image-search-stream

Package Overview
Dependencies
10
Maintainers
1
Versions
8
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

    bing-image-search-stream

Readable stream to Bing's Image Search API


Version published
Weekly downloads
7
increased by75%
Maintainers
1
Install size
1.74 MB
Created
Weekly downloads
 

Readme

Source

Node.js Bing Image Search Stream

Query Bing Image Search API (v7) and get a readable stream of response objects.

Motivation

Bing Image Search API returns up to 150 results per API call. To access more results, you need to specify the proper offset 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.

Response objects

Please note that response objects wrap search results in the value field.

{
  _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).

Installation

npm install --save bing-image-search-stream

Example Usage

Here's an example the calculating the total number of search results.

const BingImageSearchStream = require('bing-image-search-stream');

let responses = [];
new BingImageSearchStream({
  key:'<YOUR_BING_IMAGE_SEARCH_API_SUBSRIPTION_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.

const BingImageSearchStream = require('bing-image-search-stream');

(async () => {
  const resultsStream = new BingImageSearchStream({
    key:'<YOUR_BING_IMAGE_SEARCH_API_SUBSRIPTION_KEY>',
    query: 'kittens',
    amount: 151,
  })
  for await (const results of resultsStream) {
    for (const result of results.value) {
      console.log(result);
    }
  }
})();

Options

ParameterTypeDefaultDescription
keystring(Required) Bing Image Search API Subscription Key
querystring(Required) Search query
amountinteger2000Desired count of results
marketstringMarket Code of request origin (e.g., en-US)
safeSearchstringModerateFilter adult content (Off, Moderate, Strict)
offsetinteger0Offset of the initial API call
countinteger150Count of results per API call (lower this value may result in more API calls)
queryParamsobjectAdditional query params (e.g., { imageType: "AnimatedGif" })
headerParamsobjectAdditional header params (e.g., { Pragma: "no-cache" })
fetchCbfunctionfetchCallback 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

License

MIT

Keywords

FAQs

Last updated on 03 Feb 2024

Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc