3.3 KiB
Instruction Downloader Script
This Python script is designed to download LEGO building instructions for a given set ID from the Rebrickable website. It will search for all available instruction links related to a set, and based on the presence of a "V29" (or "V 29") tag in the alt text, it will download specific versions of the instructions.
Features
- Download Specific Versions: Automatically handles downloading of instructions based on the
V29
version. - Handle Complex Alt Text: The script handles alt text that includes variations like
V29
, includingx/y
patterns and ignores invalid patterns. - Fallback for Missing or Invalid V29 Versions: If no valid V29 instruction links are found, the script will download all available instructions.
- Customizable Download Filenames: Instructions are saved with filenames based on the set ID and the instruction variant.
- User-Agent Spoofing: The script mimics a browser request to avoid being blocked as a bot.
Requirements
- Python 3.x
requests
librarybeautifulsoup4
library
You can install the required dependencies by running:
python3 -m pip install requests beautifulsoup4
Usage
Running the Script
To use this script, you need to provide the LEGO set ID as an argument. The set ID is typically in the format ####-1
(e.g., 10313-1
).
Example Command
python3 dl.py 10313-1
This will download the LEGO building instructions for the set 10313-1
(Wildflower Bouquet).
How It Works
- The script will visit the Rebrickable page for the provided set ID.
- It will search for all available instruction links containing "LEGO Building Instructions" in the
alt
text. - If links with "V29" are found, the script will download them in order, naming them as
{set_id}+1.pdf
,{set_id}+2.pdf
, etc. - If the
x/y
values in thealt
text are invalid (i.e.,x
ory
greater than 10), those links will be ignored. - If no valid
V29
links are found, the script will fall back to downloading all available instruction links, with filenames based on the alt text.
Script Output
The script will print status messages during the execution, including:
- URLs of the files being downloaded.
- The filenames that the instructions will be saved as.
- Any errors encountered while downloading.
Example Output
Downloading: https://rebrickable.com/instructions/10313-1/123456/download/?expire=1737409263 -> 10313+1.pdf
Saved: 10313+1.pdf
Downloading: https://rebrickable.com/instructions/10313-1/789012/download/?expire=1737409263 -> 10313+2.pdf
Saved: 10313+2.pdf
If no valid V29
links are found, the script will print out the available instruction links.
Error Handling
- If the page cannot be loaded (e.g., invalid set ID), the script will print an error message and stop.
- If an instruction download fails, the script will print an error message with the HTTP status code.
Customization
- User-Agent: The script uses a browser-like User-Agent string to avoid being detected as a bot. You can customize the
headers
variable if needed. - Download Filename Format: The filenames for the downloaded instructions are automatically generated. You can modify the
download_instructions
function to change the naming convention.
License
This project is licensed under the MIT License - see the LICENSE file for details.