每日自动更新 bing 壁纸

本贴最后更新于 2141 天前,其中的信息可能已经时移世异

该脚本仅在 win10 下测试通过

<# .Synopsis 自动设置bing图片为桌面壁纸 .DESCRIPTION 添加计划任务,可每日自动更新并设置bing图片为壁纸,并且在图片下添加图片标题及版权文字 .EXAMPLE 必应每日壁纸.ps1 必应每日壁纸.ps1 [-Task] .INPUTS 到此 cmdlet 的输入(如果有) .OUTPUTS 来自此 cmdlet 的输出(如果有) .NOTES 一般注释 .COMPONENT 此 cmdlet 所属的组件 .ROLE 此 cmdlet 所属的角色 .FUNCTIONALITY 最准确描述此 cmdlet 的功能 #> [CmdletBinding(DefaultParameterSetName)] # 设置默认参数组为空 Param( [Parameter(ParameterSetName="Task")] [switch]$Task, [Parameter(DontShow,ParameterSetName="None")] [switch]$None ) if ($task) { $tem=Get-ScheduledTaskInfo -TaskName "每日自动更换bing壁纸" -ErrorAction SilentlyContinue -WarningAction SilentlyContinue if ($tem) { Write-Error -Message "该计划任务已经存在" } else { # 任务操作 程序 ,工作目录,参数 $A = New-ScheduledTaskAction -Execute "PowerShell" -WorkingDirectory "$($PSScriptRoot)" -Argument "$($Script:MyInvocation.InvocationName)" # 触发器 每天零点一秒 在六小时内随机 $T = New-ScheduledTaskTrigger -Daily -At 0:0:1 -RandomDelay 6:0:0 # 创建者 当前用户名 $P = New-ScheduledTaskPrincipal "$env:userdomain\$env:username" # 设置集 各种相关设置 $S = New-ScheduledTaskSettingsSet -AllowStartIfOnBatteries -WakeToRun -Priority 4 -DontStopIfGoingOnBatteries -DontStopOnIdleEnd -RunOnlyIfNetworkAvailable -MultipleInstances IgnoreNew -StartWhenAvailable -Compatibility win8 -ExecutionTimeLimit 0 -DisallowHardTerminate # 新任务 最后是任务描述 $D = New-ScheduledTask -Action $A -Principal $P -Trigger $T -Settings $S -Description "每日自动更新必应桌面壁纸" # 注册任务 Register-ScheduledTask -TaskName "每日自动更换bing壁纸" -InputObject $D } return } [uri]$binguri="https://cn.bing.com/HPImageArchive.aspx?format=js&n=1&pid=hp" $T="{0:yyyy.MM.dd`tHH:mm′ss″}" -f (Get-Date) function out ([string]$p) { Out-File -FilePath $PSScriptRoot\BingWallpaper.log -InputObject "$T`t$p" -Append } class bing:Hashtable{ [uri]$Uri hidden[uri]$DownUri [string]$Copyright hidden[string]$DownFile bing ([string]$uri){ [uri]$this.uri=$uri } bingImDo (){ $d=try{ Invoke-RestMethod @this }catch{ $_.Exception.Response } if ($d.images) { $this.DownUri="https://cn.bing.com"+$d.images.url $this.Copyright=$d.images.copyright.Replace(" (","`n(") $this.DownFile=$PSScriptRoot+"/"+$d.images.enddate+".jpg" $client = new-object System.Net.WebClient $client.DownloadFile( $this.DownUri ,$this.DownFile) }else{ out "错误码: $($d.StatusCode)($($d.StatusCode.value__))" } } } Add-Type -AssemblyName System.Drawing function Draw-WatemarkString() { param( [Parameter(Mandatory=$true)] [ValidateNotNullOrEmpty()] [ValidatePattern("(.jpg)|(.png)|(.gif)$")] [io.fileinfo]$ImageFile, [Parameter(Mandatory=$true)] [ValidateNotNullOrEmpty()] [string]$Text, [ValidateSet("NorthWest", "NorthEast", "SouthWest","SouthEast")] [string]$Location='SouthEast', [System.Drawing.Color]$Color= [System.Drawing.Color]::AntiqueWhite, [ValidateRange(1,[system.single]::MaxValue)] [float]$FontSize = 15, [string]$FontFamily='Microsoft YaHei', [ValidateRange(0,[system.single]::MaxValue)] [int]$margin = 45, [switch]$Bold, [Switch]$Italic, [switch]$Underline, [switch]$Strikeout ) # test image file exists if( -not (Test-Path $ImageFile) ) { throw "图片文件${ImageFile}不存在. " } # font style [drawing.fontstyle]$fontStyle= [drawing.fontstyle]::Regular ( ($Bold,[drawing.fontstyle]::Bold), ($Italic,[drawing.fontstyle]::Italic), ($Underline,[drawing.fontstyle]::Underline), ($Strikeout,[drawing.fontstyle]::Strikeout) ) | foreach { if($_[0]) { $fontStyle = $fontStyle -bxor $_[1] } } # graphics and brush $font = New-Object System.Drawing.Font($FontFamily, $FontSize,$fontStyle) $img = [drawing.image]::FromFile($ImageFile) $drawBrush = [drawing.solidbrush]$Color $g = [drawing.graphics]::FromImage($img) $textSize = $g.MeasureString($Text,$font).ToPointF() $pointF = New-Object System.Drawing.PointF <# # location switch ($Location) { 'NorthWest' { $pointF.X = $margin $pointF.Y = $margin } 'NorthEast' { $pointF.X = $img.Width - $margin - $textSize.X $pointF.Y = $margin } 'SouthWest' { $pointF.X = $margin $pointF.Y = $img.Height - $margin - $textSize.Y } 'SouthEast' {#> $pointF.X = $img.Width - $margin - $textSize.X $pointF.Y = $img.Height - $margin - $textSize.Y <# } }#> # draw string and save image to temporary file $g.DrawString($Text,$font,$drawBrush,$pointF) $tempImage = '{0}.jpg' -f $ImageFile $img.Save($tempImage) # dispose graphics, brush, image $g.Dispose() $drawBrush.Dispose() $img.Dispose() # copy temporary file to original source Copy-Item $tempImage $ImageFile -Force Remove-Item $tempImage } #完全看不懂,天书 # 注册定义的类 Add-Type @" using System; using System.Runtime.InteropServices; using Microsoft.Win32; namespace Wallpaper { public enum Style : int { Center, Stretch } public class Setter { public const int SetDesktopWallpaper = 20; public const int UpdateIniFile = 0x01; public const int SendWinIniChange = 0x02; [DllImport("user32.dll", SetLastError = true, CharSet = CharSet.Auto)] private static extern int SystemParametersInfo (int uAction, int uParam, string lpvParam, int fuWinIni); public static void SetWallpaper ( string path) { SystemParametersInfo( SetDesktopWallpaper, 0, path, UpdateIniFile | SendWinIniChange ); RegistryKey key = Registry.CurrentUser.OpenSubKey("Control Panel\\Desktop", true); key.SetValue(@"WallpaperStyle", "10") ; key.SetValue(@"TileWallpaper", "0") ; key.Close(); } } } "@ $bin=[bing]::new($binguri) echo 获取图片 $bin.bingImDo() if ($bin.Count -lt 4) { Write-Warning "获取失败" return } $g=$T,$bin.Copyright -join "`n" Draw-WatemarkString -ImageFile $bin.DownFile -Text $g echo 应用新壁纸 [Wallpaper.Setter]::SetWallpaper( $bin.DownFile ) Remove-Item $bin.DownFile #删除壁纸文件 echo 完成! Start-Sleep -Seconds 3 #exit
  • 必应
    5 引用 • 19 回帖
  • 壁纸
    14 引用 • 79 回帖
  • 工具

    子曰:“工欲善其事,必先利其器。”

    297 引用 • 755 回帖

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...

推荐标签 标签

  • 大疆创新

    深圳市大疆创新科技有限公司(DJI-Innovations,简称 DJI),成立于 2006 年,是全球领先的无人飞行器控制系统及无人机解决方案的研发和生产商,客户遍布全球 100 多个国家。通过持续的创新,大疆致力于为无人机工业、行业用户以及专业航拍应用提供性能最强、体验最佳的革命性智能飞控产品和解决方案。

    2 引用 • 14 回帖
  • WebSocket

    WebSocket 是 HTML5 中定义的一种新协议,它实现了浏览器与服务器之间的全双工通信(full-duplex)。

    48 引用 • 206 回帖 • 298 关注
  • RabbitMQ

    RabbitMQ 是一个开源的 AMQP 实现,服务器端用 Erlang 语言编写,支持多种语言客户端,如:Python、Ruby、.NET、Java、C、PHP、ActionScript 等。用于在分布式系统中存储转发消息,在易用性、扩展性、高可用性等方面表现不俗。

    49 引用 • 60 回帖 • 346 关注
  • 爬虫

    网络爬虫(Spider、Crawler),是一种按照一定的规则,自动地抓取万维网信息的程序。

    106 引用 • 275 回帖
  • ZooKeeper

    ZooKeeper 是一个分布式的,开放源码的分布式应用程序协调服务,是 Google 的 Chubby 一个开源的实现,是 Hadoop 和 HBase 的重要组件。它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、域名服务、分布式同步、组服务等。

    59 引用 • 29 回帖 • 5 关注
  • SQLServer

    SQL Server 是由 [微软] 开发和推广的关系数据库管理系统(DBMS),它最初是由 微软、Sybase 和 Ashton-Tate 三家公司共同开发的,并于 1988 年推出了第一个 OS/2 版本。

    21 引用 • 31 回帖
  • VirtualBox

    VirtualBox 是一款开源虚拟机软件,最早由德国 Innotek 公司开发,由 Sun Microsystems 公司出品的软件,使用 Qt 编写,在 Sun 被 Oracle 收购后正式更名成 Oracle VM VirtualBox。

    10 引用 • 2 回帖 • 16 关注
  • JavaScript

    JavaScript 一种动态类型、弱类型、基于原型的直译式脚本语言,内置支持类型。它的解释器被称为 JavaScript 引擎,为浏览器的一部分,广泛用于客户端的脚本语言,最早是在 HTML 网页上使用,用来给 HTML 网页增加动态功能。

    729 引用 • 1278 回帖
  • Rust

    Rust 是一门赋予每个人构建可靠且高效软件能力的语言。Rust 由 Mozilla 开发,最早发布于 2014 年 9 月。

    58 引用 • 22 回帖 • 4 关注
  • Android

    Android 是一种以 Linux 为基础的开放源码操作系统,主要使用于便携设备。2005 年由 Google 收购注资,并拉拢多家制造商组成开放手机联盟开发改良,逐渐扩展到到平板电脑及其他领域上。

    335 引用 • 324 回帖 • 1 关注
  • BND

    BND(Baidu Netdisk Downloader)是一款图形界面的百度网盘不限速下载器,支持 Windows、Linux 和 Mac,详细介绍请看这里

    107 引用 • 1281 回帖 • 34 关注
  • AWS
    11 引用 • 28 回帖 • 11 关注
  • Gzip

    gzip (GNU zip)是 GNU 自由软件的文件压缩程序。我们在 Linux 中经常会用到后缀为 .gz 的文件,它们就是 Gzip 格式的。现今已经成为互联网上使用非常普遍的一种数据压缩格式,或者说一种文件格式。

    9 引用 • 12 回帖 • 167 关注
  • Facebook

    Facebook 是一个联系朋友的社交工具。大家可以通过它和朋友、同事、同学以及周围的人保持互动交流,分享无限上传的图片,发布链接和视频,更可以增进对朋友的了解。

    4 引用 • 15 回帖 • 445 关注
  • IDEA

    IDEA 全称 IntelliJ IDEA,是一款 Java 语言开发的集成环境,在业界被公认为最好的 Java 开发工具之一。IDEA 是 JetBrains 公司的产品,这家公司总部位于捷克共和国的首都布拉格,开发人员以严谨著称的东欧程序员为主。

    181 引用 • 400 回帖 • 2 关注
  • HHKB

    HHKB 是富士通的 Happy Hacking 系列电容键盘。电容键盘即无接点静电电容式键盘(Capacitive Keyboard)。

    5 引用 • 74 回帖 • 495 关注
  • 一些有用的避坑指南。

    69 引用 • 93 回帖
  • 工具

    子曰:“工欲善其事,必先利其器。”

    297 引用 • 755 回帖
  • Eclipse

    Eclipse 是一个开放源代码的、基于 Java 的可扩展开发平台。就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。

    76 引用 • 258 回帖 • 630 关注
  • Tomcat

    Tomcat 最早是由 Sun Microsystems 开发的一个 Servlet 容器,在 1999 年被捐献给 ASF(Apache Software Foundation),隶属于 Jakarta 项目,现在已经独立为一个顶级项目。Tomcat 主要实现了 JavaEE 中的 Servlet、JSP 规范,同时也提供 HTTP 服务,是市场上非常流行的 Java Web 容器。

    162 引用 • 529 回帖 • 4 关注
  • Firefox

    Mozilla Firefox 中文俗称“火狐”(正式缩写为 Fx 或 fx,非正式缩写为 FF),是一个开源的网页浏览器,使用 Gecko 排版引擎,支持多种操作系统,如 Windows、OSX 及 Linux 等。

    7 引用 • 30 回帖 • 390 关注
  • Anytype
    3 引用 • 31 回帖 • 15 关注
  • WiFiDog

    WiFiDog 是一套开源的无线热点认证管理工具,主要功能包括:位置相关的内容递送;用户认证和授权;集中式网络监控。

    1 引用 • 7 回帖 • 612 关注
  • 生活

    生活是指人类生存过程中的各项活动的总和,范畴较广,一般指为幸福的意义而存在。生活实际上是对人生的一种诠释。生活包括人类在社会中与自己息息相关的日常活动和心理影射。

    230 引用 • 1454 回帖
  • sts
    2 引用 • 2 回帖 • 223 关注
  • 强迫症

    强迫症(OCD)属于焦虑障碍的一种类型,是一组以强迫思维和强迫行为为主要临床表现的神经精神疾病,其特点为有意识的强迫和反强迫并存,一些毫无意义、甚至违背自己意愿的想法或冲动反反复复侵入患者的日常生活。

    15 引用 • 161 回帖
  • 知乎

    知乎是网络问答社区,连接各行各业的用户。用户分享着彼此的知识、经验和见解,为中文互联网源源不断地提供多种多样的信息。

    10 引用 • 66 回帖