zoukankan      html  css  js  c++  java
  • python学习笔记 | macOS Big Sur动态壁纸食用指南

    目录

     

    前言

    北京时间23日凌晨1点,苹果WWDC2020大会开幕。在发布会上,苹果正式发布了新版macOS,并将其命名为“Big Sur”。

    相比于外界争议最大的UI界面,令我更为关注的是这次的系统动态壁纸,跟过去几年的版本更新一样,这次的macOS系统版本命名也取自自然景点的名字,即“Big Sur”,好像是在加州西海岸的一个景点,而且这一版动态壁纸依然支持根据时间变化进行明暗的切换,总之很好看就对了,超想要的!于是我开始在网上寻找最新的这一版本动态壁纸,幸运地,最后让我找到了这个神奇的网站:

    https://dynamicwallpaper.club

    需要注意的是,这个网站需要科*上网才能打开,并且需要登录才能查看网页包含的动态壁纸

    登录进去之后,在首页Gallery选项的位置,可以看到不仅有最新的Big Sur壁纸,还有许多macOS支持的动态壁纸,有很多还是5k级别的质量,点进去之后就可以找到下载壁纸的按钮

    下载流程很简单,基本下载到本地就可以为我们所用了

    除了最新的这款壁纸,网站里很多精美的壁纸也很值得一试

    这个时候我又想,这么多壁纸要是一个个下载得多麻烦,要是有什么方法能够一下子把所有的壁纸下载下来就舒服了!

    爬虫篇

    好久没有写爬虫程序了,练练手

    (这里比较长,可以直接跳到这里获得壁纸资源:壁纸使用篇

    首先还是上一张图的位置,在点击下载按钮的同时,我通过浏览器的开发者工具捕获到这些请求:

    点开下面这一条请求,发现它是这样的

    接着复制这条请求的url,粘贴到浏览器地址栏,这个时候壁纸马上进行了下载,于是现在我们可以确定:

    这条请求就是这张big sur壁纸的真实下载链接!

    https://firebasestorage.googleapis.com/v0/b/dynamic-wallpapers-6a7ab.appspot.com/o/wallpapers%2Fdgvrihxpu2h%2FBig%20Sur.heic?alt=media&token=38f034ba-5ebb-4891-b483-35f0a82476cd

    按照以往的经验,一般同一网站下的同一格式的资源,其链接都会遵循同一规则或方法来进行命名

    也就是说

    我们可以通过这条链接,找到跟其他壁纸链接同样的命名规律,进而得到其他所有壁纸的真实下载链接

    说干就干

    现在让我们来分析一下这条请求

    首先从前到后,一直到wallpapers这里,都没有出现一些特殊的符号或字段,预估这些应该都是需要加上的字段,并且不是唯一的

    经过反复的测试,我发现包括其他的壁纸在内,其实所有的下载链接不同点就在于这三个地方:

    https://firebasestorage.googleapis.com/v0/b/dynamic-wallpapers-6a7ab.appspot.com/o/wallpapers%2Fdgvrihxpu2h%2FBig%20Sur.heic?alt=media&token=38f034ba-5ebb-4891-b483-35f0a82476cd
    • token

    最先发现的是最后一个字段,由于“token”这个字眼真的太明显了,按照经验基本可以确定这是一个唯一参数

    • name

    再往前看,到“Big%20Sur”这里,很容易地发现这是壁纸的名字(其实我观察了很久才发现

    比较特别,有个“%20”,原因是名字中间的空格被“%20”这个字符串替代了

    • id

    最后一个参数也是最难发现的,最后通过比对首页壁纸列表的网页源代码,我发现这个字段是存在在每个壁纸的跳转链接中的

    在此暂时称这个参数为壁纸的id

     

    ok,前两个参数(id,name)我们已经了解了来龙去脉,比较容易获取,最后比较麻烦的是这个token

    同样是在一开始big sur壁纸详情页面,复制真实链接中token的值,粘贴到开发者工具的搜索框,这个时候我发现可以匹配到几条包含token值的请求

    点进去第一个,在右侧的请求返回信息窗口,最后一行可以找到token值“38f034ba-5ebb-4891-b483-35f0a82476cd”

    好家伙,原来藏在这!

    现在我们可以得知,token值其实是通过访问这条请求,在返回的信息中获取到的,而且是“downloadTokens”键的值

    这样一来就简单多了,我们只需要通过访问这条请求就可以拿到token值!

    点开上面这条请求的headers选项,可以发现它的请求链接是这样的:

    emmmm,是不是有点眼熟? 没错,里面包含的两个特殊字段都是我们之前见过的,一个是壁纸的id,一个是壁纸的名字name

    获取三个参数(id,name,token)的相关代码:

    到这里难点都基本解决了,后面就从首页的壁纸列表逐页爬取即可

    网络请求用的是requests模块,文本解析用的是etree和正则表达式re,都是python源码自带的

    开始爬取...

    牛逼,全部爬下来了!

    壁纸使用篇

    现在已经获取到了动态壁纸,即macOS支持的文件heic动态壁纸文件

    所有的壁纸下载链接放到这里了:http://billie52707.cn/true_heic_urls.html(同样需要科*上网才能下载(手动doge

    设置壁纸的方法如下:

    • 打开终端,输入「open /Library」,进入放置壁纸的文件夹:/Desktop Pictures

    • 将heic壁纸文件拖动到/Desktop Pictures文件夹下
    • 桌面右键,设置桌面背景,即可设置下载的壁纸,效果如下:

     awesome!

    后记

    某hub地址在这:https://github.com/chenxuefan/Dynamicwallpaper

    后面可以加个按照壁纸分类来下载的功能,还有图形界面

    不说了,做作业去了

  • 相关阅读:
    面试官问我:记录存在就更新,不存在就插入有啥思路怎么办?愣着干嘛?进来白嫖啊! (上)
    面试官问我:char和varchar的区别 怎么办?愣着干嘛?进来白嫖啊!
    面试官竟然疯狂问我数据库的组提交?怎么办?愣着干嘛?进来白嫖呀!
    面试官疯狂问我联表查询怎么办? 愣着干嘛?进来白嫖啊!
    面试官狂问我各种锁怎么办?愣着干嘛?进来白嫖啊!
    面试被问:如何排查慢查询(执行计划)怎么办?愣着干嘛?进来白嫖呀!
    B站挂了之后出现的tengine是个啥?
    Python
    Python
    Python
  • 原文地址:https://www.cnblogs.com/billie52707/p/13200151.html
Copyright © 2011-2022 走看看