limkokhole aee4581984 format.
2022-01-21 02:01:27 +08:00
2022-01-21 02:01:27 +08:00
2022-01-18 01:44:39 +08:00

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 for large board(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
Description
No description provided
Readme 155 KiB
Languages
Python 100%