Git Product home page Git Product logo

medup's Introduction

medup's People

Contributors

miry avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

medup's Issues

Downloads useless(?) HTML files

Also a complicated one and should therefore also only be done if there's nothing else to do. ๐Ÿ˜‰
Related to issue 21.

iFrames will usually result in html assets that don't contain the content but rather a bit HTML and much JS that will embedd an iFrame on it's own.

Maybe it would be better if there would be a better handler for this.

For example:

for some, very common things it would be good if there would be a dedicated handler. And for everything unknown it would probably be good to make a screenshot (see issue 21).

Dedicated handlers could be:

Add option to convert iFrames to images

This one is probably a complicated one and should only be done if there's nothing else to do. ๐Ÿ˜‰

See this post for example.

There's a GitHub code snipped embedded on the bottom.
If you want to archive the medium post with medup and the gist will be deleted, it will be gone forever.

So I guess it would be a good possibility to make a screenshot of the website in the frame, put it into the markdown and link the image to the original frame.
This way all information should stay archived.

There two possibilities to make a screenshot out of a page:

  1. Using a free API (users should provide their own API data obviously)
  2. Make a screenshot on your own. There are various Docker images with Chrome or Firefox integrated and there are Shards like marionette, selenium-webdriver or stoertebeker that allow controlling a browser from Crystal (see also this issue).

This has to be an option of course. Because making screenshots will obviously slow down the process.

Standardise logging

There are no logging options introduced in the app.
Require to format logs in standard way and with log level.

Support for hackernoon.com

Hey miry,

I just passed by to tell you that I'm still very happy with medup! It's really great!
And I thought that support for hackernoon.com would be great was well.

Have a nice day!

Share how to start using medup

I think to have multiple ways to use medup:

  • Video tutorials
  • Blog articles with specific cases: export and run in Jekyll, automate backup

Medium switched to Graphql

Found a new requests during browsing the pages:

image

Need to update client to use Graphql.

Sample request

POST | https://medium.com/_/graphql

Payload:

[{"operationName":"PostPageQuery","variables":{"postId":"66bc0c2d0f24","postMeteringOptions":null},"query":"query PostPageQuery($postId: ID!, $postMeteringOptions: PostMeteringOptions) {\n  postResult(id: $postId) {\n    __typename\n    ...PostResultError_postResult\n    ... on Post {\n      id\n      canonicalUrl\n      collection {\n        id\n        googleAnalyticsId\n        ...PostCollectionHeader_collection\n        ...PublisherHeader_publisher\n        ...NewsletterV3Promo_publisher_Collection\n        ...useShowCollectionNewsletterV3Promo_collection\n        __typename\n      }\n      content(postMeteringOptions: $postMeteringOptions) {\n        isLockedPreviewOnly\n        validatedShareKey\n        __typename\n      }\n      creator {\n        id\n        ...PublisherHeader_publisher\n        ...NewsletterV3Promo_publisher_User\n        ...SuspendedBannerLoader_user\n        __typename\n      }\n      customStyleSheet {\n        id\n        ...CustomThemeProvider_customStyleSheet\n        __typename\n      }\n      isPublished\n      isLocked\n      ...Wall_post\n      ...InteractivePostBody_post\n      ...WithResponsesSidebar_post\n      ...PostCanonicalizer_post\n      ...PostFooterActionsBar_post\n      ...PostHeader_post\n      ...PostBylineHeader_post\n      ...usePostUrl_post\n      ...buildBranchViewData_post\n      ...PostMetadata_post\n      ...useShowAuthorNewsletterV3Promo_post\n      ...SuspendedBannerLoader_post\n      ...Footer_post\n      ...OverflowMenuButtonWithNegativeSignal_post\n      __typename\n    }\n  }\n}\n\nfragment PostResultError_postResult on PostResult {\n  __typename\n  ... on Post {\n    id\n    __typename\n  }\n  ... on UnavailableForLegalReasons {\n    ...UnavailableForLegalReasonsScreen_unavailableForLegalReasons\n    __typename\n  }\n  ... on WithheldInCountry {\n    ...WithheldInCountryScreen_withheldInCountry\n    __typename\n  }\n}\n\nfragment UnavailableForLegalReasonsScreen_unavailableForLegalReasons on UnavailableForLegalReasons {\n  lumenId\n  __typename\n}\n\nfragment WithheldInCountryScreen_withheldInCountry on WithheldInCountry {\n  lumenId\n  __typename\n}\n\nfragment PostCollectionHeader_collection on Collection {\n  id\n  domain\n  name\n  slug\n  ...CollectionAvatar_collection\n  ...PublisherFollowButton_publisher\n  __typename\n}\n\nfragment CollectionAvatar_collection on Collection {\n  name\n  avatar {\n    id\n    __typename\n  }\n  ...collectionUrl_collection\n  __typename\n  id\n}\n\nfragment collectionUrl_collection on Collection {\n  id\n  domain\n  slug\n  __typename\n}\n\nfragment PublisherFollowButton_publisher on Publisher {\n  __typename\n  ... on Collection {\n    ...CollectionFollowButton_collection\n    __typename\n    id\n  }\n  ... on User {\n    ...UserFollowButton_user\n    __typename\n    id\n  }\n}\n\nfragment CollectionFollowButton_collection on Collection {\n  __typename\n  id\n  name\n  canToggleEmail\n  slug\n  ...collectionUrl_collection\n  ...SusiClickable_collection\n}\n\nfragment SusiClickable_collection on Collection {\n  ...SusiContainer_collection\n  __typename\n  id\n}\n\nfragment SusiContainer_collection on Collection {\n  name\n  ...SignInOptions_collection\n  ...SignUpOptions_collection\n  __typename\n  id\n}\n\nfragment SignInOptions_collection on Collection {\n  id\n  name\n  __typename\n}\n\nfragment SignUpOptions_collection on Collection {\n  id\n  name\n  __typename\n}\n\nfragment UserFollowButton_user on User {\n  ...UserFollowButtonSignedIn_user\n  ...UserFollowButtonSignedOut_user\n  __typename\n  id\n}\n\nfragment UserFollowButtonSignedIn_user on User {\n  id\n  __typename\n}\n\nfragment UserFollowButtonSignedOut_user on User {\n  id\n  ...SusiClickable_user\n  __typename\n}\n\nfragment SusiClickable_user on User {\n  ...SusiContainer_user\n  __typename\n  id\n}\n\nfragment SusiContainer_user on User {\n  ...SignInOptions_user\n  ...SignUpOptions_user\n  __typename\n  id\n}\n\nfragment SignInOptions_user on User {\n  id\n  name\n  __typename\n}\n\nfragment SignUpOptions_user on User {\n  id\n  name\n  __typename\n}\n\nfragment PublisherHeader_publisher on Publisher {\n  id\n  ...PublisherHeaderBackground_publisher\n  ...PublisherHeaderNameplate_publisher\n  ...PublisherHeaderActions_publisher\n  ...PublisherHeaderNav_publisher\n  __typename\n}\n\nfragment PublisherHeaderBackground_publisher on Publisher {\n  __typename\n  id\n  customStyleSheet {\n    ...PublisherHeaderBackground_customStyleSheet\n    __typename\n    id\n  }\n  ... on Collection {\n    colorPalette {\n      tintBackgroundSpectrum {\n        backgroundColor\n        __typename\n      }\n      __typename\n    }\n    isAuroraVisible\n    legacyHeaderBackgroundImage {\n      id\n      originalWidth\n      focusPercentX\n      focusPercentY\n      __typename\n    }\n    ...collectionTintBackgroundTheme_collection\n    __typename\n    id\n  }\n  ...publisherUrl_publisher\n}\n\nfragment PublisherHeaderBackground_customStyleSheet on CustomStyleSheet {\n  id\n  global {\n    colorPalette {\n      background {\n        rgb\n        __typename\n      }\n      __typename\n    }\n    __typename\n  }\n  header {\n    headerScale\n    backgroundImageDisplayMode\n    backgroundImageVerticalAlignment\n    backgroundColorDisplayMode\n    backgroundColor {\n      alpha\n      rgb\n      ...getHexFromColorValue_colorValue\n      ...getOpaqueHexFromColorValue_colorValue\n      __typename\n    }\n    secondaryBackgroundColor {\n      ...getHexFromColorValue_colorValue\n      __typename\n    }\n    postBackgroundColor {\n      ...getHexFromColorValue_colorValue\n      __typename\n    }\n    backgroundImage {\n      ...MetaHeaderBackground_imageMetadata\n      __typename\n    }\n    __typename\n  }\n  __typename\n}\n\nfragment getHexFromColorValue_colorValue on ColorValue {\n  rgb\n  alpha\n  __typename\n}\n\nfragment getOpaqueHexFromColorValue_colorValue on ColorValue {\n  rgb\n  __typename\n}\n\nfragment MetaHeaderBackground_imageMetadata on ImageMetadata {\n  id\n  originalWidth\n  __typename\n}\n\nfragment collectionTintBackgroundTheme_collection on Collection {\n  colorPalette {\n    ...collectionTintBackgroundTheme_colorPalette\n    __typename\n  }\n  customStyleSheet {\n    id\n    ...collectionTintBackgroundTheme_customStyleSheet\n    __typename\n  }\n  __typename\n  id\n}\n\nfragment collectionTintBackgroundTheme_colorPalette on ColorPalette {\n  ...customTintBackgroundTheme_colorPalette\n  __typename\n}\n\nfragment customTintBackgroundTheme_colorPalette on ColorPalette {\n  tintBackgroundSpectrum {\n    ...ThemeUtil_colorSpectrum\n    __typename\n  }\n  __typename\n}\n\nfragment ThemeUtil_colorSpectrum on ColorSpectrum {\n  backgroundColor\n  ...ThemeUtilInterpolateHelpers_colorSpectrum\n  __typename\n}\n\nfragment ThemeUtilInterpolateHelpers_colorSpectrum on ColorSpectrum {\n  colorPoints {\n    ...ThemeUtil_colorPoint\n    __typename\n  }\n  __typename\n}\n\nfragment ThemeUtil_colorPoint on ColorPoint {\n  color\n  point\n  __typename\n}\n\nfragment collectionTintBackgroundTheme_customStyleSheet on CustomStyleSheet {\n  id\n  ...customTintBackgroundTheme_customStyleSheet\n  __typename\n}\n\nfragment customTintBackgroundTheme_customStyleSheet on CustomStyleSheet {\n  id\n  global {\n    colorPalette {\n      primary {\n        colorPalette {\n          ...customTintBackgroundTheme_colorPalette\n          __typename\n        }\n        __typename\n      }\n      __typename\n    }\n    __typename\n  }\n  __typename\n}\n\nfragment publisherUrl_publisher on Publisher {\n  id\n  __typename\n  ... on Collection {\n    ...collectionUrl_collection\n    __typename\n    id\n  }\n  ... on User {\n    ...userUrl_user\n    __typename\n    id\n  }\n}\n\nfragment userUrl_user on User {\n  __typename\n  id\n  customDomainState {\n    live {\n      domain\n      __typename\n    }\n    __typename\n  }\n  hasSubdomain\n  username\n}\n\nfragment PublisherHeaderNameplate_publisher on Publisher {\n  ...PublisherAvatar_publisher\n  ...PublisherHeaderLogo_publisher\n  ...PublisherFollowerCount_publisher\n  __typename\n}\n\nfragment PublisherAvatar_publisher on Publisher {\n  __typename\n  ... on Collection {\n    id\n    ...CollectionAvatar_collection\n    __typename\n  }\n  ... on User {\n    id\n    ...UserAvatar_user\n    __typename\n  }\n}\n\nfragment UserAvatar_user on User {\n  __typename\n  id\n  imageId\n  mediumMemberAt\n  name\n  username\n  ...userUrl_user\n}\n\nfragment PublisherHeaderLogo_publisher on Publisher {\n  __typename\n  id\n  customStyleSheet {\n    id\n    header {\n      logoImage {\n        id\n        originalHeight\n        originalWidth\n        __typename\n      }\n      appNameColor {\n        ...getHexFromColorValue_colorValue\n        __typename\n      }\n      appNameTreatment\n      __typename\n    }\n    __typename\n  }\n  name\n  ... on Collection {\n    isAuroraVisible\n    logo {\n      id\n      originalHeight\n      originalWidth\n      __typename\n    }\n    __typename\n    id\n  }\n  ...CustomHeaderTooltip_publisher\n  ...publisherUrl_publisher\n}\n\nfragment CustomHeaderTooltip_publisher on Publisher {\n  __typename\n  id\n  customStyleSheet {\n    id\n    header {\n      appNameTreatment\n      nameTreatment\n      __typename\n    }\n    __typename\n  }\n  ... on Collection {\n    isAuroraVisible\n    slug\n    __typename\n    id\n  }\n}\n\nfragment PublisherFollowerCount_publisher on Publisher {\n  __typename\n  id\n  ... on Collection {\n    slug\n    subscriberCount\n    __typename\n    id\n  }\n  ... on User {\n    socialStats {\n      followerCount\n      __typename\n    }\n    username\n    __typename\n    id\n  }\n}\n\nfragment PublisherHeaderActions_publisher on Publisher {\n  __typename\n  ...MetaHeaderPubMenu_publisher\n  ... on Collection {\n    ...CollectionFollowButton_collection\n    __typename\n    id\n  }\n  ... on User {\n    ...FollowAndSubscribeButtons_user\n    __typename\n    id\n  }\n}\n\nfragment MetaHeaderPubMenu_publisher on Publisher {\n  __typename\n  ... on Collection {\n    ...MetaHeaderPubMenu_publisher_collection\n    __typename\n    id\n  }\n  ... on User {\n    ...MetaHeaderPubMenu_publisher_user\n    __typename\n    id\n  }\n}\n\nfragment MetaHeaderPubMenu_publisher_collection on Collection {\n  id\n  slug\n  name\n  domain\n  newsletterV3 {\n    slug\n    __typename\n    id\n  }\n  ...MutePopoverOptions_collection\n  __typename\n}\n\nfragment MutePopoverOptions_collection on Collection {\n  id\n  __typename\n}\n\nfragment MetaHeaderPubMenu_publisher_user on User {\n  id\n  username\n  ...MutePopoverOptions_creator\n  __typename\n}\n\nfragment MutePopoverOptions_creator on User {\n  id\n  __typename\n}\n\nfragment FollowAndSubscribeButtons_user on User {\n  ...UserFollowButton_user\n  ...UserSubscribeButton_user\n  __typename\n  id\n}\n\nfragment UserSubscribeButton_user on User {\n  id\n  isPartnerProgramEnrolled\n  name\n  viewerEdge {\n    id\n    isFollowing\n    isUser\n    __typename\n  }\n  viewerIsUser\n  newsletterV3 {\n    id\n    ...useNewsletterV3Subscription_newsletterV3\n    __typename\n  }\n  ...useNewsletterV3Subscription_user\n  ...MembershipUpsellModal_user\n  __typename\n}\n\nfragment useNewsletterV3Subscription_newsletterV3 on NewsletterV3 {\n  id\n  type\n  slug\n  name\n  collection {\n    slug\n    __typename\n    id\n  }\n  user {\n    id\n    name\n    username\n    newsletterV3 {\n      id\n      __typename\n    }\n    __typename\n  }\n  __typename\n}\n\nfragment useNewsletterV3Subscription_user on User {\n  id\n  username\n  newsletterV3 {\n    ...useNewsletterV3Subscription_newsletterV3\n    __typename\n    id\n  }\n  __typename\n}\n\nfragment MembershipUpsellModal_user on User {\n  id\n  name\n  imageId\n  postSubscribeMembershipUpsellShownAt\n  newsletterV3 {\n    id\n    __typename\n  }\n  __typename\n}\n\nfragment PublisherHeaderNav_publisher on Publisher {\n  __typename\n  id\n  customStyleSheet {\n    navigation {\n      navItems {\n        name\n        ...PublisherHeaderNavLink_headerNavigationItem\n        __typename\n      }\n      __typename\n    }\n    __typename\n    id\n  }\n  ...PublisherHeaderNavLink_publisher\n  ... on Collection {\n    domain\n    isAuroraVisible\n    slug\n    navItems {\n      tagSlug\n      title\n      url\n      __typename\n    }\n    __typename\n    id\n  }\n  ... on User {\n    customDomainState {\n      live {\n        domain\n        __typename\n      }\n      __typename\n    }\n    hasSubdomain\n    username\n    about\n    bookAuthor {\n      id\n      __typename\n    }\n    homePostsPublished: homepagePostsConnection(paging: {limit: 1}) {\n      posts {\n        id\n        __typename\n      }\n      __typename\n    }\n    __typename\n    id\n  }\n}\n\nfragment PublisherHeaderNavLink_headerNavigationItem on HeaderNavigationItem {\n  href\n  name\n  tags {\n    id\n    normalizedTagSlug\n    __typename\n  }\n  type\n  __typename\n}\n\nfragment PublisherHeaderNavLink_publisher on Publisher {\n  __typename\n  id\n  ... on Collection {\n    slug\n    __typename\n    id\n  }\n}\n\nfragment NewsletterV3Promo_publisher_Collection on Collection {\n  id\n  slug\n  domain\n  name\n  newsletterV3 {\n    id\n    ...NewsletterV3Promo_newsletterV3\n    __typename\n  }\n  __typename\n}\n\nfragment NewsletterV3Promo_newsletterV3 on NewsletterV3 {\n  slug\n  name\n  description\n  promoHeadline\n  promoBody\n  ...NewsletterV3AmpButton_newsletterV3\n  ...NewsletterV3SubscribeButton_newsletterV3\n  ...NewsletterV3SubscribeByEmail_newsletterV3\n  __typename\n  id\n}\n\nfragment NewsletterV3AmpButton_newsletterV3 on NewsletterV3 {\n  id\n  collection {\n    ...collectionDefaultBackgroundTheme_collection\n    __typename\n    id\n  }\n  __typename\n}\n\nfragment collectionDefaultBackgroundTheme_collection on Collection {\n  colorPalette {\n    ...collectionDefaultBackgroundTheme_colorPalette\n    __typename\n  }\n  customStyleSheet {\n    id\n    ...collectionDefaultBackgroundTheme_customStyleSheet\n    __typename\n  }\n  __typename\n  id\n}\n\nfragment collectionDefaultBackgroundTheme_colorPalette on ColorPalette {\n  ...customDefaultBackgroundTheme_colorPalette\n  __typename\n}\n\nfragment customDefaultBackgroundTheme_colorPalette on ColorPalette {\n  highlightSpectrum {\n    ...ThemeUtil_colorSpectrum\n    __typename\n  }\n  defaultBackgroundSpectrum {\n    ...ThemeUtil_colorSpectrum\n    __typename\n  }\n  tintBackgroundSpectrum {\n    ...ThemeUtil_colorSpectrum\n    __typename\n  }\n  __typename\n}\n\nfragment collectionDefaultBackgroundTheme_customStyleSheet on CustomStyleSheet {\n  id\n  ...customDefaultBackgroundTheme_customStyleSheet\n  __typename\n}\n\nfragment customDefaultBackgroundTheme_customStyleSheet on CustomStyleSheet {\n  id\n  global {\n    colorPalette {\n      primary {\n        colorPalette {\n          ...customDefaultBackgroundTheme_colorPalette\n          __typename\n        }\n        __typename\n      }\n      background {\n        colorPalette {\n          ...customDefaultBackgroundTheme_colorPalette\n          __typename\n        }\n        __typename\n      }\n      __typename\n    }\n    __typename\n  }\n  __typename\n}\n\nfragment NewsletterV3SubscribeButton_newsletterV3 on NewsletterV3 {\n  id\n  name\n  slug\n  type\n  user {\n    id\n    name\n    username\n    __typename\n  }\n  collection {\n    slug\n    ...SusiClickable_collection\n    ...collectionDefaultBackgroundTheme_collection\n    __typename\n    id\n  }\n  ...SusiClickable_newsletterV3\n  ...useNewsletterV3Subscription_newsletterV3\n  __typename\n}\n\nfragment SusiClickable_newsletterV3 on NewsletterV3 {\n  ...SusiContainer_newsletterV3\n  __typename\n  id\n}\n\nfragment SusiContainer_newsletterV3 on NewsletterV3 {\n  ...SignInOptions_newsletterV3\n  ...SignUpOptions_newsletterV3\n  __typename\n  id\n}\n\nfragment SignInOptions_newsletterV3 on NewsletterV3 {\n  id\n  name\n  __typename\n}\n\nfragment SignUpOptions_newsletterV3 on NewsletterV3 {\n  id\n  name\n  __typename\n}\n\nfragment NewsletterV3SubscribeByEmail_newsletterV3 on NewsletterV3 {\n  id\n  slug\n  type\n  user {\n    id\n    name\n    username\n    __typename\n  }\n  collection {\n    ...collectionDefaultBackgroundTheme_collection\n    ...collectionUrl_collection\n    __typename\n    id\n  }\n  __typename\n}\n\nfragment useShowCollectionNewsletterV3Promo_collection on Collection {\n  id\n  slug\n  newsletterV3 {\n    slug\n    showPromo\n    __typename\n    id\n  }\n  __typename\n}\n\nfragment NewsletterV3Promo_publisher_User on User {\n  id\n  username\n  name\n  viewerIsUser\n  newsletterV3 {\n    id\n    ...NewsletterV3Promo_newsletterV3\n    __typename\n  }\n  __typename\n}\n\nfragment SuspendedBannerLoader_user on User {\n  id\n  isSuspended\n  __typename\n}\n\nfragment CustomThemeProvider_customStyleSheet on CustomStyleSheet {\n  id\n  ...customDefaultBackgroundTheme_customStyleSheet\n  ...customStyleSheetFontTheme_customStyleSheet\n  __typename\n}\n\nfragment customStyleSheetFontTheme_customStyleSheet on CustomStyleSheet {\n  id\n  global {\n    fonts {\n      font1 {\n        name\n        __typename\n      }\n      font2 {\n        name\n        __typename\n      }\n      font3 {\n        name\n        __typename\n      }\n      __typename\n    }\n    __typename\n  }\n  __typename\n}\n\nfragment Wall_post on Post {\n  content(postMeteringOptions: $postMeteringOptions) {\n    isLockedPreviewOnly\n    __typename\n  }\n  isLocked\n  isMarkedPaywallOnly\n  ...MemberOnlyWall_post\n  ...PayWall_post\n  ...RegWall_post\n  __typename\n  id\n}\n\nfragment MemberOnlyWall_post on Post {\n  id\n  creator {\n    id\n    name\n    username\n    ...useShouldShowEntityDrivenSubscription_creator\n    ...EntityDrivenSubscriptionLandingPageScreen_writer\n    __typename\n  }\n  __typename\n}\n\nfragment useShouldShowEntityDrivenSubscription_creator on User {\n  id\n  __typename\n}\n\nfragment EntityDrivenSubscriptionLandingPageScreen_writer on User {\n  name\n  imageId\n  id\n  username\n  isPartnerProgramEnrolled\n  referredMembershipCustomHeadline\n  referredMembershipCustomBody\n  customStyleSheet {\n    ...CustomThemeProvider_customStyleSheet\n    ...CustomBackgroundWrapper_customStyleSheet\n    ...MetaHeader_customStyleSheet\n    __typename\n    id\n  }\n  ...MetaHeader_publisher\n  ...userUrl_user\n  __typename\n}\n\nfragment CustomBackgroundWrapper_customStyleSheet on CustomStyleSheet {\n  id\n  global {\n    colorPalette {\n      background {\n        ...getHexFromColorValue_colorValue\n        __typename\n      }\n      __typename\n    }\n    __typename\n  }\n  __typename\n}\n\nfragment MetaHeader_customStyleSheet on CustomStyleSheet {\n  id\n  header {\n    headerScale\n    horizontalAlignment\n    __typename\n  }\n  ...MetaHeaderBackground_customStyleSheet\n  ...MetaHeaderEngagement_customStyleSheet\n  ...MetaHeaderLogo_customStyleSheet\n  ...MetaHeaderNavVertical_customStyleSheet\n  ...MetaHeaderTagline_customStyleSheet\n  ...MetaHeaderThemeProvider_customStyleSheet\n  __typename\n}\n\nfragment MetaHeaderBackground_customStyleSheet on CustomStyleSheet {\n  id\n  header {\n    headerScale\n    backgroundImageDisplayMode\n    backgroundImageVerticalAlignment\n    backgroundColorDisplayMode\n    backgroundColor {\n      ...getHexFromColorValue_colorValue\n      ...getOpaqueHexFromColorValue_colorValue\n      __typename\n    }\n    secondaryBackgroundColor {\n      ...getHexFromColorValue_colorValue\n      __typename\n    }\n    postBackgroundColor {\n      ...getHexFromColorValue_colorValue\n      __typename\n    }\n    backgroundImage {\n      ...MetaHeaderBackground_imageMetadata\n      __typename\n    }\n    __typename\n  }\n  __typename\n}\n\nfragment MetaHeaderEngagement_customStyleSheet on CustomStyleSheet {\n  ...MetaHeaderNav_customStyleSheet\n  __typename\n  id\n}\n\nfragment MetaHeaderNav_customStyleSheet on CustomStyleSheet {\n  id\n  navigation {\n    navItems {\n      ...MetaHeaderNav_headerNavigationItem\n      __typename\n    }\n    __typename\n  }\n  __typename\n}\n\nfragment MetaHeaderNav_headerNavigationItem on HeaderNavigationItem {\n  name\n  tagSlugs\n  ...MetaHeaderNavLink_headerNavigationItem\n  __typename\n}\n\nfragment MetaHeaderNavLink_headerNavigationItem on HeaderNavigationItem {\n  name\n  ...getNavItemHref_headerNavigationItem\n  __typename\n}\n\nfragment getNavItemHref_headerNavigationItem on HeaderNavigationItem {\n  href\n  type\n  tags {\n    id\n    normalizedTagSlug\n    __typename\n  }\n  __typename\n}\n\nfragment MetaHeaderLogo_customStyleSheet on CustomStyleSheet {\n  id\n  header {\n    nameColor {\n      ...getHexFromColorValue_colorValue\n      __typename\n    }\n    nameTreatment\n    postNameTreatment\n    logoImage {\n      ...MetaHeaderLogo_imageMetadata\n      __typename\n    }\n    logoScale\n    __typename\n  }\n  __typename\n}\n\nfragment MetaHeaderLogo_imageMetadata on ImageMetadata {\n  id\n  originalWidth\n  originalHeight\n  ...PublisherLogo_image\n  __typename\n}\n\nfragment PublisherLogo_image on ImageMetadata {\n  id\n  originalHeight\n  originalWidth\n  __typename\n}\n\nfragment MetaHeaderNavVertical_customStyleSheet on CustomStyleSheet {\n  id\n  navigation {\n    navItems {\n      ...MetaHeaderNavLink_headerNavigationItem\n      __typename\n    }\n    __typename\n  }\n  ...MetaHeaderNav_customStyleSheet\n  __typename\n}\n\nfragment MetaHeaderTagline_customStyleSheet on CustomStyleSheet {\n  id\n  header {\n    taglineColor {\n      ...getHexFromColorValue_colorValue\n      __typename\n    }\n    taglineTreatment\n    __typename\n  }\n  __typename\n}\n\nfragment MetaHeaderThemeProvider_customStyleSheet on CustomStyleSheet {\n  id\n  ...useMetaHeaderTheme_customStyleSheet\n  __typename\n}\n\nfragment useMetaHeaderTheme_customStyleSheet on CustomStyleSheet {\n  ...customDefaultBackgroundTheme_customStyleSheet\n  global {\n    colorPalette {\n      primary {\n        colorPalette {\n          tintBackgroundSpectrum {\n            ...ThemeUtil_colorSpectrum\n            __typename\n          }\n          __typename\n        }\n        __typename\n      }\n      __typename\n    }\n    __typename\n  }\n  header {\n    backgroundColor {\n      colorPalette {\n        tintBackgroundSpectrum {\n          ...ThemeUtil_colorSpectrum\n          __typename\n        }\n        __typename\n      }\n      __typename\n    }\n    postBackgroundColor {\n      colorPalette {\n        tintBackgroundSpectrum {\n          ...ThemeUtil_colorSpectrum\n          __typename\n        }\n        __typename\n      }\n      __typename\n    }\n    backgroundImage {\n      id\n      __typename\n    }\n    __typename\n  }\n  __typename\n  id\n}\n\nfragment MetaHeader_publisher on Publisher {\n  __typename\n  name\n  ...MetaHeaderEngagement_publisher\n  ...MetaHeaderLogo_publisher\n  ...MetaHeaderNavVertical_publisher\n  ...MetaHeaderTagline_publisher\n  ...MetaHeaderThemeProvider_publisher\n  ...MetaHeaderActions_publisher\n  ...MetaHeaderTop_publisher\n  ...MetaHeaderNavLink_publisher\n  ... on Collection {\n    id\n    favicon {\n      id\n      __typename\n    }\n    tagline\n    ...CollectionNavigationContextProvider_collection\n    __typename\n  }\n  ... on User {\n    id\n    bio\n    ...UserProfileCatalogsLink_publisher\n    __typename\n  }\n}\n\nfragment MetaHeaderEngagement_publisher on Publisher {\n  __typename\n  ...MetaHeaderNav_publisher\n  ...PublisherAboutLink_publisher\n  ...PublisherFollowButton_publisher\n  ...PublisherFollowerCount_publisher\n  ...UserProfileBooksLink_publisher\n  ... on Collection {\n    creator {\n      id\n      __typename\n    }\n    customStyleSheet {\n      id\n      ...CustomThemeProvider_customStyleSheet\n      __typename\n    }\n    __typename\n    id\n  }\n  ... on User {\n    ...UserProfileCatalogsLink_publisher\n    ...UserSubscribeButton_user\n    customStyleSheet {\n      id\n      ...CustomThemeProvider_customStyleSheet\n      __typename\n    }\n    __typename\n    id\n  }\n}\n\nfragment MetaHeaderNav_publisher on Publisher {\n  id\n  ...MetaHeaderNavLink_publisher\n  __typename\n}\n\nfragment MetaHeaderNavLink_publisher on Publisher {\n  id\n  ...getNavItemHref_publisher\n  __typename\n}\n\nfragment getNavItemHref_publisher on Publisher {\n  id\n  ...publisherUrl_publisher\n  __typename\n}\n\nfragment PublisherAboutLink_publisher on Publisher {\n  __typename\n  id\n  ... on Collection {\n    slug\n    __typename\n    id\n  }\n  ... on User {\n    ...userUrl_user\n    __typename\n    id\n  }\n}\n\nfragment UserProfileBooksLink_publisher on Publisher {\n  __typename\n  id\n  ... on User {\n    ...userUrl_user\n    bookAuthor {\n      ... on Author {\n        id\n        __typename\n      }\n      __typename\n      id\n    }\n    __typename\n    id\n  }\n}\n\nfragment UserProfileCatalogsLink_publisher on Publisher {\n  __typename\n  id\n  ... on User {\n    ...userUrl_user\n    homePostsPublished: homepagePostsConnection(paging: {limit: 1}) {\n      posts {\n        id\n        __typename\n      }\n      __typename\n    }\n    __typename\n    id\n  }\n}\n\nfragment MetaHeaderLogo_publisher on Publisher {\n  __typename\n  id\n  name\n  ... on Collection {\n    logo {\n      ...MetaHeaderLogo_imageMetadata\n      ...PublisherLogo_image\n      __typename\n      id\n    }\n    __typename\n    id\n  }\n  ...auroraHooks_publisher\n}\n\nfragment auroraHooks_publisher on Publisher {\n  __typename\n  ... on Collection {\n    isAuroraEligible\n    isAuroraVisible\n    viewerEdge {\n      id\n      isEditor\n      __typename\n    }\n    __typename\n    id\n  }\n  ... on User {\n    isAuroraVisible\n    __typename\n    id\n  }\n}\n\nfragment MetaHeaderNavVertical_publisher on Publisher {\n  id\n  ...PublisherAboutLink_publisher\n  ...MetaHeaderNav_publisher\n  ...MetaHeaderNavLink_publisher\n  __typename\n}\n\nfragment MetaHeaderTagline_publisher on Publisher {\n  __typename\n  ... on Collection {\n    tagline\n    __typename\n    id\n  }\n  ... on User {\n    bio\n    __typename\n    id\n  }\n}\n\nfragment MetaHeaderThemeProvider_publisher on Publisher {\n  __typename\n  customStyleSheet {\n    ...MetaHeaderThemeProvider_customStyleSheet\n    __typename\n    id\n  }\n  ... on Collection {\n    colorPalette {\n      ...customDefaultBackgroundTheme_colorPalette\n      __typename\n    }\n    __typename\n    id\n  }\n}\n\nfragment MetaHeaderActions_publisher on Publisher {\n  __typename\n  ...MetaHeaderPubMenu_publisher\n  ...SearchWidget_publisher\n  ... on Collection {\n    id\n    creator {\n      id\n      __typename\n    }\n    customStyleSheet {\n      navigation {\n        navItems {\n          name\n          __typename\n        }\n        __typename\n      }\n      __typename\n      id\n    }\n    ...CollectionAvatar_collection\n    ...CollectionMetabarActionsPopover_collection\n    ...MetaHeaderActions_collection_common\n    __typename\n  }\n  ... on User {\n    id\n    ...UserAvatar_user\n    __typename\n  }\n}\n\nfragment SearchWidget_publisher on Publisher {\n  __typename\n  ... on Collection {\n    id\n    slug\n    name\n    domain\n    __typename\n  }\n  ... on User {\n    id\n    name\n    __typename\n  }\n  ...algoliaSearch_publisher\n}\n\nfragment algoliaSearch_publisher on Publisher {\n  __typename\n  id\n}\n\nfragment CollectionMetabarActionsPopover_collection on Collection {\n  id\n  slug\n  isAuroraEligible\n  isAuroraVisible\n  newsletterV3 {\n    id\n    slug\n    __typename\n  }\n  ...collectionUrl_collection\n  __typename\n}\n\nfragment MetaHeaderActions_collection_common on Collection {\n  creator {\n    id\n    __typename\n  }\n  __typename\n  id\n}\n\nfragment MetaHeaderTop_publisher on Publisher {\n  __typename\n  ... on Collection {\n    slug\n    ...CollectionMetabarActionsPopover_collection\n    ...CollectionAvatar_collection\n    ...MetaHeaderTop_collection\n    __typename\n    id\n  }\n  ... on User {\n    username\n    id\n    __typename\n  }\n}\n\nfragment MetaHeaderTop_collection on Collection {\n  id\n  creator {\n    id\n    __typename\n  }\n  __typename\n}\n\nfragment CollectionNavigationContextProvider_collection on Collection {\n  id\n  domain\n  slug\n  isAuroraVisible\n  __typename\n}\n\nfragment PayWall_post on Post {\n  id\n  creator {\n    id\n    name\n    imageId\n    referredMembershipCustomHeadline\n    referredMembershipCustomBody\n    __typename\n  }\n  __typename\n}\n\nfragment RegWall_post on Post {\n  id\n  lockedSource\n  ...SusiClickable_post\n  __typename\n}\n\nfragment SusiClickable_post on Post {\n  id\n  mediumUrl\n  ...SusiContainer_post\n  __typename\n}\n\nfragment SusiContainer_post on Post {\n  id\n  __typename\n}\n\nfragment InteractivePostBody_post on Post {\n  id\n  content(postMeteringOptions: $postMeteringOptions) {\n    isLockedPreviewOnly\n    bodyModel {\n      ...PostBody_bodyModel\n      paragraphs {\n        ...HighlighSegmentContext_paragraph\n        ...NormalizeHighlights_paragraph\n        __typename\n      }\n      __typename\n    }\n    __typename\n  }\n  creator {\n    id\n    allowNotes\n    ...PostBody_creator\n    __typename\n  }\n  ...ActiveSelectionContext_post\n  __typename\n}\n\nfragment PostBody_bodyModel on RichText {\n  sections {\n    name\n    startIndex\n    textLayout\n    imageLayout\n    backgroundImage {\n      id\n      originalHeight\n      originalWidth\n      __typename\n    }\n    videoLayout\n    backgroundVideo {\n      videoId\n      originalHeight\n      originalWidth\n      previewImageId\n      __typename\n    }\n    __typename\n  }\n  paragraphs {\n    id\n    ...PostBodySection_paragraph\n    __typename\n  }\n  ...normalizedBodyModel_richText\n  __typename\n}\n\nfragment PostBodySection_paragraph on Paragraph {\n  name\n  ...PostBodyParagraph_paragraph\n  __typename\n  id\n}\n\nfragment PostBodyParagraph_paragraph on Paragraph {\n  name\n  type\n  ...ImageParagraph_paragraph\n  ...TextParagraph_paragraph\n  ...IframeParagraph_paragraph\n  ...MixtapeParagraph_paragraph\n  __typename\n  id\n}\n\nfragment ImageParagraph_paragraph on Paragraph {\n  href\n  layout\n  metadata {\n    id\n    originalHeight\n    originalWidth\n    focusPercentX\n    focusPercentY\n    alt\n    __typename\n  }\n  ...Markups_paragraph\n  ...ParagraphRefsMapContext_paragraph\n  ...PostAnnotationsMarker_paragraph\n  __typename\n  id\n}\n\nfragment Markups_paragraph on Paragraph {\n  name\n  text\n  hasDropCap\n  dropCapImage {\n    ...MarkupNode_data_dropCapImage\n    __typename\n    id\n  }\n  markups {\n    type\n    start\n    end\n    href\n    anchorType\n    userId\n    linkMetadata {\n      httpStatus\n      __typename\n    }\n    __typename\n  }\n  __typename\n  id\n}\n\nfragment MarkupNode_data_dropCapImage on ImageMetadata {\n  ...DropCap_image\n  __typename\n  id\n}\n\nfragment DropCap_image on ImageMetadata {\n  id\n  originalHeight\n  originalWidth\n  __typename\n}\n\nfragment ParagraphRefsMapContext_paragraph on Paragraph {\n  id\n  name\n  text\n  __typename\n}\n\nfragment PostAnnotationsMarker_paragraph on Paragraph {\n  ...PostViewNoteCard_paragraph\n  __typename\n  id\n}\n\nfragment PostViewNoteCard_paragraph on Paragraph {\n  name\n  __typename\n  id\n}\n\nfragment TextParagraph_paragraph on Paragraph {\n  type\n  hasDropCap\n  ...Markups_paragraph\n  ...ParagraphRefsMapContext_paragraph\n  __typename\n  id\n}\n\nfragment IframeParagraph_paragraph on Paragraph {\n  iframe {\n    mediaResource {\n      id\n      iframeSrc\n      iframeHeight\n      iframeWidth\n      title\n      __typename\n    }\n    __typename\n  }\n  layout\n  ...getEmbedlyCardUrlParams_paragraph\n  ...Markups_paragraph\n  __typename\n  id\n}\n\nfragment getEmbedlyCardUrlParams_paragraph on Paragraph {\n  type\n  iframe {\n    mediaResource {\n      iframeSrc\n      __typename\n    }\n    __typename\n  }\n  __typename\n  id\n}\n\nfragment MixtapeParagraph_paragraph on Paragraph {\n  type\n  mixtapeMetadata {\n    href\n    mediaResource {\n      mediumCatalog {\n        id\n        __typename\n      }\n      __typename\n    }\n    __typename\n  }\n  ...GenericMixtapeParagraph_paragraph\n  __typename\n  id\n}\n\nfragment GenericMixtapeParagraph_paragraph on Paragraph {\n  text\n  mixtapeMetadata {\n    href\n    thumbnailImageId\n    __typename\n  }\n  markups {\n    start\n    end\n    type\n    href\n    __typename\n  }\n  __typename\n  id\n}\n\nfragment normalizedBodyModel_richText on RichText {\n  paragraphs {\n    markups {\n      type\n      __typename\n    }\n    ...getParagraphHighlights_paragraph\n    ...getParagraphPrivateNotes_paragraph\n    __typename\n  }\n  sections {\n    startIndex\n    ...getSectionEndIndex_section\n    __typename\n  }\n  ...getParagraphStyles_richText\n  ...getParagraphSpaces_richText\n  __typename\n}\n\nfragment getParagraphHighlights_paragraph on Paragraph {\n  name\n  __typename\n  id\n}\n\nfragment getParagraphPrivateNotes_paragraph on Paragraph {\n  name\n  __typename\n  id\n}\n\nfragment getSectionEndIndex_section on Section {\n  startIndex\n  __typename\n}\n\nfragment getParagraphStyles_richText on RichText {\n  paragraphs {\n    text\n    type\n    __typename\n  }\n  sections {\n    ...getSectionEndIndex_section\n    __typename\n  }\n  __typename\n}\n\nfragment getParagraphSpaces_richText on RichText {\n  paragraphs {\n    layout\n    metadata {\n      originalHeight\n      originalWidth\n      __typename\n    }\n    type\n    ...paragraphExtendsImageGrid_paragraph\n    __typename\n  }\n  ...getSeriesParagraphTopSpacings_richText\n  ...getPostParagraphTopSpacings_richText\n  __typename\n}\n\nfragment paragraphExtendsImageGrid_paragraph on Paragraph {\n  layout\n  type\n  __typename\n  id\n}\n\nfragment getSeriesParagraphTopSpacings_richText on RichText {\n  paragraphs {\n    id\n    __typename\n  }\n  sections {\n    startIndex\n    __typename\n  }\n  __typename\n}\n\nfragment getPostParagraphTopSpacings_richText on RichText {\n  paragraphs {\n    layout\n    text\n    __typename\n  }\n  sections {\n    startIndex\n    __typename\n  }\n  __typename\n}\n\nfragment HighlighSegmentContext_paragraph on Paragraph {\n  ...ParagraphRefsMapContext_paragraph\n  __typename\n  id\n}\n\nfragment NormalizeHighlights_paragraph on Paragraph {\n  name\n  text\n  __typename\n  id\n}\n\nfragment PostBody_creator on User {\n  ...PostNotesMarkers_creator\n  __typename\n  id\n}\n\nfragment PostNotesMarkers_creator on User {\n  id\n  name\n  __typename\n}\n\nfragment ActiveSelectionContext_post on Post {\n  id\n  ...SelectionMenu_post\n  ...PostNewNoteCard_post\n  __typename\n}\n\nfragment SelectionMenu_post on Post {\n  id\n  isPublished\n  isLocked\n  latestPublishedVersion\n  visibility\n  creator {\n    id\n    allowNotes\n    __typename\n  }\n  __typename\n}\n\nfragment PostNewNoteCard_post on Post {\n  id\n  latestPublishedVersion\n  __typename\n}\n\nfragment WithResponsesSidebar_post on Post {\n  id\n  ...ThreadedResponsesSidebar_post\n  __typename\n}\n\nfragment ThreadedResponsesSidebar_post on Post {\n  id\n  ...ThreadedResponsesSidebarContent_post\n  __typename\n}\n\nfragment ThreadedResponsesSidebarContent_post on Post {\n  id\n  postResponses {\n    count\n    __typename\n  }\n  collection {\n    id\n    viewerEdge {\n      id\n      isEditor\n      __typename\n    }\n    __typename\n  }\n  creator {\n    id\n    __typename\n  }\n  ...ThreadedReplies_post\n  __typename\n}\n\nfragment ThreadedReplies_post on Post {\n  __typename\n  id\n  ...ThreadedReply_post\n}\n\nfragment ThreadedReply_post on Post {\n  __typename\n  id\n  ...ReadOrEditSimpleResponse_post\n  ...StoryResponse_post\n}\n\nfragment ReadOrEditSimpleResponse_post on Post {\n  __typename\n  id\n  ...SimpleResponse_post\n}\n\nfragment SimpleResponse_post on Post {\n  id\n  ...ResponseHeader_post\n  __typename\n}\n\nfragment ResponseHeader_post on Post {\n  __typename\n  id\n  creator {\n    id\n    __typename\n  }\n  ...ResponsePopoverMenu_post\n}\n\nfragment ResponsePopoverMenu_post on Post {\n  id\n  ...ReportUserMenuItem_post\n  ...HideResponseMenuItem_post\n  ...BlockUserMenuItem_post\n  __typename\n}\n\nfragment ReportUserMenuItem_post on Post {\n  __typename\n  id\n  ...SusiClickable_post\n}\n\nfragment HideResponseMenuItem_post on Post {\n  __typename\n  id\n  collection {\n    id\n    viewerEdge {\n      id\n      isEditor\n      __typename\n    }\n    __typename\n  }\n  creator {\n    id\n    __typename\n  }\n}\n\nfragment BlockUserMenuItem_post on Post {\n  __typename\n  id\n  creator {\n    id\n    __typename\n  }\n}\n\nfragment StoryResponse_post on Post {\n  id\n  ...ResponseHeader_post\n  __typename\n}\n\nfragment PostCanonicalizer_post on Post {\n  mediumUrl\n  __typename\n  id\n}\n\nfragment PostFooterActionsBar_post on Post {\n  id\n  visibility\n  isPublished\n  allowResponses\n  postResponses {\n    count\n    __typename\n  }\n  isLimitedState\n  creator {\n    id\n    __typename\n  }\n  collection {\n    id\n    __typename\n  }\n  ...BookmarkButton_post\n  ...MultiVote_post\n  ...SusiClickable_post\n  ...ManageSubmission_post\n  ...CollectionSubmission_post\n  ...SharePostButtons_post\n  ...PostFooterSocialPopover_post\n  ...OverflowMenuButtonWithNegativeSignal_post\n  __typename\n}\n\nfragment BookmarkButton_post on Post {\n  visibility\n  ...SusiClickable_post\n  ...AddToCatalogBookmarkButton_post\n  __typename\n  id\n}\n\nfragment AddToCatalogBookmarkButton_post on Post {\n  ...AddToCatalogBase_post\n  __typename\n  id\n}\n\nfragment AddToCatalogBase_post on Post {\n  id\n  viewerEdge {\n    catalogsConnection {\n      catalogsContainingThis(type: LISTS) {\n        catalogId\n        catalogItemIds\n        __typename\n      }\n      predefinedContainingThis {\n        catalogId\n        predefined\n        catalogItemIds\n        __typename\n      }\n      __typename\n    }\n    ...editCatalogItemsMutation_postViewerEdge\n    ...useAddItemToPredefinedCatalog_postViewerEdge\n    __typename\n    id\n  }\n  ...WithToggleInsideCatalog_post\n  __typename\n}\n\nfragment editCatalogItemsMutation_postViewerEdge on PostViewerEdge {\n  id\n  catalogsConnection {\n    catalogsContainingThis(type: LISTS) {\n      catalogId\n      version\n      catalogItemIds\n      __typename\n    }\n    predefinedContainingThis {\n      catalogId\n      predefined\n      version\n      catalogItemIds\n      __typename\n    }\n    __typename\n  }\n  __typename\n}\n\nfragment useAddItemToPredefinedCatalog_postViewerEdge on PostViewerEdge {\n  id\n  catalogsConnection {\n    predefinedContainingThis {\n      catalogId\n      version\n      predefined\n      catalogItemIds\n      __typename\n    }\n    __typename\n  }\n  __typename\n}\n\nfragment WithToggleInsideCatalog_post on Post {\n  id\n  viewerEdge {\n    catalogsConnection {\n      catalogsContainingThis(type: LISTS) {\n        catalogId\n        __typename\n      }\n      predefinedContainingThis {\n        predefined\n        __typename\n      }\n      __typename\n    }\n    __typename\n    id\n  }\n  __typename\n}\n\nfragment MultiVote_post on Post {\n  id\n  clapCount\n  creator {\n    id\n    ...SusiClickable_user\n    __typename\n  }\n  isPublished\n  ...SusiClickable_post\n  collection {\n    id\n    slug\n    __typename\n  }\n  isLimitedState\n  ...MultiVoteCount_post\n  __typename\n}\n\nfragment MultiVoteCount_post on Post {\n  id\n  ...PostVotersNetwork_post\n  __typename\n}\n\nfragment PostVotersNetwork_post on Post {\n  id\n  voterCount\n  recommenders {\n    name\n    __typename\n  }\n  __typename\n}\n\nfragment ManageSubmission_post on Post {\n  id\n  statusForCollection\n  collection {\n    ...ManageSubmission_collection\n    __typename\n    id\n  }\n  pendingCollection {\n    ...ManageSubmission_collection\n    __typename\n    id\n  }\n  creator {\n    id\n    __typename\n  }\n  __typename\n}\n\nfragment ManageSubmission_collection on Collection {\n  name\n  creator {\n    id\n    __typename\n  }\n  ...CollectionAvatar_collection\n  __typename\n  id\n}\n\nfragment CollectionSubmission_post on Post {\n  id\n  ...CollectionSubmissionPopover_post\n  ...CollectionSubmissionPopoverMenuItem_post\n  __typename\n}\n\nfragment CollectionSubmissionPopover_post on Post {\n  id\n  isPublished\n  creator {\n    id\n    __typename\n  }\n  __typename\n}\n\nfragment CollectionSubmissionPopoverMenuItem_post on Post {\n  id\n  statusForCollection\n  isPublished\n  creator {\n    id\n    __typename\n  }\n  __typename\n}\n\nfragment SharePostButtons_post on Post {\n  id\n  isLimitedState\n  visibility\n  mediumUrl\n  ...SharePostButton_post\n  __typename\n}\n\nfragment SharePostButton_post on Post {\n  id\n  __typename\n}\n\nfragment PostFooterSocialPopover_post on Post {\n  id\n  mediumUrl\n  title\n  ...SharePostButton_post\n  __typename\n}\n\nfragment OverflowMenuButtonWithNegativeSignal_post on Post {\n  id\n  ...OverflowMenuWithNegativeSignal_post\n  ...CreatorActionOverflowPopover_post\n  __typename\n}\n\nfragment OverflowMenuWithNegativeSignal_post on Post {\n  id\n  creator {\n    id\n    __typename\n  }\n  collection {\n    id\n    __typename\n  }\n  ...OverflowMenuItemUndoClaps_post\n  __typename\n}\n\nfragment OverflowMenuItemUndoClaps_post on Post {\n  id\n  clapCount\n  ...ClapMutation_post\n  __typename\n}\n\nfragment ClapMutation_post on Post {\n  __typename\n  id\n  clapCount\n  ...MultiVoteCount_post\n}\n\nfragment CreatorActionOverflowPopover_post on Post {\n  allowResponses\n  id\n  statusForCollection\n  isLocked\n  isPublished\n  clapCount\n  mediumUrl\n  pinnedAt\n  pinnedByCreatorAt\n  curationEligibleAt\n  mediumUrl\n  responseDistribution\n  visibility\n  inResponseToPostResult {\n    __typename\n  }\n  inResponseToCatalogResult {\n    __typename\n  }\n  pendingCollection {\n    id\n    name\n    creator {\n      id\n      __typename\n    }\n    avatar {\n      id\n      __typename\n    }\n    domain\n    slug\n    __typename\n  }\n  creator {\n    id\n    ...MutePopoverOptions_creator\n    ...auroraHooks_publisher\n    __typename\n  }\n  collection {\n    id\n    name\n    creator {\n      id\n      __typename\n    }\n    avatar {\n      id\n      __typename\n    }\n    domain\n    slug\n    ...MutePopoverOptions_collection\n    ...auroraHooks_publisher\n    __typename\n  }\n  ...useIsPinnedInContext_post\n  ...NewsletterV3EmailToSubscribersMenuItem_post\n  ...OverflowMenuItemUndoClaps_post\n  __typename\n}\n\nfragment useIsPinnedInContext_post on Post {\n  id\n  collection {\n    id\n    __typename\n  }\n  pendingCollection {\n    id\n    __typename\n  }\n  pinnedAt\n  pinnedByCreatorAt\n  __typename\n}\n\nfragment NewsletterV3EmailToSubscribersMenuItem_post on Post {\n  id\n  creator {\n    id\n    newsletterV3 {\n      id\n      subscribersCount\n      __typename\n    }\n    __typename\n  }\n  isNewsletter\n  isAuthorNewsletter\n  __typename\n}\n\nfragment PostHeader_post on Post {\n  id\n  collection {\n    ...NewsletterV3PostHeaderCTA_collection\n    __typename\n    id\n  }\n  creator {\n    ...EntityDrivenSubscriptionCallToAction_creator\n    __typename\n    id\n  }\n  firstPublishedAt\n  isLocked\n  isNewsletter\n  layerCake\n  tags {\n    id\n    __typename\n  }\n  topics {\n    name\n    __typename\n  }\n  ...MeterController_post\n  ...PostNoteMissingNotification_post\n  __typename\n}\n\nfragment NewsletterV3PostHeaderCTA_collection on Collection {\n  id\n  domain\n  slug\n  name\n  newsletterV3 {\n    id\n    slug\n    name\n    __typename\n  }\n  __typename\n}\n\nfragment EntityDrivenSubscriptionCallToAction_creator on User {\n  __typename\n  id\n  name\n  ...useShouldShowEntityDrivenSubscription_creator\n}\n\nfragment MeterController_post on Post {\n  creator {\n    id\n    __typename\n  }\n  isLocked\n  lockedSource\n  ...LIHighlightMeter_post\n  ...LOHighlightMeter_post\n  ...SusiContainer_post\n  __typename\n  id\n}\n\nfragment LIHighlightMeter_post on Post {\n  id\n  ...UpsellClickable_post\n  __typename\n}\n\nfragment UpsellClickable_post on Post {\n  id\n  collection {\n    id\n    __typename\n  }\n  sequence {\n    sequenceId\n    __typename\n  }\n  creator {\n    id\n    __typename\n  }\n  __typename\n}\n\nfragment LOHighlightMeter_post on Post {\n  id\n  __typename\n}\n\nfragment PostNoteMissingNotification_post on Post {\n  id\n  __typename\n}\n\nfragment PostBylineHeader_post on Post {\n  id\n  readingTime\n  firstPublishedAt\n  uniqueSlug\n  ...DraftStatus_post\n  creator {\n    ...PostBylineHeader_user\n    __typename\n    id\n  }\n  collection {\n    id\n    slug\n    domain\n    __typename\n  }\n  ...InResponseToEntityPreview_post\n  ...OverflowMenuButtonWithNegativeSignal_post\n  __typename\n}\n\nfragment DraftStatus_post on Post {\n  id\n  pendingCollection {\n    id\n    creator {\n      id\n      __typename\n    }\n    ...BoldCollectionName_collection\n    __typename\n  }\n  statusForCollection\n  creator {\n    id\n    __typename\n  }\n  isPublished\n  __typename\n}\n\nfragment BoldCollectionName_collection on Collection {\n  id\n  name\n  __typename\n}\n\nfragment PostBylineHeader_user on User {\n  isAuroraVisible\n  newsletterV3 {\n    id\n    subscribersCount\n    __typename\n  }\n  ...AuthorNameTooltip_user\n  ...PublisherFollowLink_publisher\n  ...userUrl_user\n  __typename\n  id\n}\n\nfragment AuthorNameTooltip_user on User {\n  id\n  name\n  ...UserMentionTooltip_user\n  ...userUrl_user\n  __typename\n}\n\nfragment UserMentionTooltip_user on User {\n  id\n  name\n  username\n  bio\n  imageId\n  mediumMemberAt\n  ...UserAvatar_user\n  ...UserFollowButton_user\n  __typename\n}\n\nfragment PublisherFollowLink_publisher on Publisher {\n  id\n  ...PublisherFollowButton_publisher\n  __typename\n}\n\nfragment InResponseToEntityPreview_post on Post {\n  id\n  inResponseToEntityType\n  __typename\n}\n\nfragment usePostUrl_post on Post {\n  id\n  creator {\n    ...userUrl_user\n    __typename\n    id\n  }\n  collection {\n    id\n    domain\n    slug\n    __typename\n  }\n  isSeries\n  mediumUrl\n  sequence {\n    slug\n    __typename\n  }\n  uniqueSlug\n  __typename\n}\n\nfragment buildBranchViewData_post on Post {\n  creator {\n    name\n    id\n    __typename\n  }\n  collection {\n    name\n    id\n    __typename\n  }\n  layerCake\n  primaryTopic {\n    id\n    slug\n    name\n    __typename\n  }\n  content(postMeteringOptions: $postMeteringOptions) {\n    isLockedPreviewOnly\n    __typename\n  }\n  __typename\n  id\n}\n\nfragment PostMetadata_post on Post {\n  id\n  socialTitle\n  socialDek\n  noIndex\n  curationStatus\n  canonicalUrl\n  mediumUrl\n  metaDescription\n  latestPublishedAt\n  visibility\n  isLimitedState\n  readingTime\n  creator {\n    name\n    twitterScreenName\n    ...userUrl_user\n    __typename\n    id\n  }\n  collection {\n    twitterUsername\n    facebookPageId\n    __typename\n    id\n  }\n  previewContent {\n    subtitle\n    __typename\n  }\n  previewImage {\n    id\n    focusPercentX\n    focusPercentY\n    originalHeight\n    originalWidth\n    __typename\n  }\n  isShortform\n  noIndex\n  curationStatus\n  ...PostJsonLd_post\n  ...postMetaDescription_post\n  ...shortformPostMetaDescription_post\n  ...shouldIndexPost_post\n  ...shortformPostTitle_post\n  ...getTitleDetails_post\n  ...getTitleForPost_post\n  __typename\n}\n\nfragment PostJsonLd_post on Post {\n  id\n  title\n  seoTitle\n  mediumUrl\n  creator {\n    name\n    username\n    ...userUrl_user\n    __typename\n    id\n  }\n  collection {\n    id\n    name\n    domain\n    slug\n    logo {\n      id\n      originalWidth\n      originalHeight\n      __typename\n    }\n    __typename\n  }\n  previewImage {\n    id\n    focusPercentX\n    focusPercentY\n    originalWidth\n    originalHeight\n    __typename\n  }\n  isLocked\n  firstPublishedAt\n  updatedAt\n  isShortform\n  shortformType\n  structuredData\n  ...getTitleForPost_post\n  __typename\n}\n\nfragment getTitleForPost_post on Post {\n  id\n  title\n  ...postTitle_post\n  ...getTitleDetails_post\n  __typename\n}\n\nfragment postTitle_post on Post {\n  id\n  title\n  seoTitle\n  firstPublishedAt\n  ...getPostContentAsString_post\n  ...appendPostContext_post\n  collection {\n    id\n    name\n    domain\n    ...maybeAppendProductName_collection\n    __typename\n  }\n  creator {\n    name\n    __typename\n    id\n  }\n  previewContent {\n    subtitle\n    __typename\n  }\n  __typename\n}\n\nfragment getPostContentAsString_post on Post {\n  content(postMeteringOptions: $postMeteringOptions) {\n    bodyModel {\n      paragraphs {\n        text\n        type\n        mixtapeMetadata {\n          href\n          __typename\n        }\n        __typename\n      }\n      __typename\n    }\n    __typename\n  }\n  __typename\n  id\n}\n\nfragment appendPostContext_post on Post {\n  id\n  sequence {\n    title\n    __typename\n  }\n  collection {\n    name\n    __typename\n    id\n  }\n  creator {\n    name\n    __typename\n    id\n  }\n  __typename\n}\n\nfragment maybeAppendProductName_collection on Collection {\n  id\n  domain\n  __typename\n}\n\nfragment getTitleDetails_post on Post {\n  id\n  content(postMeteringOptions: $postMeteringOptions) {\n    bodyModel {\n      ...GetTitleIndexMap_bodyModel\n      __typename\n    }\n    __typename\n  }\n  ...getPostContentAsString_post\n  __typename\n}\n\nfragment GetTitleIndexMap_bodyModel on RichText {\n  paragraphs {\n    type\n    text\n    __typename\n  }\n  __typename\n}\n\nfragment postMetaDescription_post on Post {\n  id\n  title\n  seoDescription\n  metaDescription\n  creator {\n    id\n    name\n    __typename\n  }\n  collection {\n    id\n    name\n    __typename\n  }\n  previewContent {\n    subtitle\n    __typename\n  }\n  ...getPostContentAsString_post\n  __typename\n}\n\nfragment shortformPostMetaDescription_post on Post {\n  id\n  metaDescription\n  seoDescription\n  shortformType\n  title\n  ...getPostContentAsString_post\n  __typename\n}\n\nfragment shouldIndexPost_post on Post {\n  id\n  firstPublishedAt\n  isLimitedState\n  isShortform\n  shortformType\n  visibility\n  curationStatus\n  creator {\n    name\n    atsQualifiedAt\n    customDomainState {\n      live {\n        status\n        isSubdomain\n        __typename\n      }\n      __typename\n    }\n    __typename\n    id\n  }\n  collection {\n    customDomainState {\n      live {\n        status\n        isSubdomain\n        __typename\n      }\n      __typename\n    }\n    creator {\n      atsQualifiedAt\n      __typename\n      id\n    }\n    ptsQualifiedAt\n    __typename\n    id\n  }\n  noIndex\n  isIndexable\n  ...getPostContentAsString_post\n  __typename\n}\n\nfragment shortformPostTitle_post on Post {\n  id\n  title\n  seoTitle\n  ...getPostContentAsString_post\n  ...appendPostContext_post\n  collection {\n    ...maybeAppendProductName_collection\n    __typename\n    id\n  }\n  __typename\n}\n\nfragment useShowAuthorNewsletterV3Promo_post on Post {\n  id\n  collection {\n    id\n    __typename\n  }\n  creator {\n    ...useShowAuthorNewsletterV3Promo_user\n    __typename\n    id\n  }\n  __typename\n}\n\nfragment useShowAuthorNewsletterV3Promo_user on User {\n  id\n  username\n  newsletterV3 {\n    id\n    showPromo\n    slug\n    __typename\n  }\n  __typename\n}\n\nfragment SuspendedBannerLoader_post on Post {\n  id\n  isSuspended\n  __typename\n}\n\nfragment Footer_post on Post {\n  id\n  collection {\n    id\n    ...PostFooterCollectionButton_collection\n    __typename\n  }\n  responseRootPost {\n    post {\n      id\n      __typename\n    }\n    __typename\n  }\n  ...PostFooterBylineAurora_post\n  ...PostNextFiveStories_post\n  ...InternalLinks_post\n  __typename\n}\n\nfragment PostFooterCollectionButton_collection on Collection {\n  id\n  name\n  ...collectionUrl_collection\n  __typename\n}\n\nfragment PostFooterBylineAurora_post on Post {\n  id\n  creator {\n    name\n    username\n    bio\n    id\n    ...UserFollowButton_user\n    ...auroraHooks_publisher\n    ...userUrl_user\n    ...UserSubscribeButton_user\n    __typename\n  }\n  collection {\n    name\n    description\n    ...CollectionFollowButton_collection\n    ...collectionUrl_collection\n    __typename\n    id\n  }\n  ...UserFollowButton_post\n  ...CollectionFollowButton_post\n  ...useShowAuthorNewsletterV3Promo_post\n  __typename\n}\n\nfragment UserFollowButton_post on Post {\n  collection {\n    id\n    __typename\n  }\n  ...UserFollowButtonSignedOut_post\n  __typename\n  id\n}\n\nfragment UserFollowButtonSignedOut_post on Post {\n  ...SusiClickable_post\n  __typename\n  id\n}\n\nfragment CollectionFollowButton_post on Post {\n  __typename\n  id\n}\n\nfragment PostNextFiveStories_post on Post {\n  firstPublishedAt\n  pinnedAt\n  collection {\n    id\n    __typename\n  }\n  creator {\n    id\n    __typename\n  }\n  __typename\n  id\n}\n\nfragment InternalLinks_post on Post {\n  id\n  internalLinks(paging: {limit: 8}) {\n    items {\n      ... on Post {\n        ...LORecirc_post\n        __typename\n        id\n      }\n      __typename\n    }\n    __typename\n  }\n  __typename\n}\n\nfragment LORecirc_post on Post {\n  id\n  ...PostPresentationTracker_post\n  ...ReadNextPostCard_post\n  __typename\n}\n\nfragment PostPresentationTracker_post on Post {\n  id\n  visibility\n  previewContent {\n    isFullContent\n    __typename\n  }\n  collection {\n    id\n    slug\n    __typename\n  }\n  __typename\n}\n\nfragment ReadNextPostCard_post on Post {\n  id\n  title\n  mediumUrl\n  previewContent {\n    subtitle\n    __typename\n  }\n  primaryTopic {\n    name\n    slug\n    __typename\n    id\n  }\n  collection {\n    id\n    name\n    __typename\n  }\n  previewImage {\n    id\n    alt\n    focusPercentX\n    focusPercentY\n    __typename\n  }\n  clapCount\n  ...usePostUrl_post\n  __typename\n}\n"}]

Missing json attribute name from paragraph

There is an error to parse json:

GET https://medium.com/@alexanderadam/ba896a142ac?format=json => 200 OK
ERROR: #<JSON::MappingError:Missing JSON attribute: name
  parsing Medium::Post::Paragraph at 1:544
  parsing Medium::PostBodyModel#paragraphs at 1:530
  parsing Medium::PostContent#bodyModel at 1:517
  parsing Medium::Post#content at 1:452>

Assets (images) not downloaded

Howdy, I did not see this issue reported anywhere. I tried to download my medium blog and I did get posts (both in bulk or individually), but no assets. On closer look, it seems like images are embedded as data directly on the md, which is not what I was expecting nor how the documentation explains it. Is that a bug or something I am doing wrong?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.