LICENSE
MANIFEST.in
README.md
setup.py
granary/__init__.py
granary/as1.py
granary/as2.py
granary/atom.py
granary/bluesky.py
granary/facebook.py
granary/flickr.py
granary/github.py
granary/instagram.py
granary/jsonfeed.py
granary/mastodon.py
granary/meetup.py
granary/microformats2.py
granary/nostr.py
granary/pixelfed.py
granary/reddit.py
granary/rss.py
granary/source.py
granary/twitter.py
granary.egg-info/PKG-INFO
granary.egg-info/SOURCES.txt
granary.egg-info/dependency_links.txt
granary.egg-info/requires.txt
granary.egg-info/top_level.txt
granary/templates/_entry.atom
granary/templates/author.atom
granary/templates/entry.atom
granary/templates/host-meta.jrd
granary/templates/host-meta.xrd
granary/templates/host-meta.xrds
granary/templates/index.html
granary/templates/user_feed.atom
granary/tests/__init__.py
granary/tests/test_as1.py
granary/tests/test_as2.py
granary/tests/test_atom.py
granary/tests/test_bluesky.py
granary/tests/test_facebook.py
granary/tests/test_flickr.py
granary/tests/test_github.py
granary/tests/test_instagram.py
granary/tests/test_jsonfeed.py
granary/tests/test_mastodon.py
granary/tests/test_meetup.py
granary/tests/test_microformats2.py
granary/tests/test_nostr.py
granary/tests/test_pixelfed.py
granary/tests/test_reddit.py
granary/tests/test_rss.py
granary/tests/test_source.py
granary/tests/test_testdata.py
granary/tests/test_twitter.py
granary/tests/testdata/accept_follow.as.json
granary/tests/testdata/accept_follow.as2.json
granary/tests/testdata/activity_with_actor.as-from-as2.json
granary/tests/testdata/activity_with_actor.as2.json
granary/tests/testdata/activity_with_person_tag.as.json
granary/tests/testdata/activity_with_person_tag.as.mf2.html
granary/tests/testdata/activity_with_person_tag.as.mf2.json
granary/tests/testdata/activity_with_person_tag.as2.json
granary/tests/testdata/actor.as-from-bsky.json
granary/tests/testdata/actor.as.json
granary/tests/testdata/actor.as2.json
granary/tests/testdata/actor.bsky.json
granary/tests/testdata/actor.mf2.html
granary/tests/testdata/actor.mf2.json
granary/tests/testdata/actor_multiple_urls.mf2.html
granary/tests/testdata/actor_multiple_urls.mf2.json
granary/tests/testdata/actor_organization.as.json
granary/tests/testdata/actor_organization.as2.json
granary/tests/testdata/actor_organization.mf2.json
granary/tests/testdata/actor_urls_displayName.as.json
granary/tests/testdata/actor_urls_displayName.as2.json
granary/tests/testdata/actor_with_featured.as-from-bsky.json
granary/tests/testdata/actor_with_featured.as.json
granary/tests/testdata/actor_with_featured.as2.json
granary/tests/testdata/actor_with_featured.bsky.json
granary/tests/testdata/actor_with_icon.as.json
granary/tests/testdata/actor_with_icon.as2.json
granary/tests/testdata/actor_with_nickname_numeric_id.as.json
granary/tests/testdata/actor_with_nickname_numeric_id.as2-from-as.json
granary/tests/testdata/actor_with_nickname_numeric_id.mf2-from-as.html
granary/tests/testdata/actor_with_nickname_numeric_id.mf2-from-as.json
granary/tests/testdata/article_escape_html_in_content.as.json
granary/tests/testdata/article_escape_html_in_content.mf2.html
granary/tests/testdata/article_escape_html_in_content.mf2.json
granary/tests/testdata/article_with_attachment_image_list.as.json
granary/tests/testdata/article_with_attachment_image_list.feed-from-as.json
granary/tests/testdata/article_with_attachment_stream_list.as.json
granary/tests/testdata/article_with_attachment_stream_list.feed-from-as.json
granary/tests/testdata/article_with_audio_video.as.json
granary/tests/testdata/article_with_audio_video.as2.json
granary/tests/testdata/article_with_audio_video.feed-from-as.json
granary/tests/testdata/article_with_audio_video.mf2-from-as.json
granary/tests/testdata/article_with_audio_video.mf2.html
granary/tests/testdata/article_with_audio_video.mf2.json
granary/tests/testdata/article_with_comments.as.json
granary/tests/testdata/article_with_comments.mf2.html
granary/tests/testdata/article_with_comments.mf2.json
granary/tests/testdata/article_with_displayName.as.json
granary/tests/testdata/article_with_displayName.feed-from-as.json
granary/tests/testdata/article_with_featured.as-from-mf2.json
granary/tests/testdata/article_with_featured.mf2.json
granary/tests/testdata/article_with_image_attachment_with_alt.as.json
granary/tests/testdata/article_with_image_attachment_with_alt.as2-from-as.json
granary/tests/testdata/article_with_image_attachment_with_alt.as2.json
granary/tests/testdata/article_with_image_duplicated_as_attachment.as.json
granary/tests/testdata/article_with_image_duplicated_as_attachment.mf2.html
granary/tests/testdata/article_with_likes.as-from-mf2.json
granary/tests/testdata/article_with_likes.as.json
granary/tests/testdata/article_with_likes.mf2.html
granary/tests/testdata/article_with_likes.mf2.json
granary/tests/testdata/article_with_photo.as.json
granary/tests/testdata/article_with_photo.as2.json
granary/tests/testdata/article_with_photo.mf2.html
granary/tests/testdata/article_with_photo.mf2.json
granary/tests/testdata/article_with_photo_and_featured.as-from-mf2.json
granary/tests/testdata/article_with_photo_and_featured.mf2.json
granary/tests/testdata/article_with_photo_with_alt.as.json
granary/tests/testdata/article_with_photo_with_alt.mf2.html
granary/tests/testdata/article_with_photo_with_alt.mf2.json
granary/tests/testdata/article_with_reposts.as-from-mf2.json
granary/tests/testdata/article_with_reposts.as.json
granary/tests/testdata/article_with_reposts.mf2.html
granary/tests/testdata/article_with_reposts.mf2.json
granary/tests/testdata/article_with_video_duplicated_as_attachment.as.json
granary/tests/testdata/article_with_video_duplicated_as_attachment.mf2-from-as.json
granary/tests/testdata/article_with_video_duplicated_as_attachment.mf2.html
granary/tests/testdata/article_with_video_stream_list.as.json
granary/tests/testdata/article_with_video_stream_list.as2-from-as.json
granary/tests/testdata/attachments.as-from-feed.json
granary/tests/testdata/attachments.feed.json
granary/tests/testdata/bookmark-composite-obj.as-from-mf2.json
granary/tests/testdata/bookmark-composite-obj.mf2.json
granary/tests/testdata/bookmark.as-from-mf2.json
granary/tests/testdata/bookmark.as.json
granary/tests/testdata/bookmark.mf2.json
granary/tests/testdata/comment.as.json
granary/tests/testdata/comment.as2.json
granary/tests/testdata/comment.mf2.html
granary/tests/testdata/comment.mf2.json
granary/tests/testdata/comment_inreplyto_id.as-from-bsky.json
granary/tests/testdata/comment_inreplyto_id.as.json
granary/tests/testdata/comment_inreplyto_id.as2.json
granary/tests/testdata/comment_inreplyto_id.bsky.json
granary/tests/testdata/comment_multiple_in_reply_to.as.json
granary/tests/testdata/comment_multiple_in_reply_to.as2.json
granary/tests/testdata/event.as.json
granary/tests/testdata/event.as2.json
granary/tests/testdata/event.mf2.html
granary/tests/testdata/event.mf2.json
granary/tests/testdata/event_with_rsvps.as.json
granary/tests/testdata/event_with_string_location.mf2.html
granary/tests/testdata/event_with_string_location.mf2.json
granary/tests/testdata/facebook.comment.email.html
granary/tests/testdata/facebook.like.email.html
granary/tests/testdata/facebook.m.post.html
granary/tests/testdata/facebook.m.reactions.html
granary/tests/testdata/facebook.m.timeline.html
granary/tests/testdata/facebook.mbasic.about.html
granary/tests/testdata/facebook.mbasic.feed.html
granary/tests/testdata/facebook.mbasic.life_event.html
granary/tests/testdata/facebook.mbasic.photo_post.html
granary/tests/testdata/facebook.mbasic.post.html
granary/tests/testdata/facebook.mbasic.profile.html
granary/tests/testdata/facebook.mbasic.reactions.html
granary/tests/testdata/favorite.as.json
granary/tests/testdata/favorite.as2-from-as.json
granary/tests/testdata/favorite.mf2-from-as.html
granary/tests/testdata/favorite.mf2-from-as.json
granary/tests/testdata/feed_with_audio_video.as-from-rss.json
granary/tests/testdata/feed_with_audio_video.as.json
granary/tests/testdata/feed_with_audio_video.mf2.json
granary/tests/testdata/feed_with_audio_video.rss.xml
granary/tests/testdata/feed_with_authors.as-from-rss.json
granary/tests/testdata/feed_with_authors.rss.xml
granary/tests/testdata/feed_with_note.as-from-rss.json
granary/tests/testdata/feed_with_note.as.json
granary/tests/testdata/feed_with_note.rss.xml
granary/tests/testdata/follow.as-from-bsky.json
granary/tests/testdata/follow.as.json
granary/tests/testdata/follow.as2.json
granary/tests/testdata/follow.bsky.json
granary/tests/testdata/follow.mf2.html
granary/tests/testdata/follow.mf2.json
granary/tests/testdata/github_issue.as.json
granary/tests/testdata/github_issue.mf2.json
granary/tests/testdata/image.jpg
granary/tests/testdata/in_reply_to_with_h_cite.as.json
granary/tests/testdata/in_reply_to_with_h_cite.mf2-from-as.html
granary/tests/testdata/in_reply_to_with_h_cite.mf2-from-as.json
granary/tests/testdata/in_reply_to_with_h_cite.mf2-from-json.html
granary/tests/testdata/in_reply_to_with_h_cite.mf2.html
granary/tests/testdata/in_reply_to_with_h_cite.mf2.json
granary/tests/testdata/invalid_content_fields.as-from-feed.json
granary/tests/testdata/invalid_content_fields.feed.json
granary/tests/testdata/invite.as.json
granary/tests/testdata/invite.as2.json
granary/tests/testdata/invite.mf2.html
granary/tests/testdata/invite.mf2.json
granary/tests/testdata/like.as-from-bsky.json
granary/tests/testdata/like.as-from-mf2.json
granary/tests/testdata/like.as.json
granary/tests/testdata/like.as2.json
granary/tests/testdata/like.bsky-from-as.json
granary/tests/testdata/like.bsky.json
granary/tests/testdata/like.mf2.html
granary/tests/testdata/like.mf2.json
granary/tests/testdata/like_multiple_urls.as.json
granary/tests/testdata/like_multiple_urls.mf2.html
granary/tests/testdata/like_multiple_urls.mf2.json
granary/tests/testdata/like_of_object.as.json
granary/tests/testdata/like_of_object.as2.json
granary/tests/testdata/like_of_object.mf2.json
granary/tests/testdata/like_with_string_object_actor.as.json
granary/tests/testdata/like_with_string_object_actor.as2.json
granary/tests/testdata/like_with_summary.as.json
granary/tests/testdata/like_with_summary.mf2.html
granary/tests/testdata/multiple_types.as-from-mf2.json
granary/tests/testdata/multiple_types.mf2.json
granary/tests/testdata/multiple_types_like.as.json
granary/tests/testdata/multiple_types_like.mf2-from-as.json
granary/tests/testdata/multiple_types_repost.as.json
granary/tests/testdata/multiple_types_repost.mf2-from-as.json
granary/tests/testdata/nested_author.as-from-mf2.json
granary/tests/testdata/nested_author.as.json
granary/tests/testdata/nested_author.mf2-from-as.html
granary/tests/testdata/nested_author.mf2-from-as.json
granary/tests/testdata/nested_author.mf2-from-json.html
granary/tests/testdata/nested_author.mf2.html
granary/tests/testdata/nested_author.mf2.json
granary/tests/testdata/note.as-from-bsky.json
granary/tests/testdata/note.as-from-feed.json
granary/tests/testdata/note.as-from-mf2.json
granary/tests/testdata/note.as.json
granary/tests/testdata/note.as2.json
granary/tests/testdata/note.bsky-from-as.json
granary/tests/testdata/note.bsky.json
granary/tests/testdata/note.feed-from-as.json
granary/tests/testdata/note.mf2.html
granary/tests/testdata/note.mf2.json
granary/tests/testdata/note_mastodon_with_video.as.json
granary/tests/testdata/note_mastodon_with_video.as2-from-as.json
granary/tests/testdata/note_mastodon_with_video.as2.json
granary/tests/testdata/note_mastodon_with_video.bsky-from-as.json
granary/tests/testdata/note_public.as.json
granary/tests/testdata/note_public.as2.json
granary/tests/testdata/note_unlisted.as.json
granary/tests/testdata/note_unlisted.as2.json
granary/tests/testdata/note_with_article_attachment.as.json
granary/tests/testdata/note_with_article_attachment.bsky-from-as.json
granary/tests/testdata/note_with_article_attachment.mf2-from-as.json
granary/tests/testdata/note_with_article_tag_indices.as-from-bsky.json
granary/tests/testdata/note_with_article_tag_indices.as.json
granary/tests/testdata/note_with_article_tag_indices.bsky.json
granary/tests/testdata/note_with_article_tag_indices.mf2-from-as.json
granary/tests/testdata/note_with_article_tag_indices.mf2.html
granary/tests/testdata/note_with_audio_video.as.json
granary/tests/testdata/note_with_audio_video.mf2-from-as.json
granary/tests/testdata/note_with_audio_video.mf2.json
granary/tests/testdata/note_with_cite.as-from-mf2.json
granary/tests/testdata/note_with_cite.mf2.html
granary/tests/testdata/note_with_cite.mf2.json
granary/tests/testdata/note_with_composite_photo.as.json
granary/tests/testdata/note_with_composite_photo.mf2-from-as.json
granary/tests/testdata/note_with_composite_photo.mf2.html
granary/tests/testdata/note_with_composite_photo.mf2.json
granary/tests/testdata/note_with_custom_feed.as-from-bsky.json
granary/tests/testdata/note_with_custom_feed.bsky.json
granary/tests/testdata/note_with_hashtag.as.json
granary/tests/testdata/note_with_hashtag.as2.json
granary/tests/testdata/note_with_hashtag.mf2.html
granary/tests/testdata/note_with_hashtag.mf2.json
granary/tests/testdata/note_with_image_and_image_attachment.as.json
granary/tests/testdata/note_with_image_and_image_attachment.mf2-from-as.json
granary/tests/testdata/note_with_image_document_attachment.as-from-as2.json
granary/tests/testdata/note_with_image_document_attachment.as2.json
granary/tests/testdata/note_with_location_with_position.as.json
granary/tests/testdata/note_with_location_with_position.mf2-from-as.json
granary/tests/testdata/note_with_mention.as.json
granary/tests/testdata/note_with_mention.as2.json
granary/tests/testdata/note_with_mention.mf2.html
granary/tests/testdata/note_with_mention_linked_text.as.json
granary/tests/testdata/note_with_mention_linked_text.bsky.json
granary/tests/testdata/note_with_multiple_photos.as.json
granary/tests/testdata/note_with_multiple_photos.mf2.html
granary/tests/testdata/note_with_multiple_photos.mf2.json
granary/tests/testdata/note_with_person_tag.as.json
granary/tests/testdata/note_with_person_tag.mf2.html
granary/tests/testdata/note_with_person_tag.mf2.json
granary/tests/testdata/note_with_quotation.as-from-mf2.json
granary/tests/testdata/note_with_quotation.mf2.json
granary/tests/testdata/note_with_string_id_image.as.json
granary/tests/testdata/note_with_string_id_image.as2-from-as.json
granary/tests/testdata/note_with_string_id_image.as2.json
granary/tests/testdata/note_with_string_id_image.mf2-from-as.json
granary/tests/testdata/note_with_string_quotation.as-from-mf2.json
granary/tests/testdata/note_with_string_quotation.mf2.json
granary/tests/testdata/note_with_whitespace.as.json
granary/tests/testdata/note_with_whitespace.mf2-from-as.json
granary/tests/testdata/note_with_whitespace.mf2.html
granary/tests/testdata/question.as.json
granary/tests/testdata/question.as2.json
granary/tests/testdata/question_multiple_choice.as.json
granary/tests/testdata/question_multiple_choice.as2.json
granary/tests/testdata/quote.as-from-bsky.json
granary/tests/testdata/quote.as.json
granary/tests/testdata/quote.as2.json
granary/tests/testdata/quote.bsky-from-as.json
granary/tests/testdata/quote.bsky.json
granary/tests/testdata/quote_and_attachment.as.json
granary/tests/testdata/quote_and_attachment.bsky-from-as.json
granary/tests/testdata/quote_and_attachment.bsky.json
granary/tests/testdata/quote_and_image.as.json
granary/tests/testdata/quote_and_image.bsky-from-as.json
granary/tests/testdata/quote_and_image.bsky.json
granary/tests/testdata/quote_with_image.as.json
granary/tests/testdata/quote_with_image.bsky-from-as.json
granary/tests/testdata/quote_with_image.bsky.json
granary/tests/testdata/repost.as-from-bsky.json
granary/tests/testdata/repost.as-from-mf2.json
granary/tests/testdata/repost.as.json
granary/tests/testdata/repost.as2.json
granary/tests/testdata/repost.bsky-from-as.json
granary/tests/testdata/repost.bsky.json
granary/tests/testdata/repost.mf2.html
granary/tests/testdata/repost.mf2.json
granary/tests/testdata/repost_of_with_h_cite.as.json
granary/tests/testdata/repost_of_with_h_cite.mf2-from-as.html
granary/tests/testdata/repost_of_with_h_cite.mf2-from-as.json
granary/tests/testdata/repost_of_with_h_cite.mf2-from-json.html
granary/tests/testdata/repost_of_with_h_cite.mf2.html
granary/tests/testdata/repost_of_with_h_cite.mf2.json
granary/tests/testdata/rsvp.as.json
granary/tests/testdata/rsvp.as2.json
granary/tests/testdata/rsvp.mf2.html
granary/tests/testdata/rsvp.mf2.json
granary/tests/testdata/rsvp_multiple_composite_events.as-from-mf2.json
granary/tests/testdata/rsvp_multiple_composite_events.mf2.json
granary/tests/testdata/rsvp_multiple_events.as.json
granary/tests/testdata/rsvp_multiple_events.as2.json
granary/tests/testdata/rsvp_multiple_events.mf2.json
granary/tests/testdata/tag_of.as.json
granary/tests/testdata/tag_of.as2-from-as.json
granary/tests/testdata/tag_of.mf2.html
granary/tests/testdata/tag_of.mf2.json
granary/tests/testdata/undo_object_id.as.json
granary/tests/testdata/undo_object_id.as2.json
granary/tests/testdata/undo_repost.as.json
granary/tests/testdata/undo_repost.as2.json
granary/tests/testdata/unfollow.as.json
granary/tests/testdata/unfollow.as2.json
granary/tests/testdata/unfollow_multiple_urls.as-from-as2.json
granary/tests/testdata/unfollow_multiple_urls.as2.json
granary/tests/testdata/update_person.as.json
granary/tests/testdata/update_person.as2.json
granary/tests/testdata/video.as-from-as2.json
granary/tests/testdata/video.as2.json