上一篇我们部署了一个能够定时保存 Bing 每日壁纸到本地和腾讯云 COS 的项目，但这个项目目前只能提供随机调用图片的 API，并没有一个像样的前端（别催了别催了，这就去接着码代码…🙄）。 [post cid="1608" cover=""/] 经过我的一番苦苦寻找，终于发现了这个优秀却不火的宝藏项目：GitHub - jsososo/Bing: Bing Wallpaper 必应壁纸，让我们一起看看预览图吧！ Demo 依据这个项目，我已经搭建好了一个 Demo 站点，欢迎大家欣赏~ https://bing.angustar.com 部署 基于CentOS 8.4。 若之前未安装过 Node.js，需使用以下命令启用 Nodesource 存储库并安装 Node.js 软件包： curl --silent --location https://rpm.nodesource.com/setup_10.x | sudo bash - sudo yum install nodejs 之后启用 Yarn 存储库并导入存储库的 GPG 密钥： curl --silent --location https://dl.yarnpkg.com/rpm/yarn.repo | sudo tee /etc/yum.repos.d/yarn.repo sudo rpm --import https://dl.yarnpkg.com/rpm/pubkey.gpg 添加存储库后，通过运行以下命令来安装Yarn： sudo yum install yarn 安装完成后，可以通过打印 Yarn 的版本号来验证安装： yarn --version 撰写这篇文章时，Yarn 的最新版本为1.22.5。 在准备好 Yarn 环境后，我们就可以正式开始部署项目啦！ git clone https://github.com/jsososo/Bing.git cd Bing yarn 使用开发模式启动项目： yarn dev 在这一步完成后访问http://IP:3002就可以看到好看的 Bing 壁纸啦！ 之后按下Ctrl + C停止项目，执行以下命令部署并运行项目： yarn build yarn start [scode type="green"] 若服务器已经安装宝塔面板，那么直接在宝塔面板的软件商店->PM2管理器->模块管理中安装yarn模块即可，无需使用以上繁琐的方法进行安装。 [/scode] 但这样的话在我们关闭终端后，项目也会停止运行，我们可以使用screen命令使项目保持后台运行： yum install screen screen -S Bing yarn start 之后按下Ctrl + A + D键，将会话切换到后台运行，这样的话就彻底完工啦！根据实际情况，我们还可以对http://IP:3002进行反向代理，达到使用域名访问的目的，就像 Demo 一样~ 这里列一下screen的常用命令吧： # 创建名称为 xxx 的会话 screen -S xxx # 列出当前所有的会话 screen -ls # 切换到指定的会话 screen -r xxx # screen 会话中：按下 Ctrl + A + D 键可以将会话切换到后台运行 # screen 会话中：输入 exit，可以结束此会话 其它优秀的项目 事实上，我之前还发现了一个更热门的项目：GitHub - xCss/bing: Bing 壁纸 API，但那个项目部署起来还是有一定的难度的（而且也不如这个项目好看…没错我是颜值党🥰哈哈哈哈！），遂放弃… 那么总结一下其它优秀的 Bing 每日壁纸前端项目 & 网站吧，大家可以按需选择噢~ [scode type="green"] GitHub - xCss/bing: Bing 壁纸 API GitHub - angustar/Bing-upyun: 轻量必应每日一图API，支持上传至又拍云调用，支持图片处理（高斯模糊、灰阶），支持回溯。 GitHub - niumoo/bing-wallpaper: 必应每日超清壁纸（4K） Bing Wallpaper Gallery (gifposter.com) Windows Themes & Bing Wallpapers | Peapix [/scode]
定时保存 Bing 每日壁纸到本地和腾讯云 COS
[scode type="green"] BingWallpaper2COS：定时保存 Bing 每日壁纸（国内版+国际版）到本地，并上传到腾讯云 COS 中以便后续调用。 项目地址：[button color="success" icon="github" url="https:\/\/github.com\/angustar/BingWallpaper2COS" type=""]GitHub[/button] [button color="success" icon="code" url="https:\/\/gitee.com\/angustar/BingWallpaper2COS" type=""]Gitee[/button] [/scode] 本项目基于 Python + PHP，旨在帮助用户自动、高效地在本地和腾讯云 COS 中储存 Bing 每日壁纸，并提供用于随机调用图片的 API 。 由于 Bing 国内版和国际版的壁纸不尽相同，项目对此作出区分，将 Bing 国内版和国际版的每日壁纸存储在不同的文件夹，同时，为了保证日期的完整性，项目不对壁纸做去重处理。国内版和国际版均保留分辨率为1920x1080的版本和 UHD 版本，其中，UHD 版本分辨率不定，但要高于1920x1080。 项目主要可以实现以下功能： 保存当日的 Bing 壁纸至本地，包括分辨率为1920x1080的版本和 UHD 版本； 将分辨率为1920x1080的版本上传至腾讯云 COS，并获得图片的访问地址，可用于网站背景图等； 将相关信息写入数据库，以便后续读取； 访问myexample.com/BingWallpaper2COS时可以随机返回一张分辨率为1920x1080的图片。 部署 下载项目并进入项目文件夹： cd /www/wwwroot/myexample.com # 根据实际情况修改路径 git clone https://github.com/angustar/BingWallpaper2COS.git cd BingWallpaper2COS 安装 Python 相关依赖： pip3 install -r requirements.txt 根据configs-sample.py生成configs.py，并依据实际情况修改configs.py的相关配置： cp configs-sample.py configs.py configs.py示例如下： # -*- coding: UTF-8 -*- from qcloud_cos import CosConfig from qcloud_cos import CosS3Client from qcloud_cos import CosServiceError from qcloud_cos import CosClientError import sys import logging # 腾讯云COS配置信息 secret_id = '************************************' # 替换为用户的secret_id secret_key = '********************************' # 替换为用户的secret_key region = 'ap-shanghai' # 替换为用户的region，例如：ap-shanghai token = None # 使用临时密钥需要传入Token，默认为空,可不填 domain = None # COS的自定义源站域名或自定义CDN加速域名,结尾不要加"/", 如果使用全球加速域名, 则设置成对应的域名 Bucket = 'BucketName-APPID' # Bucket 由 BucketName-APPID 组成 # Server酱·Turbo版配置信息，用于程序执行错误时向用户发送通知 SendKey = '*********************************' 设置定时执行main.py，可以在宝塔面板的计划任务中添加一个定时任务，任务类型设定为Shell脚本，执行周期自定，每日定时执行一次即可，脚本内容如下： # 根据实际情况修改路径 cd /www/wwwroot/myexample.com/BingWallpaper2COS python3 /www/wwwroot/myexample.com/BingWallpaper2COS/main.py 项目在首次运行成功后会自动生成Bing.db数据库文件以及BingWallpaper文件夹 ，此时本地项目的目录结构应如下所示： │ Bing.db │ configs.py │ index.php │ main.py │ requirements.txt │ ├─BingWallpaper │ ├─domestic │ │ └─2021 │ │ └─08 │ │ 20210801_domestic@1920x1080.jpg │ │ 20210801_domestic@UHD.jpg │ │ │ └─international │ └─2021 │ └─08 │ 20210801_international@1920x1080.jpg │ 20210801_international@UHD.jpg │ └─__pycache__ configs.cpython-37.pyc 腾讯云 COS 的目录结构应如下所示： ├─domestic │ └─2021 │ └─08 │ 20210801_domestic@1920x1080.jpg │ └─international └─2021 └─08 20210801_international@1920x1080.jpg 调用 API 访问myexample.com/BingWallpaper2COS，可以随机返回一张图片，其分辨率为1920x1080。 出于存储空间费用和外网下行流量费用的考虑，本项目并未将 UHD 版本的图片上传至腾讯云 COS、图片的访问地址写入数据库 ，仅本地保留图片文件，若需要上传，请自行修改main.py，如需通过 API 调用，请同时修改index.php。 To Do List 为 API 添加调用参数，使其支持调用指定日期或指定版本（国内版/国际版）的图片
将以下代码保存为.ps1后缀的文件，或点击此处下载Save-Spotlight.zip并解压。 add-type -AssemblyName System.Drawing New-Item "$($env:USERPROFILE)\Pictures\Spotlight" -ItemType directory -Force; New-Item "$($env:USERPROFILE)\Pictures\Spotlight\CopyAssets" -ItemType directory -Force; New-Item "$($env:USERPROFILE)\Pictures\Spotlight\Horizontal" -ItemType directory -Force; New-Item "$($env:USERPROFILE)\Pictures\Spotlight\Vertical" -ItemType directory -Force; foreach($file in (Get-Item "$($env:LOCALAPPDATA)\Packages\Microsoft.Windows.ContentDeliveryManager_cw5n1h2txyewy\LocalState\Assets\*")) { if ((Get-Item $file).length -lt 100kb) { continue } Copy-Item $file.FullName "$($env:USERPROFILE)\Pictures\Spotlight\CopyAssets\$($file.Name).jpg"; } foreach($newfile in (Get-Item "$($env:USERPROFILE)\Pictures\Spotlight\CopyAssets\*")) { $image = New-Object -comObject WIA.ImageFile; $image.LoadFile($newfile.FullName); if($image.Width.ToString() -eq "1920"){ Move-Item $newfile.FullName "$($env:USERPROFILE)\Pictures\Spotlight\Horizontal" -Force; } elseif($image.Width.ToString() -eq "1080"){ Move-Item $newfile.FullName "$($env:USERPROFILE)\Pictures\Spotlight\Vertical" -Force; } } Remove-Item "$($env:USERPROFILE)\Pictures\Spotlight\CopyAssets\*"; 运行后脚本会自动将图片保存至「此电脑 > 图片 > Spotlight」内，如图所示，非常方便~