Module: PinterestDL

Defined in:
lib/pinterest_dl/api.rb,
lib/pinterest-dl.rb,
lib/pinterest_dl/board.rb,
lib/pinterest_dl/client.rb,
lib/pinterest_dl/errors.rb,
lib/pinterest_dl/search.rb,
lib/pinterest_dl/version.rb,
lib/pinterest_dl/downloader.rb,
lib/pinterest_dl/progress_bar.rb,
lib/pinterest_dl/configuration.rb,
lib/pinterest_dl/extractors/image.rb,
lib/pinterest_dl/extractors/video.rb,
lib/pinterest_dl/extractors/pin_data.rb

Overview

Monji024

Defined Under Namespace

Modules: Extractors Classes: AuthenticationError, Board, Client, Configuration, DownloadError, Downloader, Error, InvalidURLError, NetworkError, NotFoundError, ProgressBar, RateLimitError, Search

Constant Summary collapse

PIN_URL_PATTERN =
%r{(pinterest\.[a-z.]+/pin/|pin\.it/)}i.freeze
VERSION =
'2.0.3'

Class Method Summary collapse

Class Method Details

.board(board_url, limit: 50, pages: 10) ⇒ Object



72
73
74
# File 'lib/pinterest_dl/api.rb', line 72

def board(board_url, limit: 50, pages: 10)
  Board.new(config: config).call(board_url, limit: limit, pages: pages)
end

.configObject



8
9
10
# File 'lib/pinterest_dl/api.rb', line 8

def config
  @config ||= Configuration.new
end

.configure {|config| ... } ⇒ Object

Yields:



12
13
14
15
# File 'lib/pinterest_dl/api.rb', line 12

def configure
  yield config
  config
end

.download(url, path:) ⇒ Object



48
49
50
# File 'lib/pinterest_dl/api.rb', line 48

def download(url, path:)
  Downloader.new(config: config).download(url, path: path)
end

.download_batch(urls, dir:, filename: nil, &progress) ⇒ Object



52
53
54
# File 'lib/pinterest_dl/api.rb', line 52

def download_batch(urls, dir:, filename: nil, &progress)
  Downloader.new(config: config).download_batch(urls, dir: dir, filename: filename, &progress)
end

.get_image_url(pin_url, quality: config.quality, client: Client.new(config: config)) ⇒ Object

Raises:



21
22
23
24
25
26
27
28
# File 'lib/pinterest_dl/api.rb', line 21

def get_image_url(pin_url, quality: config.quality, client: Client.new(config: config))
  validate_pin_url!(pin_url)
  html = client.get(pin_url)
  url = extract_pin_image(html, quality: quality)
  raise NotFoundError, "No image found at #{pin_url}" unless url

  url
end

.get_media(pin_url, quality: config.quality, client: Client.new(config: config)) ⇒ Object



39
40
41
42
43
44
45
46
# File 'lib/pinterest_dl/api.rb', line 39

def get_media(pin_url, quality: config.quality, client: Client.new(config: config))
  validate_pin_url!(pin_url)
  html = client.get(pin_url)
  {
    image_url: extract_pin_image(html, quality: quality),
    video_url: extract_pin_video(html)
  }
end

.get_video_url(pin_url, client: Client.new(config: config)) ⇒ Object

Raises:



30
31
32
33
34
35
36
37
# File 'lib/pinterest_dl/api.rb', line 30

def get_video_url(pin_url, client: Client.new(config: config))
  validate_pin_url!(pin_url)
  html = client.get(pin_url)
  url = extract_pin_video(html)
  raise NotFoundError, "No video found at #{pin_url}" unless url

  url
end

.loggerObject



17
18
19
# File 'lib/pinterest_dl/api.rb', line 17

def logger
  config.logger
end

.search(query, limit: 25, pages: 5) ⇒ Object



56
57
58
# File 'lib/pinterest_dl/api.rb', line 56

def search(query, limit: 25, pages: 5)
  Search.new(config: config).call(query, limit: limit, pages: pages)
end

.search_images(query, limit: 25) ⇒ Object



64
65
66
# File 'lib/pinterest_dl/api.rb', line 64

def search_images(query, limit: 25)
  search(query, limit: limit).filter_map { |p| p[:image_url] }
end

.search_json(query, limit: 25) ⇒ Object



60
61
62
# File 'lib/pinterest_dl/api.rb', line 60

def search_json(query, limit: 25)
  JSON.pretty_generate(search(query, limit: limit))
end

.search_videos(query, limit: 25) ⇒ Object



68
69
70
# File 'lib/pinterest_dl/api.rb', line 68

def search_videos(query, limit: 25)
  search(query, limit: limit).filter_map { |p| p[:video_url] }
end