2021年2月15日 星期一

不裝軟體直接下載臉書高畫質影片 Download Facebook video in FHD without other software

今日要在FB下載一個自家孩子的小影片,網路上查發現不是要用軟體,就是方法過時了不管用,於是自己嘗試了一下,最後順利不依靠軟體直接下載最高畫質。

現在很流行影像聲音分開放,從網頁原始碼看得出來FB是以MP4格式存audio、WEBM格式存video。


一、影片部分:

FB電腦版網頁開啟到要下載的影片貼文,按右鍵檢視原始碼;以「FBQualityClass」或「FBQualityLabel」這二個參數搜尋,應該不會很多個,選品質最高的複製一整段,以下1080p範例:

========以下目標原始碼斷行方便閱讀========
FBQualityClass=\"hd\" FBQualityLabel=\"1080p\">\u003CBaseURL>
https:\/\/video.**************************&oe=????????
\u003C\/BaseURL>
========以上目標原始碼斷行方便閱讀========

被「\u003CBaseURL>」和「\u003C\/BaseURL>」夾住的那段就是目標網址參數,還需要清理一下。移除(搜尋並取代為空值)網址中的「\」及「amp;」,結果就是我們要的網址了,以瀏覽器開啟後直接可以下載。


二、聲音部分:

以「"audio":[」搜尋,找到幾筆跟下面字串差不多的資料。

"audio":[{"url":"https:\/\/****省略許多字****&oe=????????",之後忽略

我們要的是"https:\~"這段被「"」夾住的網址參數,移除其中的「\」,就是我們要的網址了,以瀏覽器開啟後直接可以下載。


三、合併:
最後把影片與聲音合併,網路上有許多方便快速的開源軟體,在此先不贅述。
不知道FB什麼時候會改變網頁結構/寫法,所以上述擷取方法有效期限未知。

2021年2月2日 星期二

在 Windows 輕鬆用 NirCmd 批次修改檔案/資料夾建立時間、修改時間

幾年前做一鍵改解析度時,使用過 NirCmd 這個軟體,功能很多印象深刻。最近需要大量修改檔案時間,它也能夠輕鬆做到。

NirCmd 是一套免費的命令列指令集,提供許多控制 Windows 的參數,讓你執行命令列的方式,來執行一些重複性的動作,例如寫入、删除註冊表項、值,寫入 ini 檔案,撥號連接到你的網路帳戶以及 VPN 網路,重啟、關閉電腦,建立檔案快捷方式,改變檔案的建立 / 修改日期,改變顯示設置,關閉顯示器,彈出/關閉光碟,增加或減少電腦音量,以及更多更多。

x64版本的 NirCmd 執行檔是「nircmdc.exe」,需放在path路徑或安裝路徑(C:\Windows)下,以管理員身份執行。這邊簡述一下改檔案/資料夾建立及修改時間的指令:

改檔案日期時間:
nircmdc.exe setfiletime "檔案路徑" "dd-MM-yyyy hh:mm:ss" "dd-MM-yyyy hh:mm:ss"
改資料夾日期時間:
nircmdc.exe setfilefoldertime "資料夾路徑" "dd-MM-yyyy hh:mm:ss" "dd-MM-yyyy hh:mm:ss"

還有很多其他有趣/方便指令可以在官網找到說明。
NirCmd 官網:

[轉貼] windows用powershell修改文件/資料夾建立時間、修改時間

最近再次用到檔案時間大量修改,網路看到不同作法筆記一下

用win7自帶的powershell可以輕鬆修改文件/資料夾建立時間、修改時間。而且可以批量修改。

1. 步驟

新建一個bat檔案,在其中新增語句:

@ECHO OFF  powershell.exe -command "ls 'folder_path\*.dll' | foreach-object { $_.LastWriteTime = Get-Date; $_.CreationTime = Get-Date }"  PAUSE

2. 解釋

程式碼將folder_path路徑下的所有dll檔案的建立時間修改時間改成現在的時間。

  • -command: tells powershell to run the following command and return immediately

  • ls: list all matching files at the path specified

  • foreach-object: run the following block on each file that ls found

  • $_.LastWriteTime = Get-Date: for each file, set the LastWriteTime to the value returned by Get-Date (today's date and time)

  • $_.CreationTime = Get-Date: for each file, set the CreationTime to the value returned by Get-Date (today's date and time)

3. 修改至指定時間

$_.LastWriteTime = Get-Date:改為$_.LastWriteTime = '01/11/2004 22:13:36'

@ECHO OFF  powershell.exe -command "ls 'folder_path\*.*' | foreach-object { $_.LastWriteTime = '01/11/2004 22:13:36'; $_.CreationTime = '01/11/2004 22:13:36' }"  PAUSE

4. 遞迴資料夾中所有檔案

@ECHO OFF  powershell.exe -command "Get-Childitem -path 'E:\project_llj\install\test\' -Recurse | foreach-object { $_.LastWriteTime = Get-Date; $_.CreationTime = Get-Date }"   PAUSE
來源:itread01

2020年11月24日 星期二

夢中的話語

… Xxx 了就開始,xxx 了就結束,緣起、緣滅,一切只是遭遇。


Xxx 是… 一遇到?緣分到?時間到?還是別的什麼?

早上六點半,隆隆(颯颯?)作響中醒來,找不到聲音來源,記不清夢中話語。

2020年7月17日 星期五

以試算表(Excel)參照一個日期或年月份,計算該月份有幾個星期(禮拜)日、一、二、三、四、五或六

我的 Google Sheets (Drive) 線上記帳本,是以每個月為單位統計,有些固定每週的支出,想要預先填入作為預設金額,常常需要拿月曆比對察看要乘以幾很麻煩,用函式計算方便多了,來記錄一下。

參照一個日期計算該月份有幾個星期幾,這牽扯到幾個公式,一是計算該月最大日數也就是最後一天,一是加總日期範圍內的某個星期幾。以下範例分別是在B2有個參照日期,以及A2有個202007(yyyymm)的參照月份計算方式。


列出該日期星期幾:
日期參照 =choose(WEEKDAY(B2),"日","一","二","三","四","五","六")
weekday函式帶出的數值從週日開始為1,依次排到週六就是7。


計算當月最後一天:  
日期參照 =day(DATE(year(B2),month(B2)+1,0))  
月份參照 =day(DATE(left(A2,4),right(A2,2)+1,0))
其實就是找出下個月一號的前一天日期的日部分。


加總日期範圍內的星期幾:
日期參照統計該月週二數量 =SUMPRODUCT(--(MOD(ROW(INDIRECT(DATE(year(B2),month(B2),1)&":"&DATE(year(B2),month(B2),day(date(year(B2),month(B2)+1,0))))),7)=3))

月份參照統計週六數量 =SUMPRODUCT(--(MOD(ROW(INDIRECT(DATE(left(A2,4),right(A2,2),1)&":"&DATE(left(A2,4),right(A2,2),day(date(left(A2,4),right(A2,2)+1,0))))),7)=0)) 

公式主要加總所有除以七餘數等值的項目,Mod餘數等於0=週六(7所以整除)、1=週日、2=週一、3=週二、4=週三、5=週四、6=週五,修改前述公式倒數第三個字,即可改成需要計算的星期幾範圍。

2020年4月22日 星期三

在Windows 10中新增本機使用者帳戶

Windows 10 以來微軟官方大力推廣使用他們的微軟帳戶,但是在很多時候簡單的本機登入方式,比連線登入同步帳號更高效簡潔。

建立本機帳號的具體操作方式:

1. 按『WIN鍵+R鍵』→在「執行」視窗輸入「netplwiz」,按「確定」。

2. 點選「使用者帳戶視窗」中間的「新增」。
※ 請勿取消勾選「必須輸入使用者名稱和密碼,才能使用這台電腦」,否則會無法在此畫面進行「新增」動作。

3. 在「此使用者如何登入」的畫面下方,點選「不使用 Microsoft 帳戶來登入(不建議)」。

4. 點選下方「本機帳戶」進到下一頁。

5. 輸入需要的使用者名稱及密碼後,按「下一步」即完成本機帳戶新增。

這樣做法的好處,是避過近期增加的煩人三道安全提問。

2020年4月13日 星期一

電子書轉正體直排的經驗

閱讀電子書十幾年了,陸續也買過幾個電子紙閱讀器,目前主要是以Kindle為主。
中文內容除了周博士的好讀網站,其他不論付費與否,很多不是傳統(我偏愛)的正體直排。
以前懶惰貪方便,常常使用天火藏書線上轉檔,但是他除了會加宣告圖以外,大小限制跟章節遺失常令我困擾。

轉以工具軟體轉檔,經過一段時間的折騰與測試,我後來也使用主流的Calibre來管理及編輯,其實epub解壓縮後也是可以直接使用文字編輯器,不過Calibre另有些方便工具。有一段時間常用「Chinese Text Conversion」這個外掛,但有時結果也不盡人意。

想要理想效果最好的辦法,只能是自己動手修改確認,其實也不難,只是稍微瑣碎耗時。具體作法,在Calibre中書名上點右鍵進入編輯書本,又或自行以zip解壓epub檔用文字編輯器開啟,然後去修改電子書檔案。 

開啟主要的css檔(通常是內容最多的那個),確認有包含以下內容:
body {
-webkit-writing-mode: vertical-rl;
-epub-writing-mode: vertical-rl;
writing-mode: vertical-rl;
}
(在html/body/div段都有可能,放body段通常就可以,html段表示全部)

然後打開主要的OPF檔(通常是content.opf、metadata.opf或volume.opf),確認有以下內容:
語言設定中文:
<dc:language>zh-tw</dc:language> 或 <dc:language>zho</dc:language>
以及頁面方向右至左:
<spine ???? page-progression-direction="rtl">



今天遇到一個檔案,它的CSS是這樣寫的:

body.hrtl {
}
body.vrtl {
  -epub-writing-mode: vertical-rl;
  -webkit-writing-mode: vertical-rl;
  writing-mode: vertical-rl;
  -epub-text-orientation: vertical-right;
  -webkit-text-orientation: vertical-right;
  text-orientation: vertical-right;
}
div.hrtl {
}
div.vrtl {
  -epub-writing-mode: vertical-rl;
  -webkit-writing-mode: vertical-rl;
  writing-mode: vertical-rl;
  -epub-text-orientation: vertical-right;
  -webkit-text-orientation: vertical-right;
  text-orientation: vertical-right;
}

我認為vrtl和hrtl分別代表直式和橫式的右至左(結果只有直橫),它另外還分別設定了「直式橫式各自的」邊界大小跟其他細節,在各html內文頁只用了一行<div class="hrtl">。我自做聰明以vrtl取代內文頁所有hrtl,結果細部邊界設定不適用,每章都直達頁尾,只好改回使用本文最上面(無class)版本直接覆蓋。

最後傳到Kindle又發現字體都跑掉,仔細去看CSS發現「font-family:」後面都沒有設Kindle字體名稱,只好自己手動補上指定:
繁體的宋黑楷圓分別是:"STSongTC"、"STHeitiTC"、"STKaitiTC"、"STYuanTC"。
简体的宋黑楷圆分別是:"STSong"、"STHeiti"、"STKai"、"STYuan"。
日文字體,明朝 "TBMincho"、ゴシック "TBGothic"、筑紫明朝 "TsukushiMincho"。

有時間的話還是先開幾個內文頁,看看裡面有沒有什麼特別的標註方式,或需要注意修改的地方,才可以事半功倍。

為了避免傳到Kindle才知道亂掉,我跑去下載了Amazon自家出的Kindle Previewer,據說還可以轉檔避免被Calibre亂改東西,實際試了一下果然可以預覽,但是一直無法匯出成mobi檔,不知道為什麼。