跳至主要內容

heStudio BingWallpaper Get

undefined...大约 7 分钟

目录

demo

这是一张自动更换的图片

调用方法

提示

运行端口在3000

获取图片

GET /getimage

获取图片标题

GET /gettitle

返回参数:

参数说明
title标题

获取图片版权信息

GET /getcopyright

返回参数:

参数说明
copyright版权信息
copyrightlink版权信息所对应的链接

安装方法

docker pull hestudio/bingwallpaper_get
docker run -d -p 3000:3000 hestudio/bingwallpaper_get

警告

请在更新版本之前仔细阅读版本更新日志open in new window,并决定是否更新版本。盲目的更新版本可能会导致程序崩溃。建议在更新之前请先记录之前版本的版本号,在遇到兼容问题时可以回退到之前的版本。

注意

我们将在v1.3.2版本之后将开发时使用的包管理器切换到pnpm,建议使用手动部署的也使用pnpm包管理器,Docker部署和NPM部署的用户不受影响。

提交问题

https://github.com/hestudio-community/bing-wallpaper-get/issuesopen in new window

高级用法

小白慎入

在使用高级用法之前,你需要了解nodejs,docker,javascriptlinux的一些知识。如果你是小白,你应当只使用基本用法。

假设条件

在下文中,我们将假设你将服务运行在localhost:3000

请根据自己的实际需求按需修改,默认配置并不适合所有人

环境变量

hbwg_port: 自定义程序端口

  • 默认值: 3000

hbwg_host: 自定义Bing前置URL

  • 默认值: https://cn.bing.com

hbwg_config: 自定义请求参数

  • 默认值: format=js&idx=0&n=1&mkt=zh-CN

hbwg_external: 外部文件路径

  • 默认值: ./external.js

hbwg_getupdate: 是否检查更新

  • 默认值: true
  • 注意,你应当只传入false以禁用自动检查更新。如果你不需要禁用自动检查更新,应当传入true或者不传入任何值。

警告

我们已经在v1.3.1将此开关移至external.js文件,请浏览检查更新开关

请注意,我们将在v1.4.0版本移除此环境变量。

hbwg_packageurl: package.json对应URL

  • 默认值: https://raw.githubusercontent.com/hestudio-community/bing-wallpaper-get/main/package.json

hbwg_header: 传入真实IP的请求头

  • 默认值: x-real-ip

修改组件行为

修改前你需要在根目录创建external.js文件。你可以自定义创建的路径和文件名称,只需添加hbwg_external环境变量即可。

在开始这部分内容之前,你需要了解以下内容。

本项目导出了4个项目函数。它们分别是getback(ip, path), postback(ip, path), logback(log), logerr(err)。我们分别来讲以下:

getback(ip, path)
参数参数类型
ipString
pathString

输出效果大概是这样:

[YYYY-MM-DD HH:mm:ss] ${ip} GET ${path}
postback(ip, path)
参数参数类型
ipString
pathString

输出效果大概是这样:

[YYYY-MM-DD HH:mm:ss] ${ip} POST ${path}
logback(log)
参数参数类型
logString

输出效果大概是这样:

[YYYY-MM-DD HH:mm:ss] ${log}
logerr(err)
参数参数类型
errString

输出效果大概是这样:

[YYYY-MM-DD HH:mm:ss] ERROR: ${err}
logwarn(err)
参数参数类型
warnString

输出效果大概是这样:

[YYYY-MM-DD HH:mm:ss] WARN: ${warn}

另外还有6个指示器,它们输出的数据类型是string。他们被包含在hbwgConfig对象当中,你只能查看它们的值,无法直接修改它们。该指示器提供给开发人员调试使用,不要在生产环境使用。

  • hbwgConfig.port: 程序端口号,可以在hbwg_port修改。
  • hbwgConfig.api: 服务地址,可以在hbwg_hosthbwg_config修改。
  • hbwgConfig.host: Bing前置URL,可以在hbwg_host修改。
  • hbwgConfig.getupdate: 获取更新开关,可以在获取更新开关修改。
  • hbwgConfig.packageurl: 更新源,在检查更新时会请求该地址。可以在package.json对应URL修改。
  • hbwgConfig.header: IP地址传入请求头,可以在hbwg_header

当然,你也直接可以用hbwgConfig对象获取到他们的全部信息。详见示例

将以下初始化内容粘贴到external.js:

// external.js

const {
  // 项目函数
  // getback
  // postback
  // logback
  // logerr
  // logwarn
  //
  // 配置信息
  // hbwgConfig
} = require("hestudio-bingwallpaper-get")

module.exports = {
  // 组件配置
}

上述模板中均已注释项目函数和指示器,可根据需要自行取消注释。

getupdate: 获取更新开关

此开关决定系统是否提示更新版本。

在默认状态下,这个开关是开启状态。程序会在刚开始运行时和每个资源刷新周期自动请求更新源。如果检测到更新源有更新的版本,将会在日志中提示。

提示

不会自动更新本程序,仅提示更新。

如果需要禁用更新提示,可以在external.js中进行如下修改。

// external.js

module.exports = {
  getupdate: false;
}



 

rootprogram: 自定义GET /的行为

注意

修改此部分需要你额外具有express.js的知识。如果不是太了解,可以参考:

在默认情况下,访问localhost:3000会跳转到这里,你可以通过修改rootprogram函数以修改此行为。

示例项目如下:

// external.js

module.exports = {
  rootprogram: (req, res) => {
    //在这里修改内容
    res.send("helloworld")
  }
}



 
 
 
 

示例

一个输出程序配置信息的示例程序,你应当仅在开发调试环境使用

// external.js

const { hbwgConfig } = require("hestudio-bingwallpaper-get")

module.exports = {
  rootprogram: (req, res) => {
    res.send(hbwgConfig)
  }
}

beforestart: 在服务运行前导入代码

在开始这部分内容之前,你需要了解以下内容。

本组件中导入了app变量,该变量由express.js导入,修改此部分需要你额外具有express.js的知识。如果不是太了解,可以参考:

不能使用app.listen(),因为这会导致项目出现致命错误。当然,你也不能将URL路由至/, /getimage, /geititle, /getcopyright等,它们也会导致项目无法正常运行。你可以自定义/,但是仅限于GET请求。如果需要自定义/,请参考rootprogram函数。

好的,现在可以通过以下结构在服务运行前导入代码

// external.js

module.exports = {
  beforestart: (app) => {
    //在这里修改内容
  }
}



 
 
 

refreshtime: 设置资源刷新时间

在修改本部分内容之前,需要了解一下node-scheduleopen in new window

已导入rule变量,需修改rule变量才能有效果。

官方教程

Recurrence Rule Scheduling

You can build recurrence rules to specify when a job should recur. For instance, consider this rule, which executes the function every hour at 42 minutes after the hour:

const schedule = require('node-schedule');

const rule = new schedule.RecurrenceRule();
rule.minute = 42;

const job = schedule.scheduleJob(rule, function(){
  console.log('The answer to life, the universe, and everything!');
});

You can also use arrays to specify a list of acceptable values, and the Range object to specify a range of start and end values, with an optional step parameter. For instance, this will print a message on Thursday, Friday, Saturday, and Sunday at 5pm:

const rule = new schedule.RecurrenceRule();
rule.dayOfWeek = [0, new schedule.Range(4, 6)];
rule.hour = 17;
rule.minute = 0;

const job = schedule.scheduleJob(rule, function(){
  console.log('Today is recognized by Rebecca Black!');
});

Timezones are also supported. Here is an example of executing at the start of every day in the UTC timezone.

const rule = new schedule.RecurrenceRule();
rule.hour = 0;
rule.minute = 0;
rule.tz = 'Etc/UTC';

const job = schedule.scheduleJob(rule, function(){
  console.log('A new day has begun in the UTC timezone!');
});

A list of acceptable tz (timezone) values can be found at https://en.wikipedia.org/wiki/List_of_tz_database_time_zonesopen in new window

RecurrenceRule properties

second (0-59)
minute (0-59)
hour (0-23)
date (1-31)
month (0-11)
year
dayOfWeek (0-6) Starting with Sunday
tz

Note: It's worth noting that the default value of a component of a recurrence rule is null (except for second, which is 0 for familiarity with cron). If we did not explicitly set minute to 0 above, the message would have instead been logged at 5:00pm, 5:01pm, 5:02pm, ..., 5:59pm. Probably not what you want.

以下是示例代码,当然,它也是项目默认配置:

// external.js

module.exports = {
  refreshtime: (rule) => {
    //在这里修改内容
    rule.hour = 0;
    rule.minute = 0;
    rule.second = 0;
    rule.tz = 'Asia/Shanghai';
  }
}



 
 
 
 
 
 
 

上次编辑于:
你认为这篇文章怎么样?
  • 0
  • 0
  • 0
  • 0
  • 0
  • 0
评论
  • 按正序
  • 按倒序
  • 按热度
Powered by Waline v2.15.8