pasturepy is a Python tool for generating JSON feed definitions for use with Graze. Use it to programmatically create and customize feeds for Graze.
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

add support for user, list, social graph and starter pack nodes

+63 -1
+2
pasturepy/__init__.py
··· 3 3 from pasturepy.nodes.entity import EntityNode 4 4 from pasturepy.nodes.embed import EmbedNode 5 5 from pasturepy.nodes.ml import MLNode 6 + from pasturepy.nodes.social import SocialNode 6 7 7 8 __version__ = "0.1.0" 8 9 ··· 14 15 "EntityNode", 15 16 "EmbedNode", 16 17 "MLNode", 18 + "SocialNode" 17 19 ]
+2 -1
pasturepy/nodes/__init__.py
··· 2 2 from .entity import EntityNode 3 3 from .embed import EmbedNode 4 4 from .ml import MLNode 5 + from .social import SocialNode 5 6 6 - __all__ = ["TextNode", "EntityNode", "EmbedNode", "MLNode"] 7 + __all__ = ["TextNode", "EntityNode", "EmbedNode", "MLNode", "SocialNode"]
+59
pasturepy/nodes/social.py
··· 1 + from pasturepy.constants.graze_json import MEMBER_TYPES, SOCIAL_LISTS 2 + 3 + 4 + class SocialNode: 5 + """Handles users, lists, social graph, and starter pack filtering.""" 6 + 7 + @staticmethod 8 + def list_member(filter_group, list_uri: str, membership: str): 9 + if membership not in MEMBER_TYPES: 10 + raise ValueError( 11 + f"Invalid membership '{membership}'. " 12 + f"Must be one of: {', '.join(MEMBER_TYPES)}" 13 + ) 14 + 15 + return filter_group.add_filter({ 16 + "list_member": [list_uri, membership] 17 + }) 18 + 19 + @staticmethod 20 + def starter_pack(filter_group, list_uri: str, membership: str): 21 + if membership not in MEMBER_TYPES: 22 + raise ValueError( 23 + f"Invalid membership '{membership}'. " 24 + f"Must be one of: {', '.join(MEMBER_TYPES)}" 25 + ) 26 + 27 + return filter_group.add_filter({ 28 + "starter_pack_member": [list_uri, membership] 29 + }) 30 + 31 + @staticmethod 32 + def social_list(filter_group, user_did: list, membership: str): 33 + if membership not in MEMBER_TYPES: 34 + raise ValueError( 35 + f"Invalid membership '{membership}'. " 36 + f"Must be one of: {', '.join(MEMBER_TYPES)}" 37 + ) 38 + 39 + return filter_group.add_filter({ 40 + "social_list": [user_did, membership] 41 + }) 42 + 43 + @staticmethod 44 + def social_graph(filter_group, user_handle: str, membership: str, list_type: str): 45 + if membership not in MEMBER_TYPES: 46 + raise ValueError( 47 + f"Invalid membership '{membership}'. " 48 + f"Must be one of: {', '.join(MEMBER_TYPES)}" 49 + ) 50 + 51 + if list_type not in SOCIAL_LISTS: 52 + raise ValueError( 53 + f"Invalid list_type '{list_type}'. " 54 + f"Must be one of: {', '.join(SOCIAL_LISTS)}" 55 + ) 56 + 57 + return filter_group.add_filter({ 58 + "social_graph": [user_handle, membership, list_type] 59 + })