Downloads PDF versions of Toyota Service Manuals from TIS.
Bought a 48-hour subscription to Toyota's Service Manuals (Tech Info) and want to save manuals permanently? Here's the repo for you.
These manuals are copyrighted by Toyota, so don't share them!
(I've also written a Ford manual downloader, available here).
If Node.js >v16.3 and yarn
are on your system, skip these steps.
corepack enable
-- this gets Yarn working.Since this project uses Playwright (a headless browser interop library), we'll need to run some special setup steps.
git clone https://github.com/iamtheyammer/fetch-toyota-service-manuals
cd fetch-toyota-service-manuals
yarn
to install dependencies according to the lockfile.yarn playwright-setup
to download and set up Playwright (this is important!)TIS
tab at the top left of your screen.RM
(repair manual) tab.RM12345
-like code.
The full URL should be something like https://techinfo.toyota.com/t3Portal/resources/jsp/siviewer/index.jsp?dir=rm/THIS IS THE CODE&href=xhtml/....
.EWD
(electrical wiring diagram) tab.
The full URL should be something like https://techinfo.toyota.com/t3Portal/ewdappu/index.jsp?ewdNo=THIS IS THE CODE&model=Prius...
EM12345
-like code.For non-electrical manuals (IDs that start with RM or BM), this tool supports only downloading pages pertaining to your model year of vehicle. Some Toyota vehicles, like the 4th generation Prius, have the same manual ID for every single year this generation of the Prius was made.
To avoid downloading pages for a car you don't have, you can specify the model year by putting it after an @-sign.
For example, to download RM12345
for the 2016
model year, you'd use -m RM12345@2016
.
There is no harm in doing this for cars that don't support it (the 2015 Prius is an example). The tool will include all pages for manuals that don't support this functionality. There is also no harm in adding a year to other manual types, but it won't do anything.
And, yes, you can specify a year that the car wasn't made in-- but, if you do, the tool will exclude every page.
To download manuals, run yarn start -e YOUREMAIL -p YOURPASSWORD -m MANUALID -m ANOTHERMANUALID -m ...
with
the manual IDs replaced with yours. You can use -m
an unlimited number of times.
The script will automatically log in as you, read each manual's Table of Contents, and download every page unless you specify a year-- see above.
DO NOT log in to TIS while the bot is downloading. TIS enforces a one-session-at-a-time policy, and if you log in while it's downloading you'll have to start over. If you know what you're doing, you can use your browser Cookie to log in instead of your email and password. See the command-line options for more info.
Manuals take a while. It can take upwards of an hour to download manuals for a single car. If you're downloading multiple manuals, it can take a long time. Be patient. Stay connected to the internet.
You can find your downloaded manuals at manuals/MANUALID
.
This bot downloads all manual IDs you specified. It supports manual IDs starting with RM
, EM
, and BM
.
Electrical Wiring Diagrams (manual IDs that start with EM
) have three directories: routing
, overall
, and system
.
overall
contains traditional wiring diagrams (often PDFs)routing
contains diagrams showing wires' locations around the car (often SVGZs)system
contains traditional wiring diagrams (often SVGs) - often, these overlap with overall
, but not alwaysOther manuals contain all files from the manual, in a tree-like directory structure that mimics the tree view on the sidebar of TIS.
For example, if a manual page is at Engine-Hybrid System -> 1AB-CDE COOLING -> COMPONENTS
, you'll find its
downloaded equivalent at manuals/MANUALID/Engine-Hybrid System/1AB-CDE COOLING/COMPONENTS.pdf
.
For non-electrical manuals, you'll see two "toc" (table of contents) files. toc-full.xml
contains all of the possible pages in the manual. toc-downloaded.json
contains the filtered version, if you filtered by year (if you didn't filter by year, it contains all pages). This is useful if you want to see what pages are available for your car (xml) or what the bot downloaded (json).
index.html
and toc.js
files are for the Manual Locator.
Sometimes, a procedure will link to another with a blue "INFO" button.
You can use the Manual Locator HTML page to find the page for that procedure:
index.html
in your browser of choice by double-clicking it.Pages that had a double quote in their name may not work.
This will only work if index.html
is in the same directory as toc.js
, and those files must be at the root of your manual directory.
(If you don't move any files after downloading, this should be the case.)
Run yarn start --help
, or see below:
Toyota/Lexus/Scion Workshop Manual Downloader
Download the full workshop manual for your car. Must have a valid TIS
subscription.
Options
--manual -m RM12345 Required. Manual ID(s) to download. Use multiple times for multiple manuals.
For non-electrical manuals, add @YEAR to the end to only download pages for
that year.
--email -e me@example.com Required. Your TIS email.
--password -p abc1234 Required. Your TIS password.
--cookie-string -c abc1234 Your TIS cookie string. If you don't know what this is, don't use it.
--headed -h Run in headed mode (show the emulated browser).
--help Print this usage guide.
Questions I think someone might ask, not questions anyone has ever asked before.
You might see a warning like the following print out after Logging into TIS...
:
(node:94450) Warning: Setting the NODE_TLS_REJECT_UNAUTHORIZED environment variable to '0' makes TLS connections and HTTPS requests insecure by disabling certificate verification.
(Use `node --trace-warnings ...` to show where the warning was created)
Node.js doesn't seem to accept Toyota's SSL certificate, so this is required to stop Axios (which is used for login and downloading EWDs) from failing every request.
All the ones I've tested. Just for fun, I tried:
All worked flawlessly!
Long question, short answer-- I copy the cookies from Axios
(which captures them using axios-cookiejar-support
and tough-cookie
),
then import them into Playwright when creating the browser session. See src/index.ts
to see the cookie-copying code.
Since they're the same cookies, Toyota sees it as the same session.
You can use your browser's Cookie header to log in instead of your email and password, but only do that if you know what that means. See the command-line options for more info.
I wanted to have the manual for my car, and I bought the subscription hoping to download a PDF, so that's exactly what I did!
I saw (and took heavy inspiration from) other projects on GitHub, especially threadproc/tis-rip.
However, no other downloader put the manual pages in a tree-like directory structure, tis-rip
required chrome-driver
, which can be inconvenient.
This downloader also works fully headlessly, and you're required to manually log in when using tis-rip
.
Yeah, this was a quick weekend project. Feel free to make it better, though!
Two reasons. Firstly, I don't want to DDoS Toyota. Secondly, it was easier to code synchronously as the function for fetching and saving pages is recursive, meaning I'd actually have to think to parallelize it.
No, but a lot of the code is shared and similar. Unlike Ford, Toyota actually seems to require session cookies to download manual pages, so getting HTML files with non-embedded images isn't very helpful. This downloader PDFs every page before saving.