从 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,大量并行请求绝对会触发它并让我们被阻止)。其次,同步编码更容易。