2.1.0 • Published 5 years ago

huaban-dl v2.1.0

Weekly downloads
2
License
MIT
Repository
github
Last release
5 years ago

huaban-dl

下载花瓣网的图片

安装

依赖于 axios,先安装 axios

yarn add axios
# 或者
npm i axios
yarn add huaban-dl
# 或者
npm i huaban-dl

使用

简单使用

直接获取画板所有图片的下载链接

const boardId = 35237897
const Board = require('huaban-dl')

async function download(boardId) {
  const board = new Board(boardId)
  console.log('初始化中……')
  await board.init()
  console.log('正在获取所有图片信息……')
  await board.getAll()
  const { amount, page, links } = board

  console.log(`共有图片页数: ${page}`)
  console.log(`共有图片数量: ${amount}`)
  console.log(`所有图片链接: \n${links.join('\n')}`)
}

download(boardId)

操作整个流程

可以获取更多信息,流程可控。

/**
 * 按页数逐步获取图片信息
 */

const axios = require('axios')
const fs = require('fs')
const path = require('path')
const Board = require('huaban-dl')

async function download(boardId) {
  const board = new Board(boardId)
  console.log('初始化中……')
  const { links: firstPageLinks } = await board.init()
  console.log('初始化完成')
  console.log(`第 ${board.page} 页图片数量:${firstPageLinks.length},该页所有链接:`)
  console.log(`${firstPageLinks.join('\n')}`)

  // 获取下一页数据
  const next = async () => {
    const data = await board.getNextPage()

    // 结束
    if (!data) {
      return
    }

    const { links } = data
    console.log(`第 ${board.page} 页图片数量:${links.length},该页所有链接:`)
    console.log(`${links.join('\n')}`)

    // 递归
    await next()
  }

  // 递归获取下一页数据
  await next()

  console.log(`共有图片 ${board.page} 页,${board.amount} 张`)

  // 下载
  const { links } = board
  for (let index = 0; index < links.length; index++) {
    const link = links[index];
    console.log(`下载图片: ${link}`)
    const { data } = await axios({
      method: 'GET',
      url: link,
      responseType: 'arraybuffer'
    })
    const directory = path.join(__dirname, '../download')
    fs.exists(directory, isExists => {
      if (!isExists) {
        console.log(`创建文件夹:${directory}`)
        fs.mkdir(directory, err => console.warn)
      }
      const imgPath = `${directory}/img${index}.jpeg`
      console.log(`写入路径:${imgPath}`)
      fs.writeFile(imgPath, data, err => { err && console.log(err) })
    })
  }
  return
}

const boardId = 35237897
download(boardId)
2.1.0

5 years ago

2.0.0

5 years ago

1.0.0

5 years ago

0.0.1

5 years ago