本文作者在綜合成本因素之下,決定用 JAVA 腳本來清理一下自己的 iCloud,結(jié)果卻有了一個(gè)意外發(fā)現(xiàn),即在 iCloud 中上傳同一個(gè)視頻和刪除此視頻之后,iCloud 的空間并不一致,這到底是什么造成的呢?
原文:https://andykong.org/blog/icloudconfusion
作者 | Andy Kong 翻譯 | 蘇宓
出品 | CSDN(ID:CSDNnews)
最近,我收到了一封來自 Apple 的電子郵件,通知我的 iCloud 存儲(chǔ)空間已滿。

在郵件中,蘋果給了我一個(gè)選項(xiàng),即付費(fèi)升級(jí)可以得到更大的 iCloud 空間。不過,我發(fā)現(xiàn) 1TB 和 200GB 的成本相差了三倍,有些太貴了,這也促使我開始去尋找替代方案。當(dāng)打開 iCloud 時(shí),我發(fā)現(xiàn)照片占據(jù)了大部分的存儲(chǔ)空間(~127GB),所以我想我可以進(jìn)入我的照片相冊(cè)并按文件大小排序,然后適當(dāng)刪除,騰出一定的空間。
遺憾的是,蘋果設(shè)備并不支持這一功能。不管是什么原因,我還是想按文件大小查看我的照片。市面上有幾款應(yīng)用程序可以查看照片并突出顯示重復(fù)的照片,或查看視頻并顯示文件大小。唯一的問題是,已經(jīng)上傳到 iCloud 的照片不會(huì)顯示在這些應(yīng)用程序中,因此它們實(shí)際上并沒有什么用處。另外,你真的希望隨機(jī)應(yīng)用掃描你所有的照片嗎?

用 Java 作為解決方案
于是,我訪問了 iCloud 網(wǎng)站并思考了有哪些可能性。我導(dǎo)航到“照片”->“媒體類型”->“視頻”菜單欄。

可以看到,每個(gè)視頻都有一個(gè)相應(yīng)的時(shí)長(zhǎng)框——只要它是 html 元素,我們就可以使用 JS 來搜索和篩選它們。我發(fā)現(xiàn)每個(gè)時(shí)長(zhǎng)框都有 video-text-badge 類。這樣,我們就可以在頁(yè)面中找到所有的視頻,按其持續(xù)時(shí)間排序,并高亮顯示超過某個(gè)閾值的視頻。下面是代碼:
// From the blog post andykong.org/blog/icloudconfusion/
functionboxTops{
HTMLCollection.prototype.toArray = function{ returnArray.from(this); }
// Select all the time badges and parse out their total runtime in seconds
a = document.getElementsByClassName('video-text-badge').toArray
b = a.map((x) =>x.innerText)
c = b.map((y) =>y.split(":").map((x) =>parseInt(x)))
d = c.map((x) =>x[0]*60+ x[1])
// Sort the badges HTML array and badges runtime together
indices = Array.from(a.keys)
indices.sort( (x,y) =>d[x] - d[y])
sortedA = indices.map(i=>a[i])
sortedD = indices.map(i=>d[i])
// Function that boxes an element
functiondrawBox(element) {
if(element instanceofHTMLElement) {
element.style.border = "2px solid red";
}
}
thresh = 30// Min seconds to highlight a video
for(leti = 0; i < sortedD.length; i++) {
if(sortedD[i] > thresh){
drawBox(sortedA[i])
}
}
}
// Continuously highlight big videos
setInterval(boxTops, 500)
因?yàn)?iCloud 僅加載頁(yè)面上的元素,所以我將其制作成一個(gè)在計(jì)時(shí)器上運(yùn)行的函數(shù),以便新元素在滾動(dòng)到其中時(shí)會(huì)突出顯示。它看起來是這樣的:

大于 20 秒的視頻會(huì)被紅框圈出來,更容易識(shí)別
要使用它,只需打開 Java 控制臺(tái)(右鍵單擊頁(yè)面 -> 檢查元素)并粘貼整個(gè)要點(diǎn)。現(xiàn)在,你可以輕松地從 iCloud 選擇多個(gè)大視頻并在刪除之前下載它們,將它們移動(dòng)到長(zhǎng)期存儲(chǔ)中:硬盤、其他云存儲(chǔ)等。
謎團(tuán)
我用這個(gè)腳本刪除了 iCloud 中所有超過 30 秒的視頻。有趣的是,在我刪除所有“大視頻”并下載它們后,盡管只下載了 7GB 的視頻,但它卻從我的 iCloud 中清除了 ~55GB 的內(nèi)容。謎底就在這里。

所有下載的視頻占用8GB磁盤空間
下載 7GB 視頻后,iCloud 存儲(chǔ)空間從 199GB 減少至 143GB
不知為什么,這 7GB 視頻在云端占用的空間遠(yuǎn)遠(yuǎn)超過了我硬盤上的空間。有趣的是...
實(shí)驗(yàn) 1
我想進(jìn)一步測(cè)試一下。首先,我上傳了一段 4K 視頻。它占用了 281 MB。上傳后,我的存儲(chǔ)空間看起來是這樣的:

上傳 4K 視頻,iCloud 顯示已使用 145.33 GB
然后我下載并刪除了它。文件仍然是 281 MB。這是之后的存儲(chǔ)情況:

4K 視頻被刪除,iCloud 稱已使用 145.6 GB
刪除 281MB 的視頻可騰出 ~270MB 的空間。這一點(diǎn)令人費(fèi)解。其他較舊的視頻呢?
實(shí)驗(yàn) 2
我想,也許較舊的視頻可能在 iCloud 中保存了多個(gè)副本,因此我搜索了我的視頻,看看能否找到一個(gè)占用大量存儲(chǔ)空間的較短視頻。我找到了一個(gè)有很多圖表的視頻,iCloud 說它占用了 128 MB。

較舊的大視頻,占用 128 MB
下載時(shí),文件只有 47 MB!
下載的視頻文件為 47 MB
這是我的 iCloud 存儲(chǔ)空間使用前后的對(duì)比:

刪除舊視頻之前的 iCloud 存儲(chǔ)空間,已使用 145.29 GB

刪除舊視頻后的 iCloud 存儲(chǔ)空間,已使用 145.12 GB,減少 170MB
因此,iCloud 顯示視頻為 128MB,我下載后發(fā)現(xiàn)視頻實(shí)際為 48MB,而刪除視頻后,我的可用存儲(chǔ)空間增加了約 170MB。真有意思!
結(jié)論
我的存儲(chǔ)空間釋放量是刪除文件大小的 7 倍多,這很奇怪。更奇怪的是,大容量的舊視頻在 iCloud 中的存儲(chǔ)空間占用似乎比現(xiàn)實(shí)生活中要大得多。
你知道為什么會(huì)出現(xiàn)這種情況嗎?






