7.6 KiB
Executable File
7.6 KiB
Executable File
pinterest-downloader
Download all images/videos from Pinterest user/board/section.
Some features:
- Accept input of /username/, /username/boardname/, /username/boardname/section, pin/PinID
- Accept input of URL link.
- Able download sections of boards of username.
- High resolution.
- Error tolerance. Try second resolution if first resolution error.
- Able download both image and video.
- Multi-threads when download images.
- Media Filename naming in PinID_Title_Description_[Date].Ext meaningful form. With PinID, you can visit https://www.pinterest.com/pin/[PinID] in web browser and get more details in log file (PinID without details will not log).
- Media Filename truncate to ... fit maximum filename length automatically. -c to cut if you prefer.
- Log PinID, Title, Description, Link, Metadata, [Date] to log-pinterest-downloader.log file since media filename can't fit.
- Unique board/log name with timestamp options.
- Proxies options.
- Speed up existing folder update without re-fetch all pages.
Requirements:
$ python3 -m pip install -r requirements.txt
Usage:
$ python3 pinterest-downloader.py --help
usage: pinterest-downloader.py [-h] [-d DIR] [-j THREAD_MAX] [-c CUT] [-bt]
[-lt] [-f] [-es]
[path]
Download ALL board/section from 🅿️interest by username, username/boardname,
username/boardname/section or link. Support image and video. Filename compose
of PinId_Title_Description_Date.Ext. PinId always there while the rest is
optional. If filename too long will endswith ... and you can check details in
log-pinterest-downloader.log file.
positional arguments:
path Pinterest username, or username/boardname, or
username/boardname/section, or relevant link( /pin/
may include created time ).
optional arguments:
-h, --help show this help message and exit
-d DIR, --dir DIR Specify folder path/name to store. Default is
"images".
-j THREAD_MAX, --job THREAD_MAX
Specify maximum threads when downloading images.
Default is number of processors on the machine,
multiplied by 5.
-c CUT, --cut CUT Specify maximum length of
"_TITLE_DESCRIPTION_DATE"(exclude ...) in filename.
-bt, --board-timestamp
Suffix board directory name with unique timestamp.
-lt, --log-timestamp Suffix log-pinterest-downloader.log filename with
unique timestamp. Default filename is log-pinterest-
downloader.log. Note: Pin id without
Title/Description/Link/Metadata/Created_at will not
write to log.
-f, --force Force re-download even if image already exist.
Normally used with -rs
-rs, --re-scrape Default is only fetch new images since latest Pin ID
image to speed up update process. This option disable
that behavior and re-scrape all, use it when you feel
missing images somewhere or incomplete download. This
issue is because Pinterest only lists reordered as you
see in the webpage which affects sort by time/PinID
trick.
-es, --exclude-section
Exclude sections if download from username or board.
-ps HTTPS_PROXY, --https-proxy HTTPS_PROXY
Set proxy for https.
-p HTTP_PROXY, --http-proxy HTTP_PROXY
Set proxy for http.
Example Usage:
$ python3 pinterest-downloader.py # Prompt for insert path. Note: Only support python 3, not python 2
$ export PYTHONIOENCODING=utf8; python3 pinterest-downloader.py # If you get "'gbk' codec can't encode character" error
$ python3 pinterest-downloader.py https://www.pinterest.com/antonellomiglio/computer/
$ python3 pinterest-downloader.py https://www.pinterest.com/antonellomiglio/computer/ -d comp
$ python3 pinterest-downloader.py -d comp https://www.pinterest.com/antonellomiglio/computer/ # or path in last
$ python3 pinterest-downloader.py https://www.pinterest.com/antonellomiglio/computer/ -bt -lt -d comp -f -rs # various options
$ python3 pinterest-downloader.py https://www.pinterest.com/antonellomiglio/computer/ -c 40 # Default already good enough
$ python3 pinterest-downloader.py https://www.pinterest.com/antonellomiglio/computer/ -j 666 # Default already fast enough
$ python3 pinterest-downloader.py https://www.pinterest.com/Foodrecipessmith/food-recipes/ -ps "socks4://123.123.123.123:12345" -p "socks4://123.123.123.123:12345" # set proxies
$ pin https://www.pinterest.com/antonellomiglio/computer/ # make alias/function in ~/.bash_aliases(or any shell startup script) to easier type
$ pin https://www.pinterest.com/Foodrecipessmith/ # Download all boards by username.
$ pin https://www.pinterest.com/Foodrecipessmith/food-recipes/ # Download all sections and images of boards. But _saved/_created/pins treat as username only.
$ pin https://www.pinterest.com/Foodrecipessmith/food-recipes/ -es # Exclude sections
$ pin https://www.pinterest.com/Foodrecipessmith/food-recipes/condiments/ # Download all images of section
$ pin https://www.pinterest.com/pin/819444094683773705/ # Download specific pin
$ pin Foodrecipessmith # Download by username with shortform instead of link
$ pin Foodrecipessmith/food-recipes # Download boards with shortform instead of link
$ pin Foodrecipessmith/food-recipes/condiments # Download section with shortform instead of link
$ pin pin/819444094683773705 # Download pin with shortform instead of link
Example Output:
xb@dnxb:~/Downloads/pinterest/pinterest-downloader$ python3 pinterest-downloader.py -d comp https://www.pinterest.com/antonellomiglio/computer/
[...] Getting all images in this board: computer ... [ 173 / ? ] [➕] Found 195 image/videos
Download into directory: comp/antonellomiglio/Computer/
[✔] Downloaded: |##################################################| 100.0% Complete
[i] Time Spent: 0:00:06
Rerun(ensure same directory) will no new item found since latest pin Id file:
xb@dnxb:~/Downloads/pinterest/pinterest-downloader$ python3 pinterest-downloader.py -d comp https://www.pinterest.com/antonellomiglio/computer/
[i] Job is download single board by username/boardname: antonellomiglio/computer
[...] Getting all images in this board: computer ... [ 0 / ? ]
[i] No new item found.
[i] Time Spent: 0:00:04
Rerun in future(upload or delete highest pin id files to test) to fetch new items only which Pin IDs higher than exising Pin ID(speed up without fetch all pages(use -rs if user reordered concerns):
xb@dnxb:~/Downloads/pinterest/pinterest-downloader$ python3 pinterest-downloader.py -d comp https://www.pinterest.com/antonellomiglio/computer/
[i] Job is download single board by username/boardname: antonellomiglio/computer
[...] Getting all images in this board: computer ... [ 0 / ? ] [➕] Found 5 new image/videos
Download into directory: comp/antonellomiglio/Computer/
[✔] Downloaded: |##################################################| 100.0% Complete
[i] Time Spent: 0:00:04