def _parse_user(loader, data): USER_ELEMENTS = [ "biography", "external_url", "external_url_linkshimmed", "full_name", "has_channel", "highlight_reel_count", "id", "is_business_account", "is_joined_recently", "business_category_name", "is_private", "is_verified", "profile_pic_url", "profile_pic_url_hd", "username", "connected_fb_page", "edge_followed_by.count", "edge_follow.count", ] for entry in USER_ELEMENTS: loader.add_value(entry.replace(".", "_"), deep_dict_get(data, entry)) loader.add_value( "last_posts", [ post["node"]["shortcode"] for post in data["edge_owner_to_timeline_media"]["edges"] ], ) loader.add_value("user_json", data) loader.add_value("retrieved_at_time", int(time.time())) return loader
def _parse_post(loader, data): POST_ELEMENTS = [ "id", "shortcode", "dimensions", "fact_check_overall_rating", "fact_check_information", "display_url", "display_resources", "accessibility_caption", "is_video", "tracking_token", "edge_media_to_tagged_user", "edge_media_to_caption", "caption_is_edited", "has_ranked_comments", "edge_media_to_parent_comment", "edge_media_to_hoisted_comment", "edge_media_preview_comment", "comments_disabled", "taken_at_timestamp", "edge_media_preview_like", "edge_media_sponsor_user", "location", "location.id", "owner.username", "owner.id", "is_ad", "edge_web_media_to_related_media", ] try: for entry in POST_ELEMENTS: loader.add_value(entry.replace(".", "_"), deep_dict_get(data, entry)) except TypeError: pass loader.add_value("post_json", data) loader.add_value("retrieved_at_time", int(time.time())) loader.add_value("image_urls", data.get("display_url")) return loader
def test_nested_dict_list(nested_dict_sample): result = deep_dict_get(nested_dict_sample, 'a.b.f') assert isinstance(result, list)
def test_nested_dict_dictionary(nested_dict_sample): result = deep_dict_get(nested_dict_sample, 'a.b.e') assert isinstance(result, dict)
def test_nested_dict_int(nested_dict_sample): result = deep_dict_get(nested_dict_sample, 'a.b.d') assert result == 6
def test_nested_dict_str(nested_dict_sample): result = deep_dict_get(nested_dict_sample, 'a.b.c') assert result == 'string'
def test_nested_dict_flat(nested_dict_sample): result = deep_dict_get(nested_dict_sample, 'a') assert isinstance(result, dict)