rails-pinterest 0.2.3 → 0.2.5
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +18 -1
- data/Gemfile.lock +1 -1
- data/README.md +4 -1
- data/lib/pinterest/client.rb +4 -0
- data/lib/pinterest/pins.rb +6 -2
- data/lib/pinterest/user_account.rb +144 -0
- data/lib/pinterest/version.rb +1 -1
- data/lib/pinterest.rb +1 -0
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c2511d23d52e43b2316914cd9ae42d5420a9677471f417c3d725c36c58abaabe
|
4
|
+
data.tar.gz: 17ca93046f01b103c386a01fcf3048da5736f14168cb6f9e27ddb4a3f554d5e9
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: dd55a3c51bb89ea98999bc7b9c11c79aeb2fc5ba03f9fbc0fe69dcc4b0fd2156725a57261fea987450329e7242c4841c820c300a290f04f3db11ca9104fc4a9a
|
7
|
+
data.tar.gz: 2cff0ae0bfe401e66c8445f8aef9222576c69d6227f05b2e229e9c043df2129b36bb1e71f43545e8b2f6ac4874135b2d0f73b4c89d22e92a9557a4de92b4c1e1
|
data/CHANGELOG.md
CHANGED
@@ -44,4 +44,21 @@
|
|
44
44
|
- Fix param requirement for Media#register_media_upload
|
45
45
|
|
46
46
|
## [0.2.3] - 2024-03-11
|
47
|
-
- Revert V.0.2.3
|
47
|
+
- Revert V.0.2.3
|
48
|
+
|
49
|
+
## [0.2.4] - 2024-04-09
|
50
|
+
- Add User Account to API
|
51
|
+
|
52
|
+
## [0.2.5] - 2024-05-10
|
53
|
+
- Add the beta endpoint https://developer.pinterest.com/docs/api/v5/#operation/multi_pins/analytics (it doesn't really work right now)
|
54
|
+
- Example usage:
|
55
|
+
```ruby
|
56
|
+
client = Pinterest::Client.new(access_token: "some-access-token")
|
57
|
+
params = {
|
58
|
+
pin_ids: ["920634348815764178","920634348815790715","920634348815829069","920634348815865049","920634348815897303","920634348815911959","920634348815943797","920634348816238458","920634348816183143","920634348816403644","920634348816488886","920634348816699966"],
|
59
|
+
start_date: "2024-03-01",
|
60
|
+
end_date: "2024-05-10",
|
61
|
+
metric_types: ["IMPRESSION", "OUTBOUND_CLICK", "PIN_CLICK", "SAVE", "SAVE_RATE", "VIDEO_MRC_VIEW", "VIDEO_10S_VIEW", "QUARTILE_95_PERCENT_VIEW", "VIDEO_V50_WATCH_TIME", "VIDEO_START", "VIDEO_AVG_WATCH_TIME", "TOTAL_COMMENTS", "TOTAL_REACTIONS"]
|
62
|
+
}
|
63
|
+
response = client.pins.get_multiple_pin_analytics(ids: params[:pin_ids], start_date: params[:start_date], end_date: params[:end_date], metric_types: params[:metric_types], parameters: {})
|
64
|
+
```
|
data/Gemfile.lock
CHANGED
data/README.md
CHANGED
@@ -260,4 +260,7 @@ The gem is available as open source under the terms of the [MIT License](https:/
|
|
260
260
|
Everyone interacting in the Ruby Pinterest project's codebases, issue trackers, chat rooms and mailing lists is expected to follow the [code of conduct](https://github.com/royalgiant/rails-pinterest/blob/main/CODE_OF_CONDUCT.md).
|
261
261
|
|
262
262
|
## Influences
|
263
|
-
Project heavily influenced by [https://github.com/alexrudall/ruby-openai](https://github.com/alexrudall/ruby-openai). Great project, go give them a star!
|
263
|
+
Project heavily influenced by [https://github.com/alexrudall/ruby-openai](https://github.com/alexrudall/ruby-openai). Great project, go give them a star!
|
264
|
+
|
265
|
+
## Where Is Rails-Pinterest Used?
|
266
|
+
Currently used by [Imagifyr](https://imagifyr.com) to allow creators to schedule their content. SEO Optimized with AI.
|
data/lib/pinterest/client.rb
CHANGED
data/lib/pinterest/pins.rb
CHANGED
@@ -24,8 +24,12 @@ module Pinterest
|
|
24
24
|
@client.patch(path: "/pins/#{id}", parameters: parameters)
|
25
25
|
end
|
26
26
|
|
27
|
-
def get_pin_analytics(id:, parameters: {})
|
28
|
-
@client.get(path: "/pins/#{id}/analytics", parameters: parameters)
|
27
|
+
def get_pin_analytics(id:, start_date:, end_date:, metric_types:, parameters: {})
|
28
|
+
@client.get(path: "/pins/#{id}/analytics?start_date=#{start_date}&end_date=#{end_date}&metric_types=#{metric_types}", parameters: parameters)
|
29
|
+
end
|
30
|
+
|
31
|
+
def get_multiple_pin_analytics(ids:, start_date:, end_date:, metric_types:, parameters: {})
|
32
|
+
@client.get(path: "/pins/analytics?pin_ids=#{ids}&start_date=#{start_date}&end_date=#{end_date}&metric_types=#{metric_types}", parameters: parameters)
|
29
33
|
end
|
30
34
|
|
31
35
|
def save_pin(id: , parameters: {})
|
@@ -0,0 +1,144 @@
|
|
1
|
+
module Pinterest
|
2
|
+
class UserAccount
|
3
|
+
def initialize(client: nil)
|
4
|
+
@client = client
|
5
|
+
end
|
6
|
+
|
7
|
+
def get_user_account(parameters: {})
|
8
|
+
@client.get(path: "/user_account", parameters: parameters)
|
9
|
+
end
|
10
|
+
|
11
|
+
def get_user_account_analytics(start_date:, end_date:, parameters: {})
|
12
|
+
query_string = "/user_account/analytics?start_date=#{start_date}&end_date=#{end_date}"
|
13
|
+
if parameters[:from_claimed_content] && !parameters[:from_claimed_content].empty?
|
14
|
+
query_string += "&from_claimed_content=#{parameters[:from_claimed_content]}"
|
15
|
+
end
|
16
|
+
if parameters[:pin_format] && !parameters[:pin_format].empty?
|
17
|
+
query_string += "&pin_format=#{parameters[:pin_format]}"
|
18
|
+
end
|
19
|
+
if parameters[:app_types] && !parameters[:app_types].empty?
|
20
|
+
query_string += "&app_types=#{parameters[:app_types]}"
|
21
|
+
end
|
22
|
+
if parameters[:content_type] && !parameters[:content_type].empty?
|
23
|
+
query_string += "&content_type=#{parameters[:content_type]}"
|
24
|
+
end
|
25
|
+
if parameters[:source] && !parameters[:source].empty?
|
26
|
+
query_string += "&source=#{parameters[:source]}"
|
27
|
+
end
|
28
|
+
if parameters[:metric_types] && !parameters[:metric_types].empty?
|
29
|
+
query_string += "&metric_types=#{parameters[:metric_types]}"
|
30
|
+
end
|
31
|
+
if parameters[:split_field] && !parameters[:split_field].empty?
|
32
|
+
query_string += "&split_field=#{parameters[:split_field]}"
|
33
|
+
end
|
34
|
+
if parameters[:ad_account_id] && !parameters[:ad_account_id].empty?
|
35
|
+
query_string += "&ad_account_id=#{parameters[:ad_account_id]}"
|
36
|
+
end
|
37
|
+
@client.get(path: query_string, parameters: parameters)
|
38
|
+
end
|
39
|
+
|
40
|
+
def get_user_account_top_pins_analytics(start_date:, end_date:, sort_by:, parameters: {})
|
41
|
+
query_string = "/user_account/analytics?start_date=#{start_date}&end_date=#{end_date}&sort_by=#{sort_by}"
|
42
|
+
if parameters[:from_claimed_content] && !parameters[:from_claimed_content].empty?
|
43
|
+
query_string += "&from_claimed_content=#{parameters[:from_claimed_content]}"
|
44
|
+
end
|
45
|
+
if parameters[:pin_format] && !parameters[:pin_format].empty?
|
46
|
+
query_string += "&pin_format=#{parameters[:pin_format]}"
|
47
|
+
end
|
48
|
+
if parameters[:app_types] && !parameters[:app_types].empty?
|
49
|
+
query_string += "&app_types=#{parameters[:app_types]}"
|
50
|
+
end
|
51
|
+
if parameters[:content_type] && !parameters[:content_type].empty?
|
52
|
+
query_string += "&content_type=#{parameters[:content_type]}"
|
53
|
+
end
|
54
|
+
if parameters[:source] && !parameters[:source].empty?
|
55
|
+
query_string += "&source=#{parameters[:source]}"
|
56
|
+
end
|
57
|
+
if parameters[:metric_types] && !parameters[:metric_types].empty?
|
58
|
+
query_string += "&metric_types=#{parameters[:metric_types]}"
|
59
|
+
end
|
60
|
+
if parameters[:num_of_pins] && !parameters[:num_of_pins].empty?
|
61
|
+
query_string += "&num_of_pins=#{parameters[:num_of_pins]}"
|
62
|
+
end
|
63
|
+
if parameters[:created_in_last_n_days] && !parameters[:created_in_last_n_days].empty?
|
64
|
+
query_string += "&created_in_last_n_days=#{parameters[:created_in_last_n_days]}"
|
65
|
+
end
|
66
|
+
if parameters[:ad_account_id] && !parameters[:ad_account_id].empty?
|
67
|
+
query_string += "&ad_account_id=#{parameters[:ad_account_id]}"
|
68
|
+
end
|
69
|
+
@client.get(path: query_string, parameters: parameters)
|
70
|
+
end
|
71
|
+
|
72
|
+
def get_user_account_top_video_pins_analytics(start_date:, end_date:, sort_by:, parameters: {})
|
73
|
+
query_string = "/user_account/analytics?start_date=#{start_date}&end_date=#{end_date}&sort_by=#{sort_by}"
|
74
|
+
if parameters[:from_claimed_content] && !parameters[:from_claimed_content].empty?
|
75
|
+
query_string += "&from_claimed_content=#{parameters[:from_claimed_content]}"
|
76
|
+
end
|
77
|
+
if parameters[:pin_format] && !parameters[:pin_format].empty?
|
78
|
+
query_string += "&pin_format=#{parameters[:pin_format]}"
|
79
|
+
end
|
80
|
+
if parameters[:app_types] && !parameters[:app_types].empty?
|
81
|
+
query_string += "&app_types=#{parameters[:app_types]}"
|
82
|
+
end
|
83
|
+
if parameters[:content_type] && !parameters[:content_type].empty?
|
84
|
+
query_string += "&content_type=#{parameters[:content_type]}"
|
85
|
+
end
|
86
|
+
if parameters[:source] && !parameters[:source].empty?
|
87
|
+
query_string += "&source=#{parameters[:source]}"
|
88
|
+
end
|
89
|
+
if parameters[:metric_types] && !parameters[:metric_types].empty?
|
90
|
+
query_string += "&metric_types=#{parameters[:metric_types]}"
|
91
|
+
end
|
92
|
+
if parameters[:num_of_pins] && !parameters[:num_of_pins].empty?
|
93
|
+
query_string += "&num_of_pins=#{parameters[:num_of_pins]}"
|
94
|
+
end
|
95
|
+
if parameters[:created_in_last_n_days] && !parameters[:created_in_last_n_days].empty?
|
96
|
+
query_string += "&created_in_last_n_days=#{parameters[:created_in_last_n_days]}"
|
97
|
+
end
|
98
|
+
if parameters[:ad_account_id] && !parameters[:ad_account_id].empty?
|
99
|
+
query_string += "&ad_account_id=#{parameters[:ad_account_id]}"
|
100
|
+
end
|
101
|
+
@client.get(path: query_string, parameters: parameters)
|
102
|
+
end
|
103
|
+
|
104
|
+
def list_linked_businesses(parameters: {})
|
105
|
+
@client.get(path: "/user_account/businesses", parameters: parameters)
|
106
|
+
end
|
107
|
+
|
108
|
+
def list_followers(parameters: {})
|
109
|
+
@client.get(path: "/user_account/followers", parameters: parameters)
|
110
|
+
end
|
111
|
+
|
112
|
+
def list_following(parameters: {})
|
113
|
+
@client.get(path: "/user_account/following", parameters: parameters)
|
114
|
+
end
|
115
|
+
|
116
|
+
def list_following_boards(parameters: {})
|
117
|
+
@client.get(path: "/user_account/following/boards", parameters: parameters)
|
118
|
+
end
|
119
|
+
|
120
|
+
def follow_user(username:, parameters: {})
|
121
|
+
@client.json_post(path: "/user_account/following/#{username}", parameters: parameters)
|
122
|
+
end
|
123
|
+
|
124
|
+
def verify_website(parameters: {})
|
125
|
+
@client.json_post(path: "/user_account/websites", parameters: parameters)
|
126
|
+
end
|
127
|
+
|
128
|
+
def get_user_websites(parameters: {})
|
129
|
+
@client.get(path: "/user_account/websites", parameters: parameters)
|
130
|
+
end
|
131
|
+
|
132
|
+
def unverify_website(website:)
|
133
|
+
@client.delete(path: "/user_account/websites?website=#{website}")
|
134
|
+
end
|
135
|
+
|
136
|
+
def get_user_verification_code_for_website_claiming(parameters: {})
|
137
|
+
@client.get(path: "/user_account/websites/verification", parameters: parameters)
|
138
|
+
end
|
139
|
+
|
140
|
+
def list_following_interests(username:, parameters: {})
|
141
|
+
@client.get(path: "/users/#{username}/interests/follow", parameters: parameters)
|
142
|
+
end
|
143
|
+
end
|
144
|
+
end
|
data/lib/pinterest/version.rb
CHANGED
data/lib/pinterest.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rails-pinterest
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.5
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Donald Lee
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2024-
|
11
|
+
date: 2024-05-10 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: faraday
|
@@ -65,6 +65,7 @@ files:
|
|
65
65
|
- lib/pinterest/oauth.rb
|
66
66
|
- lib/pinterest/pins.rb
|
67
67
|
- lib/pinterest/terms.rb
|
68
|
+
- lib/pinterest/user_account.rb
|
68
69
|
- lib/pinterest/version.rb
|
69
70
|
- lib/ruby/pinterest.rb
|
70
71
|
- rails-pinterest.gemspec
|