從 PTS 下載 HTML 和 PDF 版本的福特服務手冊。
購買了福特服務手冊的 72 小時訂閱並想要永久保存?這是給您的儲存庫。
這些手冊的版權歸福特所有,因此請勿共享!
目前要使其工作需要一些瀏覽器 DevTools 的知識。如果您不確定如何使用它們,請詢問會使用它們的朋友。
該腳本使用playwright
(一個無頭瀏覽器互通庫)將文件保存為 PDF 文件而不是原始 HTML(這樣文件包含圖像)。
雖然此腳本已被驗證可以在 Windows 上本機執行(請參閱問題 #6),但建議在 WSL 中執行它。在 WSL 中運行使得安裝 Git 和 Node 之類的東西變得更加容易。
WSL 是一種與 Windows 一起運行 Linux(本專案建議使用 Ubuntu)的方法。它比虛擬機器快得多,但仍然使用真正的 Linux 核心。了解更多並在此處查看安裝說明。
corepack
)corepack enable
git clone https://github.com/iamtheyammer/fetch-ford-service-manuals.git
複製此儲存庫,然後輸入儲存庫的目錄(可能使用cd fetch-ford-service-manuals
)git pull
以獲取最新資訊!git pull
沒有說Already up to date.
,執行接下來的 2 個步驟以確保您的依賴項是最新的。git stash
、 git pull
,然後執行git stash apply
來取消儲存檔案。yarn
來下載依賴項yarn playwright-setup
來下載並設定Playwright這些說明適用於 Chrome 或基於 Chrome 的瀏覽器。
templates/
中,複製cookieString.txt.template
,並將其命名為cookieString.txt
cookieString.txt
的內容templates/
中,複製params.json.template
,並將其命名為params.json
。如果您的車輛是在 2003 年之前製造的,請使用這些說明。
此腳本需要一些關於您的汽車的數據,這些數據在 PTS GUI 中不可用,以便獲得正確的手冊。
https://www.fordservicecontent.com/Ford_Content/PublicationRuntimeRefreshPTS//publication/prod_1_3_372022/TreeAndCover/workshop/32/~WSLL/{some numbers here}
的一個 POST。它應該類似於這張照片中的請求。templates/params.json
,並將該請求中的資訊複製/貼上到 JSON .workshop
欄位的值中。如果您的車輛是 2003 年或之後製造的,請使用這些說明。
templates/params.json
,僅更改:workshop.modelYear
改為您愛車的年份pre_2003.alphabeticalIndexURL
為您在步驟 2 中複製的 URLhttps://www.fordservicecontent.com/Ford_Content/PublicationRuntimeRefreshPTS//wiring/TableofContent
(末尾有查詢參數,沒關係)。它應該類似於這張照片中的請求。TableOfContent
,而不是TableOfContent
s
environment
、 bookType
和languageCode
查詢參數複製到params.json
中的.wiring
。WiringBookTitle
或WiringBookCode
仍然遺失,您可能需要選擇您可能需要選擇接線手冊。選擇手冊後,您將在https://www.fordtechservice.dealerconnection.com/wiring/TableOfContents
的另一個要求中找到這些內容(最後有一些查詢參數):booktitle
→ WiringBookTitle
book
→ WiringBookCode
params.json
。params.json
。cookieString.txt.template
的副本(稱為cookieString.txt
。https://www.fordtechservice.dealerconnection.com/wiring/TableOfContents
(末尾有查詢參數,沒關係)。TableOfContent
s
,而不是TableOfContent
cookieString.txt
檔案中。cookieString.txt
不應包含Cookie:
。)cookieString.txt
。若要將手冊下載為 PDF,請執行yarn start -c templates/params.json -s templates/cookieString.txt -o /directory/where/you/want/the/downloaded/manual/
。您應該會看到如下所示的輸出。
在開始下載手冊之前,機器人將透過嘗試在背景開啟 PTS 網站來驗證您的 cookie 是否設定正確。雖然您可以跳過此檢查,但跳過它(使用--noCookieTest
)很可能會導致稍後出現錯誤。
確保下載的手冊的目錄是空的——它將有很多子資料夾。
您可以透過執行yarn start --help
來取得更多參數資訊。值得注意的是, --saveHTML
將保存.html
檔案以及預設下載的.pdf
文件,而--ignoreSaveErrors
將在遇到錯誤時繼續下載手冊,跳過有錯誤的檔案。
可能需要一點時間!在具有快速互聯網連接(更重要的是具有快速磁碟機)的快速電腦上,下載 2005 Taurus 的手冊需要超過 15 分鐘。要有耐心!
此外,產生的資料夾相當大。 2005 Taurus 的資料夾大約有 300mb,F150 的資料夾有幾 GB。
有問題嗎?請參閱常見問題或常見問題。
機器人會下載您設定的車輛的整個車間手冊和所有接線圖。
接線圖將位於outputpath/Wiring
中。還有一個toc.json
文件,其中包含接線圖的目錄。
如果您有Wiring/Connector Views
資料夾,則其中有一個特殊檔案: Connectors.csv
。它告訴您在哪裡可以找到汽車中的每個連接器,以及它們在組件位置圖表中的位置。在 Excel 或 Google Sheets 中開啟它以查看資料。這是一個簡單的例子:
連接器 ID | 連接器 | 連接器位置 視圖 頁碼 | 網格參考 | 車內位置 |
---|---|---|---|---|
C168A | 10R80變速箱(2.7L) | 29 | F5 | 傳染 |
C1840 | 管路壓力控制 (LPC) 電磁閥 | 34 | E8 | 內傳動 |
Wiring/Connector Location Views
)輸出目錄中的資料夾結構將模仿 PTS 上的結構,因此如果檔案的路徑類似於1: General Information -> 00: Service Information -> 100-00 General Information -> About this Manual
,它將位於資料夾outputpath/1: General Information/00: Service Information/100-00 General Information/About this Manual.pdf
。
cover.html
檔案包含書籍的封面和以要點列出的目錄。這些要點的樹直接對應到下載手冊的檔案結構。請注意,文件/資料夾名稱中不允許使用某些字符,因此儲存時斜杠、冒號等字符將替換為破折號。
toc.json
檔案包含電腦可讀的目錄,其名稱對應到“文件編號”,用於取得 PDF。
大多數作業系統將檔案名稱限制為 255 個位元組(而不是 255 個字元)。對於超過 200 個字元的檔案名稱(相當罕見),下載程式將截斷名稱,然後在末尾新增(docID truncated)
。
如果您在尋找名稱較長的文檔時遇到問題,請在toc.json
中搜尋它,其中它將是一個帶有值的鍵。該值是將在檔案名稱中的docID
。
2002 年或更早的車輛在手冊中具有不同的、難以取得的結構,因此該工具僅使用字母索引。這意味著輸出有點不同;您只需在指定的輸出資料夾中獲得一個平面結構,其中包含手冊中的所有頁面。
您可以透過開啟outputpath/AA_Table_Of_Contents.html
輕鬆瀏覽手冊——除了頂部的字母之外,所有連結都有效。
還有一些特殊的文件:
AA_Table_Of_Contents.html
是一個特殊的、經過處理的目錄,所有連結都可以在其中工作!在瀏覽器中打開它以瀏覽手冊。AAA_alphabeticalIndex.json
是一個 JSON 文件,其中包含按字母順序排列的索引中的所有連結。它不像目錄那麼有用,但如果您需要它,它就在那裡。這是處理腳本的結果。AAA_originalTableOfContents.html
是原始目錄,因此連結不起作用。如果你需要的話它就在那裡。這是處理腳本的結果。這些檔案以AAA
為前綴,因此它們顯示在大多數檔案瀏覽器中的檔案清單的頂部。
當腳本啟動時,它會嘗試登入 PTS 以驗證您的 cookie 是否正常運作。如果失敗,您可能無法取得手冊。
嘗試重新收集 cookie 並確保您使用的是正確的 cookie。如果您 100% 確定您的 cookie 正確,您可以將--noCookieTest
新增至指令。
嗯,您的訂閱似乎已過期。您需要更新它才能下載手冊。
也可以使用--noCookieTest
跳過此檢查,但如果沒有訂閱,您將無法下載手冊。
...
在 cookie 字串中找不到。這可能會影響功能。該腳本會根據預期的 cookie 清單自動檢查您的 cookie 檔案。如果它找不到預期的 cookie 之一,它會警告您(請注意,如果列印出來,機器人不會停止)。
如果您看到此訊息並且腳本開始下載手冊,請放手 - 這只是一個警告。如果您看到該訊息並且所有內容都下載正常,請開啟 GitHub 問題,以便我可以為其他人修復該問題。
如果您遇到問題,請嘗試重新收集 Cookie。
ERR_HTTP2_PROTOCOL_ERROR
這可能意味著您的 cookie 無效,或者福特(實際上是 Akamai)偵測到我們正在使用無頭瀏覽器(Playwright)。
首先,嘗試重新收集您的 cookie,然後再試一次。如果您仍有問題,請與我們聯絡。
ERR_BAD_RESPONSE
這通常意味著params.json
檔案中的欄位之一不正確。檢查所有欄位是否正確,如果仍有問題,請開啟 GitHub 問題。 (福特更新網站時有時會發生這種情況。)
都是我測試過的。只是為了好玩,我嘗試過:
一切都完美無缺!
若要重新收集 cookie,請按照本說明中的說明進行操作,確保您:
Cookie:
標頭的一部分(如果您複製了它)Request Headers
右上角的Raw
切換;
在第一個貼和第二貼之間如果您仍然遇到問題,請聯絡我們。
大概!我們在北美、南美、歐洲和澳洲都取得了成功。
雖然腳本是英文的(意味著打印出來的所有訊息都將是英文的),但它將下載params.json
中指定的語言的手冊。請注意,福特必須提供所需語言的手冊。
若要下載特定語言的手冊,請變更您的 PTS 語言,重新收集所有參數,然後再次執行下載。
隨著福特不斷改變手冊的存取方式,該專案需要持續維護。
如果這個專案對你有幫助,你可以在 GitHub 贊助商上支持這個專案(點擊頁面頂部的「贊助」按鈕),請我喝杯咖啡,或只是分享!
透過拉取請求做出的貢獻也非常受歡迎。為了最大程度地提高您的 PR 合併的機會,請:
node_modules
資料夾)yarn format
格式化您的程式碼以便於審查這些不是要求——我總是可以幫助你完成這些事情——但它們使這個過程更快。
我通常很樂意提供幫助,但我是全職大學生,這是一個純粹的熱情專案。我也不會保留 PTS 訂閱來進行測試(長期來說它非常昂貴!)。
如需協助,請開啟 GitHub 問題或加入 Discord 伺服器。為了幫助解決 99% 的問題,我需要您在params.json
和cookieString.txt
檔案中遇到的錯誤。 Discord 伺服器上有一種方法可以私下發送它們。
我想要我的汽車手冊,我買了訂閱,希望能下載 PDF,所以我就是這麼做的!
有兩個原因。首先,我不想對福特進行 DDoS(他們前面還有 Akamai,大量並行請求絕對會觸發它並讓我們被阻止)。其次,同步編碼更容易。