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
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
-
.board(board_url, limit: 50, pages: 10) ⇒ Object
-
.config ⇒ Object
-
.configure {|config| ... } ⇒ Object
-
.download(url, path:) ⇒ Object
-
.download_batch(urls, dir:, filename: nil, &progress) ⇒ Object
-
.get_image_url(pin_url, quality: config.quality, client: Client.new(config: config)) ⇒ Object
-
.get_media(pin_url, quality: config.quality, client: Client.new(config: config)) ⇒ Object
-
.get_video_url(pin_url, client: Client.new(config: config)) ⇒ Object
-
.logger ⇒ Object
-
.search(query, limit: 25, pages: 5) ⇒ Object
-
.search_images(query, limit: 25) ⇒ Object
-
.search_json(query, limit: 25) ⇒ Object
-
.search_videos(query, limit: 25) ⇒ Object
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
|
.config ⇒ Object
8
9
10
|
# File 'lib/pinterest_dl/api.rb', line 8
def config
@config ||= Configuration.new
end
|
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
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 = (html, quality: quality)
raise NotFoundError, "No image found at #{pin_url}" unless url
url
end
|
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: (html, quality: quality),
video_url: (html)
}
end
|
.get_video_url(pin_url, client: Client.new(config: config)) ⇒ Object
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 = (html)
raise NotFoundError, "No video found at #{pin_url}" unless url
url
end
|
.logger ⇒ Object
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
|