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

后面可以加個按照壁紙分類來下載的功能,還有圖形界面

 

不說了,做作業去了


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM