Skip to content

Commit eb580d5

Browse files
authored
Merge pull request bstoilov#28 from bstoilov/fix-bug-with-section-pins
Fix bug with section pins
2 parents a6e944a + 2391988 commit eb580d5

File tree

4 files changed

+49
-13
lines changed

4 files changed

+49
-13
lines changed

board_sections_example.py

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
from py3pin.Pinterest import Pinterest
2+
3+
pinterest = Pinterest(email='email',
4+
password='password',
5+
username='username',
6+
cred_root='cred_root')
7+
8+
9+
def print_all_section_pin_ids():
10+
boards = pinterest.boards()
11+
for board in boards:
12+
target_board = board
13+
sections = pinterest.get_board_sections(board_id=target_board['id'])
14+
15+
print(target_board['name'])
16+
for section in sections:
17+
section_pins = pinterest.get_section_pins(section_id=section['id'])
18+
19+
print(section['slug'])
20+
for sec_pin in section_pins:
21+
print(sec_pin['id'])
22+
23+
print('\n')
24+
25+
26+
print_all_section_pin_ids()

examples.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -192,6 +192,6 @@ def get_board_sections(board_id=''):
192192
return pinterest.get_board_sections(board_id=board_id)
193193

194194

195-
def get_board_section_feed(username='', board_name='', section_name=''):
196-
return pinterest.get_section_pins(username=username, board_name=board_name, section_name=section_name)
195+
def get_board_section_feed(section_id=''):
196+
return pinterest.get_section_pins(section_id=section_id)
197197

py3pin/Pinterest.py

Lines changed: 20 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,7 @@
5454
BOARD_SECTION_RESOURCE = 'https://www.pinterest.com/resource/BoardSectionResource/create/'
5555
GET_BOARD_SECTIONS = 'https://www.pinterest.com/resource/BoardSectionsResource/get/'
5656
BOARD_SECTION_EDIT_RESOURCE = 'https://www.pinterest.com/resource/BoardSectionEditResource/delete/'
57+
GET_BOARD_SECTION_PINS = 'https://www.pinterest.com/resource/BoardSectionPinsResource/get/'
5758
UPLOAD_IMAGE = 'https://www.pinterest.com/upload-image/'
5859

5960

@@ -271,7 +272,7 @@ def pin(self, board_id, image_url, description='', link='', title='', section_id
271272
def upload_pin(self, board_id, image_file, description='', link='', title='', section_id=None):
272273
image_url = self._upload_image(image_file=image_file).json()['image_url']
273274
return self.pin(board_id=board_id, description=description, image_url=image_url, link=link, title=title,
274-
section_id=section_id)
275+
section_id=section_id)
275276

276277
def repin(self, board_id, pin_id, section_id=None):
277278
options = {
@@ -614,18 +615,27 @@ def get_board_sections(self, board_id=''):
614615

615616
url = self.req_builder.buildGet(url=GET_BOARD_SECTIONS, options=options)
616617
response = self.get(url=url).json()
617-
return response['resource_response']['data']['ReactBoardFeedResource']
618+
return response['resource_response']['data']
618619

619-
def get_section_pins(self, username='', board_name='', section_name=''):
620+
def get_section_pins(self, section_id='', page_size=250):
621+
options = {
622+
"isPrefetch": False,
623+
"field_set_key": "react_grid_pin",
624+
"is_own_profile_pins": True,
625+
"page_size": page_size,
626+
"redux_normalize_feed": True,
627+
"section_id": section_id
628+
}
620629

621-
url = 'https://www.pinterest.com/{}/{}/{}/'.format(username, board_name, section_name)
622-
data = self.get(url=url)
630+
url = self.req_builder.buildGet(url=GET_BOARD_SECTION_PINS, options=options)
631+
response = self.get(url=url).json()
632+
data = response['resource_response']['data']
633+
pins = []
623634

624-
soup = BeautifulSoup(data.text, 'html.parser')
625-
script = soup.find("script", {"id": "initial-state"})
626-
data = json.loads(script.text)['resources']['data']['ReactBoardFeedResource']
627-
first_entry = next(iter(data.values()))
628-
return first_entry['data']['section_pin_feed']
635+
for d in data:
636+
if 'pinner' in d:
637+
pins.append(d)
638+
return pins
629639

630640
def delete_board_section(self, section_id=''):
631641
options = {

py3pin/__version__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
__version__ = '1.0.0'
1+
__version__ = '1.0.1'

0 commit comments

Comments
 (0)