Giter VIP home page Giter VIP logo

patreon-dl's People

Contributors

kazuoteramoto avatar patrickkfkan 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  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

patreon-dl's Issues

Script hangs if post title starts with an emoji

Windows 10 22H2
Node.js v20.10.0.

When a post starts with an emoji, the script hangs without any output or logging. Curiously, the console output shows about 10 more lines than the logger set at debug.

I've created a public and free patreon page that recreates the issue, here. The newest post downloads but there is nothing in status-cache.json or in any of the output folders that mention the 2nd post by name or ID. WIndows does support emoji in file and directory names. Let me know if other files are needed.

Console output:

Microsoft Windows [Version 10.0.19045.3803]
(c) Microsoft Corporation. All rights reserved.

C:\Users\me>patreon-dl -C "C:\Users\me\Downloads\example.conf" https://www.patreon.com/yuorfaec/posts

patreon-dl v1.1.1 Patreon Downloader

Dec 22 20:38:13: debug: InnertubeLoader: Load YouTube credentials from "C:\Users\me\AppData\Roaming\patreon-dl\Config\youtube-credentials.json"
Dec 22 20:38:13: debug: Created PostDownloader instance with config:  {
  type: 'post',
  targetURL: 'https://www.patreon.com/yuorfaec/posts',
  postFetch: { type: 'byUser', vanity: 'yuorfaec', filters: undefined },
  outDir: 'Y:\\test',
  useStatusCache: true,
  pathToFFmpeg: null,
  pathToYouTubeCredentials: 'C:\\Users\\me\\AppData\\Roaming\\patreon-dl\\Config\\youtube-credentials.json',
  dirNameFormat: {
    campaign: '{creator.vanity}[ - ]?{campaign.name}',
    content: '{content.id}[ - ]?{content.name}'
  },
  filenameFormat: { media: '{media.type}-{media.id}' },
  include: {
    lockedContent: true,
    campaignInfo: true,
    contentInfo: true,
    previewMedia: true,
    contentMedia: true,
    allMediaVariants: false
  },
  request: { maxRetries: 5, maxConcurrent: 10, minTime: 666 },
  fileExistsAction: { content: 'skip', info: 'saveAsCopyIfNewer', infoAPI: 'overwrite' }
}
Dec 22 20:38:13: info: PostDownloader: Targeting posts by 'yuorfaec'
Dec 22 20:38:13: debug: PostDownloader: Fetch initial data from URL "https://www.patreon.com/yuorfaec"
Dec 22 20:38:14: info: PostDownloader: Abort signal received
Dec 22 20:38:14: warn: PostDownloader: Page request aborted
Dec 22 20:38:14: info: PostDownloader aborted

C:\Users\me>patreon-dl -C "C:\Users\me\Downloads\example.conf" https://www.patreon.com/yuorfaec/posts

patreon-dl v1.1.1 Patreon Downloader

Dec 22 20:38:46: debug: InnertubeLoader: Load YouTube credentials from "C:\Users\me\AppData\Roaming\patreon-dl\Config\youtube-credentials.json"
Dec 22 20:38:46: debug: Created PostDownloader instance with config:  {
  type: 'post',
  targetURL: 'https://www.patreon.com/yuorfaec/posts',
  postFetch: { type: 'byUser', vanity: 'yuorfaec', filters: undefined },
  outDir: 'Y:\\test',
  useStatusCache: true,
  pathToFFmpeg: null,
  pathToYouTubeCredentials: 'C:\\Users\\me\\AppData\\Roaming\\patreon-dl\\Config\\youtube-credentials.json',
  dirNameFormat: {
    campaign: '{creator.vanity}[ - ]?{campaign.name}',
    content: '{content.id}[ - ]?{content.name}'
  },
  filenameFormat: { media: '{media.type}-{media.id}' },
  include: {
    lockedContent: true,
    campaignInfo: true,
    contentInfo: true,
    previewMedia: true,
    contentMedia: true,
    allMediaVariants: false
  },
  request: { maxRetries: 5, maxConcurrent: 10, minTime: 666 },
  fileExistsAction: { content: 'skip', info: 'saveAsCopyIfNewer', infoAPI: 'overwrite' }
}
Dec 22 20:38:46: info: PostDownloader: Targeting posts by 'yuorfaec'
Dec 22 20:38:46: debug: PostDownloader: Fetch initial data from URL "https://www.patreon.com/yuorfaec"
Dec 22 20:38:47: debug: PageParser: Parse initial data from https://www.patreon.com/yuorfaec
Dec 22 20:38:47: debug: PageParser: Trying pattern: /window\.patreon\s*?=\s*?({.+?});/gm
Dec 22 20:38:47: debug: PageParser: No match for pattern: /window\.patreon\s*?=\s*?({.+?});/gm
Dec 22 20:38:47: debug: PageParser: Trying pattern: /<script id="__NEXT_DATA__" type="application\/json">(.+)<\/script>/gm
Dec 22 20:38:47: debug: PostDownloader: Initial data: campaign ID '4839753'; current user ID '34188673'
Dec 22 20:38:47: info: PostDownloader: Fetch posts
Dec 22 20:38:47: debug: PostDownloader: Request initial posts from API URL "https://www.patreon.com/api/posts?include=campaign%2Caccess_rules%2Cattachments%2Caudio%2Caudio_preview.null%2Cimages%2Cmedia%2Cnative_video_insights%2Cpoll.choices%2Cpoll.current_user_responses.user%2Cpoll.current_user_responses.choice%2Cpoll.current_user_responses.poll%2Cuser%2Cuser_defined_tags%2Cti_checks&sort=-published_at&json-api-version=1.0&filter%5Bcontains_exclusive_posts%5D=true&filter%5Bis_draft%5D=false&filter%5Bcampaign_id%5D=4839753"
Dec 22 20:38:48: debug: PostParser: Parse API response of "https://www.patreon.com/api/posts?include=campaign%2Caccess_rules%2Cattachments%2Caudio%2Caudio_preview.null%2Cimages%2Cmedia%2Cnative_video_insights%2Cpoll.choices%2Cpoll.current_user_responses.user%2Cpoll.current_user_responses.choice%2Cpoll.current_user_responses.poll%2Cuser%2Cuser_defined_tags%2Cti_checks&sort=-published_at&json-api-version=1.0&filter%5Bcontains_exclusive_posts%5D=true&filter%5Bis_draft%5D=false&filter%5Bcampaign_id%5D=4839753"
Dec 22 20:38:48: debug: PostParser: 4 posts found - iterate and parse
Dec 22 20:38:48: debug: PostParser: Parse post #95146990
Dec 22 20:38:48: debug: PostParser: Find campaign item #4839753 in API response
Dec 22 20:38:48: debug: PostParser: Found - parse item data
Dec 22 20:38:48: debug: PostParser: Find reward item #-1 in API response
Dec 22 20:38:48: debug: PostParser: Found - parse item data
Dec 22 20:38:48: debug: PostParser: Done parsing reward #-1
Dec 22 20:38:48: debug: PostParser: Find reward item #15035946 in API response
Dec 22 20:38:48: debug: PostParser: Found - parse item data
Dec 22 20:38:48: debug: PostParser: Done parsing reward #15035946
Dec 22 20:38:48: debug: PostParser: Find reward item #5434576 in API response
Dec 22 20:38:48: debug: PostParser: Found - parse item data
Dec 22 20:38:48: debug: PostParser: Done parsing reward #5434576
Dec 22 20:38:48: debug: PostParser: Obtain creator info (user ID '34188673')
Dec 22 20:38:48: debug: PostParser: Find user item #34188673 in API response
Dec 22 20:38:48: debug: PostParser: Found - parse item data
Dec 22 20:38:48: debug: PostParser: Done parsing user #34188673
Dec 22 20:38:48: debug: PostParser: Done parsing campaign #4839753
Dec 22 20:38:48: debug: PostParser: Fetch downloadable audio items from post #95146990 ('relationships.audio')
Dec 22 20:38:48: debug: PostParser: Fetch downloadable audio preview items from post #95146990 ('relationships.audio_preview')
Dec 22 20:38:48: debug: PostParser: Fetch downloadable images from post #95146990 ('relationships.images')
Dec 22 20:38:48: debug: PostParser: Fetch downloadable attachments from post #95146990 ('relationships.attachments')
Dec 22 20:38:48: debug: PostParser: Find media item #258155918 in API response
Dec 22 20:38:48: debug: PostParser: Found - parse item data
Dec 22 20:38:48: debug: PostParser: Done parsing media item #258155918 (type: video)
Dec 22 20:38:48: debug: PostParser: Done parsing post #95146990
Dec 22 20:38:48: debug: PostParser: Parse post #95146711
Dec 22 20:38:48: debug: PostParser: Fetch downloadable audio items from post #95146711 ('relationships.audio')
Dec 22 20:38:48: debug: PostParser: Fetch downloadable audio preview items from post #95146711 ('relationships.audio_preview')
Dec 22 20:38:48: debug: PostParser: Fetch downloadable images from post #95146711 ('relationships.images')
Dec 22 20:38:48: debug: PostParser: Fetch downloadable attachments from post #95146711 ('relationships.attachments')
Dec 22 20:38:48: debug: PostParser: Find media item #258151381 in API response
Dec 22 20:38:48: debug: PostParser: Found - parse item data
Dec 22 20:38:48: debug: PostParser: Done parsing media item #258151381 (type: video)
Dec 22 20:38:48: debug: PostParser: Done parsing post #95146711
Dec 22 20:38:48: debug: PostParser: Parse post #95145445
Dec 22 20:38:48: debug: PostParser: Fetch downloadable audio items from post #95145445 ('relationships.audio')
Dec 22 20:38:48: debug: PostParser: Fetch downloadable audio preview items from post #95145445 ('relationships.audio_preview')
Dec 22 20:38:48: debug: PostParser: Fetch downloadable images from post #95145445 ('relationships.images')
Dec 22 20:38:48: debug: PostParser: Fetch downloadable attachments from post #95145445 ('relationships.attachments')
Dec 22 20:38:48: debug: PostParser: Find media item #258150376 in API response
Dec 22 20:38:48: debug: PostParser: Found - parse item data
Dec 22 20:38:48: debug: PostParser: Done parsing media item #258150376 (type: video)
Dec 22 20:38:48: debug: PostParser: Done parsing post #95145445
Dec 22 20:38:48: debug: PostParser: Parse post #95145054
Dec 22 20:38:48: debug: PostParser: Fetch downloadable audio items from post #95145054 ('relationships.audio')
Dec 22 20:38:48: debug: PostParser: Fetch downloadable audio preview items from post #95145054 ('relationships.audio_preview')
Dec 22 20:38:48: debug: PostParser: Fetch downloadable images from post #95145054 ('relationships.images')
Dec 22 20:38:48: debug: PostParser: Parse images
Dec 22 20:38:48: debug: PostParser: Find media item #258140560 in API response
Dec 22 20:38:48: debug: PostParser: Found - parse item data
Dec 22 20:38:48: debug: PostParser: Done parsing media item #258140560 (type: image)
Dec 22 20:38:48: debug: PostParser: All 1 downloadable images parsed
Dec 22 20:38:48: debug: PostParser: Fetch downloadable attachments from post #95145054 ('relationships.attachments')
Dec 22 20:38:48: debug: PostParser: Done parsing post #95145054
Dec 22 20:38:48: debug: PostParser: Campaign #4839753 found while parsing posts
Dec 22 20:38:48: debug: PostParser: Done parsing posts
Dec 22 20:38:48: info: PostDownloader: Save campaign info #4839753
Dec 22 20:38:48: debug: PostDownloader: Campaign directories:  {
  root: 'Y:\\test\\yuorfaec - yuorfaec',
  info: 'Y:\\test\\yuorfaec - yuorfaec\\campaign_info'
}
Dec 22 20:38:48: info: PostDownloader: Saved campaign summary to "Y:\test\yuorfaec - yuorfaec\campaign_info\info.txt"
Dec 22 20:38:48: debug: PostDownloader: Fetch campaign data from API URL "https://www.patreon.com/api/campaigns/4839753"
Dec 22 20:38:49: debug: PostDownloader: Fetch user data from API URL "https://www.patreon.com/api/user/34188673"
Dec 22 20:38:49: info: PostDownloader: Saved campaign API data to "Y:\test\yuorfaec - yuorfaec\campaign_info\campaign-api.json"
Dec 22 20:38:49: info: PostDownloader: Saved creator API data to "Y:\test\yuorfaec - yuorfaec\campaign_info\creator-api.json"
Dec 22 20:38:49: info: PostDownloader: Create download tasks for campaign #4839753 -> images
Dec 22 20:38:49: info: PostDownloader: Download begin (#0.0): [type: image; ID: #4839753] -> image-4839753.jpg
Dec 22 20:38:49: debug: Fetcher: Pipe "https://c10.patreonusercontent.com/4/patreon-media/p/campaign/4839753/450c325452cc41669e740b587acb6a13/eyJxIjoxMDAsIndlYnAiOjB9/1.jpg?token-time=1704585600&token-hash=QDfSKYNMr3CBd1p8ia-wQC0kZBZMQrVZGKqhKAlboro%3D" to "Y:\test\yuorfaec - yuorfaec\campaign_info\image-4839753.jpg.part"
Dec 22 20:38:49: debug: Fetcher: Commit "Y:\test\yuorfaec - yuorfaec\campaign_info\image-4839753.jpg.part" to "Y:\test\yuorfaec - yuorfaec\campaign_info\image-4839753.jpg; filesize: 15842 bytes
Dec 22 20:38:49: info: PostDownloader: Download complete (#0.0): "Y:\test\yuorfaec - yuorfaec\campaign_info\image-4839753.jpg"
Dec 22 20:38:50: info: PostDownloader: Download begin (#0.1): [type: image; ID: #4839753] -> image-4839753.webp
Dec 22 20:38:50: debug: Fetcher: Pipe "https://c10.patreonusercontent.com/4/patreon-media/p/campaign/4839753/50daf576b40243058b791c19f0b7acf2/eyJ3IjoxOTIwLCJ3ZSI6MX0%3D/1.png?token-time=1704326400&token-hash=Rl99n3HfIzYk9BHK4V02FnWRnnUuL20xIlVP0XIfx98%3D" to "Y:\test\yuorfaec - yuorfaec\campaign_info\image-4839753.webp.part"
Dec 22 20:38:50: debug: Fetcher: Commit "Y:\test\yuorfaec - yuorfaec\campaign_info\image-4839753.webp.part" to "Y:\test\yuorfaec - yuorfaec\campaign_info\image-4839753.webp; filesize: 2046 bytes
Dec 22 20:38:50: info: PostDownloader: Download complete (#0.1): "Y:\test\yuorfaec - yuorfaec\campaign_info\image-4839753.webp"
Dec 22 20:38:50: info: PostDownloader: Download begin (#0.2): [type: image; ID: #34188673] -> image-34188673.png
Dec 22 20:38:50: debug: Fetcher: Pipe "https://c8.patreon.com/3/200/34188673" to "Y:\test\yuorfaec - yuorfaec\campaign_info\image-34188673.png.part"
Dec 22 20:38:50: debug: Fetcher: Commit "Y:\test\yuorfaec - yuorfaec\campaign_info\image-34188673.png.part" to "Y:\test\yuorfaec - yuorfaec\campaign_info\image-34188673.png; filesize: 3138 bytes
Dec 22 20:38:51: info: PostDownloader: Download complete (#0.2): "Y:\test\yuorfaec - yuorfaec\campaign_info\image-34188673.png"
Dec 22 20:38:51: info: PostDownloader: Download begin (#0.3): [type: image; ID: #34188673] -> image-34188673 (1).png
Dec 22 20:38:51: debug: Fetcher: Pipe "https://c8.patreon.com/3/200/34188673" to "Y:\test\yuorfaec - yuorfaec\campaign_info\image-34188673.png.part"
Dec 22 20:38:51: debug: FetcherDownloadTask: (saveAsCopyIfNewer) Compare "Y:\test\yuorfaec - yuorfaec\campaign_info\image-34188673.png.part" with "Y:\test\yuorfaec - yuorfaec\campaign_info\image-34188673.png": Files match
Dec 22 20:38:51: debug: Fetcher: Clean up "Y:\test\yuorfaec - yuorfaec\campaign_info\image-34188673.png.part"
Dec 22 20:38:51: warn: PostDownloader: Download skipped (#0.3): Destination file exists with same content (Y:\test\yuorfaec - yuorfaec\campaign_info\image-34188673.png)
Dec 22 20:38:51: info: PostDownloader: Download batch complete (#0): 4 downloads; 3 completed; 0 errors; 1 skipped; 0 aborted
Dec 22 20:38:51: info: PostDownloader: Done saving campaign info
Dec 22 20:38:51: debug: PostDownloader: 4 posts fetched
Dec 22 20:38:51: debug: PostDownloader: Post directories: {
  root: 'Y:\\test\\yuorfaec - yuorfaec\\posts\\95146990 - alas',
  info: 'Y:\\test\\yuorfaec - yuorfaec\\posts\\95146990 - alas\\post_info',
  audio: 'Y:\\test\\yuorfaec - yuorfaec\\posts\\95146990 - alas\\audio',
  video: 'Y:\\test\\yuorfaec - yuorfaec\\posts\\95146990 - alas\\video',
  images: 'Y:\\test\\yuorfaec - yuorfaec\\posts\\95146990 - alas\\images',
  audioPreview: 'Y:\\test\\yuorfaec - yuorfaec\\posts\\95146990 - alas\\audio_preview',
  videoPreview: 'Y:\\test\\yuorfaec - yuorfaec\\posts\\95146990 - alas\\video_preview',
  imagePreviews: 'Y:\\test\\yuorfaec - yuorfaec\\posts\\95146990 - alas\\image_previews',
  attachments: 'Y:\\test\\yuorfaec - yuorfaec\\posts\\95146990 - alas\\attachments',
  embed: 'Y:\\test\\yuorfaec - yuorfaec\\posts\\95146990 - alas\\embed',
  statusCache: 'Y:\\test\\yuorfaec - yuorfaec\\.patreon-dl'
}
Dec 22 20:38:51: debug: "Y:\test\yuorfaec - yuorfaec\.patreon-dl\status-cache.json" does not exist. Start with empty data
Dec 22 20:38:51: debug: Status cache entry does not exist for post #95146990
Dec 22 20:38:51: info: PostDownloader: Download post #95146990 (alas)
Dec 22 20:38:51: info: PostDownloader: Save post info #95146990
Dec 22 20:38:52: info: PostDownloader: Saved post summary to "Y:\test\yuorfaec - yuorfaec\posts\95146990 - alas\post_info\info.txt"
Dec 22 20:38:52: info: PostDownloader: Saved post API data to "Y:\test\yuorfaec - yuorfaec\posts\95146990 - alas\post_info\post-api.json"
Dec 22 20:38:52: info: PostDownloader: Create download tasks for post #95146990 -> video
Dec 22 20:38:52: info: PostDownloader: Create download tasks for post #95146990 -> info elements
Dec 22 20:38:52: info: PostDownloader: Download batch created (#1): 4 downloads pending
Dec 22 20:38:52: info: PostDownloader: Download begin (#1.0): [type: video; ID: #258155918] -> video-258155918.mp4
Dec 22 20:38:52: debug: Fetcher: Pipe "https://stream.mux.com/00VNZXlRruj02S4sUT019U1Q1a6kxDFRB9LLj7lfiFHr01s/high.mp4?token=eyJhbGciOiJSUzI1NiIsImtpZCI6Ik5CY3o3Sk5RcUNmdDdWcmo5MWhra2lEY3Vyc2xtRGNmSU1oSFUzallZMDI0IiwidHlwIjoiSldUIn0.eyJzdWIiOiIwMFZOWlhsUnJ1ajAyUzRzVVQwMTlVMVExYTZreERGUkI5TExqN2xmaUZIcjAxcyIsImV4cCI6MTcwMzM4NjgwMCwiYXVkIjoidiIsInBsYXliYWNrX3Jlc3RyaWN0aW9uX2lkIjoiSXIwMkZtcXNxVW5NSXBFcUg4OU1kbHZXYTE1UXdPbzZkQ25lbEN0U0k5WUkifQ.msmi7niP1eKFRYws0vWFWyjYTSsync2GbFcDdM4ulWDIT0IcLMg2lMoCC-yTgxf3BTXyePq9sdZpUuqyl4FITT_5uaI-XVAyGNqiYgYOTf5tQVgNS9JLmDfEh7iB7RD3XgYZwWd1BsWzFxSvf7owTvVKcJq-rrME0cbmdlGuhBRNti3DwnpQL4X4DXayTX5EisDB41qcRzRi58ZWfqLkLISLqLllPZ33fMLUxowanbSo0u4Y-3O9METsCLTzUSK7V12i-TOpBIpEsB4fdNeL0UvCjqzqbTksSszPoNSHoEHhtppJDKNyoe3ZA2cm03YL0CBrrdmJWUMQJ_pB1XqPCA" to "Y:\test\yuorfaec - yuorfaec\posts\95146990 - alas\video\video-258155918.mp4.part"
Dec 22 20:38:53: info: PostDownloader: Download begin (#1.1): [type: dummy; ID: #258155918] -> dummy-258155918-thumbnail.jpg
Dec 22 20:38:53: debug: Fetcher: Pipe "https://image.mux.com/00VNZXlRruj02S4sUT019U1Q1a6kxDFRB9LLj7lfiFHr01s/thumbnail.jpg?token=eyJhbGciOiJSUzI1NiIsImtpZCI6Ik5CY3o3Sk5RcUNmdDdWcmo5MWhra2lEY3Vyc2xtRGNmSU1oSFUzallZMDI0IiwidHlwIjoiSldUIn0.eyJzdWIiOiIwMFZOWlhsUnJ1ajAyUzRzVVQwMTlVMVExYTZreERGUkI5TExqN2xmaUZIcjAxcyIsImV4cCI6MTcwNTk3NzUyOCwiYXVkIjoidCIsInRpbWUiOjIuMH0.GW_yQpIRWLa2LvzA6J10O39nvXjqgbfu0HIVqYWMETRWQRSwFkQElbzkOh5Sspr00QYW0cKbYQXXVKxJ1dYl40BseQhzGkUToW4VBnNDtEndgixHAqrFgE0B9WtJnqFAyRrMe7rbh6cjyMuT3SNiKL31gU1BEs4IjwtPRZUKgA1cm7xoLUVuAw0WBrDNG8FO8UWBlD_l33N3tTMfVzbjm605taUBJ9ZkjrLWgUza9rIQWGqOFm0NlGJuxxv7XPaSlLQWl6gTXMhaDE3kFzHTTJ9oM-dFxhPmpq9kKSVD8MReMIhsPIl9VmyKTezkXd-ASlOJtf9gvnOE2YZfO7lCkg" to "Y:\test\yuorfaec - yuorfaec\posts\95146990 - alas\video\dummy-258155918-thumbnail.jpg.part"
Dec 22 20:38:53: debug: Fetcher: Commit "Y:\test\yuorfaec - yuorfaec\posts\95146990 - alas\video\dummy-258155918-thumbnail.jpg.part" to "Y:\test\yuorfaec - yuorfaec\posts\95146990 - alas\video\dummy-258155918-thumbnail.jpg; filesize: 180273 bytes
Dec 22 20:38:53: info: PostDownloader: Download complete (#1.1): "Y:\test\yuorfaec - yuorfaec\posts\95146990 - alas\video\dummy-258155918-thumbnail.jpg"
Dec 22 20:38:53: info: PostDownloader: Download begin (#1.2): [type: image; ID: #95146990] -> image-95146990.jpg
Dec 22 20:38:53: debug: Fetcher: Pipe "https://image.mux.com/00VNZXlRruj02S4sUT019U1Q1a6kxDFRB9LLj7lfiFHr01s/thumbnail.jpg?token=eyJhbGciOiJSUzI1NiIsImtpZCI6Ik5CY3o3Sk5RcUNmdDdWcmo5MWhra2lEY3Vyc2xtRGNmSU1oSFUzallZMDI0IiwidHlwIjoiSldUIn0.eyJzdWIiOiIwMFZOWlhsUnJ1ajAyUzRzVVQwMTlVMVExYTZreERGUkI5TExqN2xmaUZIcjAxcyIsImV4cCI6MTcwNTk3NzUyOCwiYXVkIjoidCIsInRpbWUiOjIuMH0.GW_yQpIRWLa2LvzA6J10O39nvXjqgbfu0HIVqYWMETRWQRSwFkQElbzkOh5Sspr00QYW0cKbYQXXVKxJ1dYl40BseQhzGkUToW4VBnNDtEndgixHAqrFgE0B9WtJnqFAyRrMe7rbh6cjyMuT3SNiKL31gU1BEs4IjwtPRZUKgA1cm7xoLUVuAw0WBrDNG8FO8UWBlD_l33N3tTMfVzbjm605taUBJ9ZkjrLWgUza9rIQWGqOFm0NlGJuxxv7XPaSlLQWl6gTXMhaDE3kFzHTTJ9oM-dFxhPmpq9kKSVD8MReMIhsPIl9VmyKTezkXd-ASlOJtf9gvnOE2YZfO7lCkg" to "Y:\test\yuorfaec - yuorfaec\posts\95146990 - alas\post_info\image-95146990.jpg.part"
Dec 22 20:38:53: debug: Fetcher: Commit "Y:\test\yuorfaec - yuorfaec\posts\95146990 - alas\post_info\image-95146990.jpg.part" to "Y:\test\yuorfaec - yuorfaec\posts\95146990 - alas\post_info\image-95146990.jpg; filesize: 180273 bytes
Dec 22 20:38:53: info: PostDownloader: Download complete (#1.2): "Y:\test\yuorfaec - yuorfaec\posts\95146990 - alas\post_info\image-95146990.jpg"
Dec 22 20:38:54: info: PostDownloader: Download begin (#1.3): [type: image; ID: #95146990] -> image-95146990 (1).jpg
Dec 22 20:38:54: debug: Fetcher: Pipe "https://image.mux.com/00VNZXlRruj02S4sUT019U1Q1a6kxDFRB9LLj7lfiFHr01s/thumbnail.jpg?token=eyJhbGciOiJSUzI1NiIsImtpZCI6Ik5CY3o3Sk5RcUNmdDdWcmo5MWhra2lEY3Vyc2xtRGNmSU1oSFUzallZMDI0IiwidHlwIjoiSldUIn0.eyJzdWIiOiIwMFZOWlhsUnJ1ajAyUzRzVVQwMTlVMVExYTZreERGUkI5TExqN2xmaUZIcjAxcyIsImV4cCI6MTcwNTk3NzUyOCwiYXVkIjoidCIsInRpbWUiOjIuMH0.GW_yQpIRWLa2LvzA6J10O39nvXjqgbfu0HIVqYWMETRWQRSwFkQElbzkOh5Sspr00QYW0cKbYQXXVKxJ1dYl40BseQhzGkUToW4VBnNDtEndgixHAqrFgE0B9WtJnqFAyRrMe7rbh6cjyMuT3SNiKL31gU1BEs4IjwtPRZUKgA1cm7xoLUVuAw0WBrDNG8FO8UWBlD_l33N3tTMfVzbjm605taUBJ9ZkjrLWgUza9rIQWGqOFm0NlGJuxxv7XPaSlLQWl6gTXMhaDE3kFzHTTJ9oM-dFxhPmpq9kKSVD8MReMIhsPIl9VmyKTezkXd-ASlOJtf9gvnOE2YZfO7lCkg" to "Y:\test\yuorfaec - yuorfaec\posts\95146990 - alas\post_info\image-95146990.jpg.part"
Dec 22 20:38:54: debug: FetcherDownloadTask: (saveAsCopyIfNewer) Compare "Y:\test\yuorfaec - yuorfaec\posts\95146990 - alas\post_info\image-95146990.jpg.part" with "Y:\test\yuorfaec - yuorfaec\posts\95146990 - alas\post_info\image-95146990.jpg": Files match
Dec 22 20:38:54: debug: Fetcher: Clean up "Y:\test\yuorfaec - yuorfaec\posts\95146990 - alas\post_info\image-95146990.jpg.part"
Dec 22 20:38:54: warn: PostDownloader: Download skipped (#1.3): Destination file exists with same content (Y:\test\yuorfaec - yuorfaec\posts\95146990 - alas\post_info\image-95146990.jpg)
Dec 22 20:39:03: debug: Fetcher: Commit "Y:\test\yuorfaec - yuorfaec\posts\95146990 - alas\video\video-258155918.mp4.part" to "Y:\test\yuorfaec - yuorfaec\posts\95146990 - alas\video\video-258155918.mp4; filesize: 25054416 bytes
Dec 22 20:39:03: info: PostDownloader: Download complete (#1.0): "Y:\test\yuorfaec - yuorfaec\posts\95146990 - alas\video\video-258155918.mp4"
Dec 22 20:39:03: info: PostDownloader: Download batch complete (#1): 4 downloads; 3 completed; 0 errors; 1 skipped; 0 aborted
Dec 22 20:39:03: debug: Update status cache for post #95146990
Dec 22 20:39:03: debug: PostDownloader: Post directories: {
  root: 'Y:\\test\\yuorfaec - yuorfaec\\posts\\95146711 - 💔 broken',
  info: 'Y:\\test\\yuorfaec - yuorfaec\\posts\\95146711 - 💔 broken\\post_info',
  audio: 'Y:\\test\\yuorfaec - yuorfaec\\posts\\95146711 - 💔 broken\\audio',
  video: 'Y:\\test\\yuorfaec - yuorfaec\\posts\\95146711 - 💔 broken\\video',
  images: 'Y:\\test\\yuorfaec - yuorfaec\\posts\\95146711 - 💔 broken\\images',
  audioPreview: 'Y:\\test\\yuorfaec - yuorfaec\\posts\\95146711 - 💔 broken\\audio_preview',
  videoPreview: 'Y:\\test\\yuorfaec - yuorfaec\\posts\\95146711 - 💔 broken\\video_preview',
  imagePreviews: 'Y:\\test\\yuorfaec - yuorfaec\\posts\\95146711 - 💔 broken\\image_previews',
  attachments: 'Y:\\test\\yuorfaec - yuorfaec\\posts\\95146711 - 💔 broken\\attachments',
  embed: 'Y:\\test\\yuorfaec - yuorfaec\\posts\\95146711 - 💔 broken\\embed',
  statusCache: 'Y:\\test\\yuorfaec - yuorfaec\\.patreon-dl'
}
Dec 22 20:39:03: debug: Status cache entry does not exist for post #95146711
Dec 22 20:39:03: info: PostDownloader: Download post #95146711 (💔 broken)
Dec 22 20:39:03: info: PostDownloader: Save post info #95146711

Debug output:


*************** LOG BEGIN DEC 22 2023 20:38:46 ***************
Dec 22 20:38:46: �[33mdebug:�[39m �[34mInnertubeLoader:�[39m Load YouTube credentials from "C:\Users\me\AppData\Roaming\patreon-dl\Config\youtube-credentials.json"
Dec 22 20:38:46: �[33mdebug:�[39m Created PostDownloader instance with config:  {
  type: �[32m'post'�[39m,
  targetURL: �[32m'https://www.patreon.com/yuorfaec/posts'�[39m,
  postFetch: { type: �[32m'byUser'�[39m, vanity: �[32m'yuorfaec'�[39m, filters: �[90mundefined�[39m },
  outDir: �[32m'Y:\\test'�[39m,
  useStatusCache: �[33mtrue�[39m,
  pathToFFmpeg: �[1mnull�[22m,
  pathToYouTubeCredentials: �[32m'C:\\Users\\me\\AppData\\Roaming\\patreon-dl\\Config\\youtube-credentials.json'�[39m,
  dirNameFormat: {
    campaign: �[32m'{creator.vanity}[ - ]?{campaign.name}'�[39m,
    content: �[32m'{content.id}[ - ]?{content.name}'�[39m
  },
  filenameFormat: { media: �[32m'{media.type}-{media.id}'�[39m },
  include: {
    lockedContent: �[33mtrue�[39m,
    campaignInfo: �[33mtrue�[39m,
    contentInfo: �[33mtrue�[39m,
    previewMedia: �[33mtrue�[39m,
    contentMedia: �[33mtrue�[39m,
    allMediaVariants: �[33mfalse�[39m
  },
  request: { maxRetries: �[33m5�[39m, maxConcurrent: �[33m10�[39m, minTime: �[33m666�[39m },
  fileExistsAction: { content: �[32m'skip'�[39m, info: �[32m'saveAsCopyIfNewer'�[39m, infoAPI: �[32m'overwrite'�[39m }
}
Dec 22 20:38:46: �[32minfo:�[39m �[34mPostDownloader:�[39m Targeting posts by 'yuorfaec'
Dec 22 20:38:46: �[33mdebug:�[39m �[34mPostDownloader:�[39m Fetch initial data from URL "https://www.patreon.com/yuorfaec"
Dec 22 20:38:47: �[33mdebug:�[39m �[34mPageParser:�[39m Parse initial data from https://www.patreon.com/yuorfaec
Dec 22 20:38:47: �[33mdebug:�[39m �[34mPageParser:�[39m Trying pattern: /window\.patreon\s*?=\s*?({.+?});/gm
Dec 22 20:38:47: �[33mdebug:�[39m �[34mPageParser:�[39m No match for pattern: /window\.patreon\s*?=\s*?({.+?});/gm
Dec 22 20:38:47: �[33mdebug:�[39m �[34mPageParser:�[39m Trying pattern: /<script id="__NEXT_DATA__" type="application\/json">(.+)<\/script>/gm
Dec 22 20:38:47: �[33mdebug:�[39m �[34mPostDownloader:�[39m Initial data: campaign ID '4839753'; current user ID '34188673'
Dec 22 20:38:47: �[32minfo:�[39m �[34mPostDownloader:�[39m Fetch posts
Dec 22 20:38:47: �[33mdebug:�[39m �[34mPostDownloader:�[39m Request initial posts from API URL "https://www.patreon.com/api/posts?include=campaign%2Caccess_rules%2Cattachments%2Caudio%2Caudio_preview.null%2Cimages%2Cmedia%2Cnative_video_insights%2Cpoll.choices%2Cpoll.current_user_responses.user%2Cpoll.current_user_responses.choice%2Cpoll.current_user_responses.poll%2Cuser%2Cuser_defined_tags%2Cti_checks&sort=-published_at&json-api-version=1.0&filter%5Bcontains_exclusive_posts%5D=true&filter%5Bis_draft%5D=false&filter%5Bcampaign_id%5D=4839753"
Dec 22 20:38:48: �[33mdebug:�[39m �[34mPostParser:�[39m Parse API response of "https://www.patreon.com/api/posts?include=campaign%2Caccess_rules%2Cattachments%2Caudio%2Caudio_preview.null%2Cimages%2Cmedia%2Cnative_video_insights%2Cpoll.choices%2Cpoll.current_user_responses.user%2Cpoll.current_user_responses.choice%2Cpoll.current_user_responses.poll%2Cuser%2Cuser_defined_tags%2Cti_checks&sort=-published_at&json-api-version=1.0&filter%5Bcontains_exclusive_posts%5D=true&filter%5Bis_draft%5D=false&filter%5Bcampaign_id%5D=4839753"
Dec 22 20:38:48: �[33mdebug:�[39m �[34mPostParser:�[39m 4 posts found - iterate and parse
Dec 22 20:38:48: �[33mdebug:�[39m �[34mPostParser:�[39m Parse post #95146990
Dec 22 20:38:48: �[33mdebug:�[39m �[34mPostParser:�[39m Find campaign item #4839753 in API response
Dec 22 20:38:48: �[33mdebug:�[39m �[34mPostParser:�[39m Found - parse item data
Dec 22 20:38:48: �[33mdebug:�[39m �[34mPostParser:�[39m Find reward item #-1 in API response
Dec 22 20:38:48: �[33mdebug:�[39m �[34mPostParser:�[39m Found - parse item data
Dec 22 20:38:48: �[33mdebug:�[39m �[34mPostParser:�[39m Done parsing reward #-1
Dec 22 20:38:48: �[33mdebug:�[39m �[34mPostParser:�[39m Find reward item #15035946 in API response
Dec 22 20:38:48: �[33mdebug:�[39m �[34mPostParser:�[39m Found - parse item data
Dec 22 20:38:48: �[33mdebug:�[39m �[34mPostParser:�[39m Done parsing reward #15035946
Dec 22 20:38:48: �[33mdebug:�[39m �[34mPostParser:�[39m Find reward item #5434576 in API response
Dec 22 20:38:48: �[33mdebug:�[39m �[34mPostParser:�[39m Found - parse item data
Dec 22 20:38:48: �[33mdebug:�[39m �[34mPostParser:�[39m Done parsing reward #5434576
Dec 22 20:38:48: �[33mdebug:�[39m �[34mPostParser:�[39m Obtain creator info (user ID '34188673')
Dec 22 20:38:48: �[33mdebug:�[39m �[34mPostParser:�[39m Find user item #34188673 in API response
Dec 22 20:38:48: �[33mdebug:�[39m �[34mPostParser:�[39m Found - parse item data
Dec 22 20:38:48: �[33mdebug:�[39m �[34mPostParser:�[39m Done parsing user #34188673
Dec 22 20:38:48: �[33mdebug:�[39m �[34mPostParser:�[39m Done parsing campaign #4839753
Dec 22 20:38:48: �[33mdebug:�[39m �[34mPostParser:�[39m Fetch downloadable audio items from post #95146990 ('relationships.audio')
Dec 22 20:38:48: �[33mdebug:�[39m �[34mPostParser:�[39m Fetch downloadable audio preview items from post #95146990 ('relationships.audio_preview')
Dec 22 20:38:48: �[33mdebug:�[39m �[34mPostParser:�[39m Fetch downloadable images from post #95146990 ('relationships.images')
Dec 22 20:38:48: �[33mdebug:�[39m �[34mPostParser:�[39m Fetch downloadable attachments from post #95146990 ('relationships.attachments')
Dec 22 20:38:48: �[33mdebug:�[39m �[34mPostParser:�[39m Find media item #258155918 in API response
Dec 22 20:38:48: �[33mdebug:�[39m �[34mPostParser:�[39m Found - parse item data
Dec 22 20:38:48: �[33mdebug:�[39m �[34mPostParser:�[39m Done parsing media item #258155918 (type: video)
Dec 22 20:38:48: �[33mdebug:�[39m �[34mPostParser:�[39m Done parsing post #95146990
Dec 22 20:38:48: �[33mdebug:�[39m �[34mPostParser:�[39m Parse post #95146711
Dec 22 20:38:48: �[33mdebug:�[39m �[34mPostParser:�[39m Fetch downloadable audio items from post #95146711 ('relationships.audio')
Dec 22 20:38:48: �[33mdebug:�[39m �[34mPostParser:�[39m Fetch downloadable audio preview items from post #95146711 ('relationships.audio_preview')
Dec 22 20:38:48: �[33mdebug:�[39m �[34mPostParser:�[39m Fetch downloadable images from post #95146711 ('relationships.images')
Dec 22 20:38:48: �[33mdebug:�[39m �[34mPostParser:�[39m Fetch downloadable attachments from post #95146711 ('relationships.attachments')
Dec 22 20:38:48: �[33mdebug:�[39m �[34mPostParser:�[39m Find media item #258151381 in API response
Dec 22 20:38:48: �[33mdebug:�[39m �[34mPostParser:�[39m Found - parse item data
Dec 22 20:38:48: �[33mdebug:�[39m �[34mPostParser:�[39m Done parsing media item #258151381 (type: video)
Dec 22 20:38:48: �[33mdebug:�[39m �[34mPostParser:�[39m Done parsing post #95146711
Dec 22 20:38:48: �[33mdebug:�[39m �[34mPostParser:�[39m Parse post #95145445
Dec 22 20:38:48: �[33mdebug:�[39m �[34mPostParser:�[39m Fetch downloadable audio items from post #95145445 ('relationships.audio')
Dec 22 20:38:48: �[33mdebug:�[39m �[34mPostParser:�[39m Fetch downloadable audio preview items from post #95145445 ('relationships.audio_preview')
Dec 22 20:38:48: �[33mdebug:�[39m �[34mPostParser:�[39m Fetch downloadable images from post #95145445 ('relationships.images')
Dec 22 20:38:48: �[33mdebug:�[39m �[34mPostParser:�[39m Fetch downloadable attachments from post #95145445 ('relationships.attachments')
Dec 22 20:38:48: �[33mdebug:�[39m �[34mPostParser:�[39m Find media item #258150376 in API response
Dec 22 20:38:48: �[33mdebug:�[39m �[34mPostParser:�[39m Found - parse item data
Dec 22 20:38:48: �[33mdebug:�[39m �[34mPostParser:�[39m Done parsing media item #258150376 (type: video)
Dec 22 20:38:48: �[33mdebug:�[39m �[34mPostParser:�[39m Done parsing post #95145445
Dec 22 20:38:48: �[33mdebug:�[39m �[34mPostParser:�[39m Parse post #95145054
Dec 22 20:38:48: �[33mdebug:�[39m �[34mPostParser:�[39m Fetch downloadable audio items from post #95145054 ('relationships.audio')
Dec 22 20:38:48: �[33mdebug:�[39m �[34mPostParser:�[39m Fetch downloadable audio preview items from post #95145054 ('relationships.audio_preview')
Dec 22 20:38:48: �[33mdebug:�[39m �[34mPostParser:�[39m Fetch downloadable images from post #95145054 ('relationships.images')
Dec 22 20:38:48: �[33mdebug:�[39m �[34mPostParser:�[39m Parse images
Dec 22 20:38:48: �[33mdebug:�[39m �[34mPostParser:�[39m Find media item #258140560 in API response
Dec 22 20:38:48: �[33mdebug:�[39m �[34mPostParser:�[39m Found - parse item data
Dec 22 20:38:48: �[33mdebug:�[39m �[34mPostParser:�[39m Done parsing media item #258140560 (type: image)
Dec 22 20:38:48: �[33mdebug:�[39m �[34mPostParser:�[39m All 1 downloadable images parsed
Dec 22 20:38:48: �[33mdebug:�[39m �[34mPostParser:�[39m Fetch downloadable attachments from post #95145054 ('relationships.attachments')
Dec 22 20:38:48: �[33mdebug:�[39m �[34mPostParser:�[39m Done parsing post #95145054
Dec 22 20:38:48: �[33mdebug:�[39m �[34mPostParser:�[39m Campaign #4839753 found while parsing posts
Dec 22 20:38:48: �[33mdebug:�[39m �[34mPostParser:�[39m Done parsing posts
Dec 22 20:38:48: �[32minfo:�[39m �[34mPostDownloader:�[39m Save campaign info #4839753
Dec 22 20:38:48: �[33mdebug:�[39m �[34mPostDownloader:�[39m Campaign directories:  {
  root: �[32m'Y:\\test\\yuorfaec - yuorfaec'�[39m,
  info: �[32m'Y:\\test\\yuorfaec - yuorfaec\\campaign_info'�[39m
}
Dec 22 20:38:48: �[32minfo:�[39m �[34mPostDownloader:�[39m Saved campaign summary to "Y:\test\yuorfaec - yuorfaec\campaign_info\info.txt"
Dec 22 20:38:48: �[33mdebug:�[39m �[34mPostDownloader:�[39m Fetch campaign data from API URL "https://www.patreon.com/api/campaigns/4839753"
Dec 22 20:38:49: �[33mdebug:�[39m �[34mPostDownloader:�[39m Fetch user data from API URL "https://www.patreon.com/api/user/34188673"
Dec 22 20:38:49: �[32minfo:�[39m �[34mPostDownloader:�[39m Saved campaign API data to "Y:\test\yuorfaec - yuorfaec\campaign_info\campaign-api.json"
Dec 22 20:38:49: �[32minfo:�[39m �[34mPostDownloader:�[39m Saved creator API data to "Y:\test\yuorfaec - yuorfaec\campaign_info\creator-api.json"
Dec 22 20:38:49: �[32minfo:�[39m �[34mPostDownloader:�[39m Create download tasks for campaign #4839753 -> images
Dec 22 20:38:49: �[32minfo:�[39m �[34mPostDownloader:�[39m Download begin (#0.0): [type: image; ID: #4839753] -> image-4839753.jpg
Dec 22 20:38:49: �[33mdebug:�[39m �[34mFetcher:�[39m Pipe "https://c10.patreonusercontent.com/4/patreon-media/p/campaign/4839753/450c325452cc41669e740b587acb6a13/eyJxIjoxMDAsIndlYnAiOjB9/1.jpg?token-time=1704585600&token-hash=QDfSKYNMr3CBd1p8ia-wQC0kZBZMQrVZGKqhKAlboro%3D" to "Y:\test\yuorfaec - yuorfaec\campaign_info\image-4839753.jpg.part"
Dec 22 20:38:49: �[33mdebug:�[39m �[34mFetcher:�[39m Commit "Y:\test\yuorfaec - yuorfaec\campaign_info\image-4839753.jpg.part" to "Y:\test\yuorfaec - yuorfaec\campaign_info\image-4839753.jpg; filesize: 15842 bytes
Dec 22 20:38:49: �[32minfo:�[39m �[34mPostDownloader:�[39m Download complete (#0.0): "Y:\test\yuorfaec - yuorfaec\campaign_info\image-4839753.jpg"
Dec 22 20:38:50: �[32minfo:�[39m �[34mPostDownloader:�[39m Download begin (#0.1): [type: image; ID: #4839753] -> image-4839753.webp
Dec 22 20:38:50: �[33mdebug:�[39m �[34mFetcher:�[39m Pipe "https://c10.patreonusercontent.com/4/patreon-media/p/campaign/4839753/50daf576b40243058b791c19f0b7acf2/eyJ3IjoxOTIwLCJ3ZSI6MX0%3D/1.png?token-time=1704326400&token-hash=Rl99n3HfIzYk9BHK4V02FnWRnnUuL20xIlVP0XIfx98%3D" to "Y:\test\yuorfaec - yuorfaec\campaign_info\image-4839753.webp.part"
Dec 22 20:38:50: �[33mdebug:�[39m �[34mFetcher:�[39m Commit "Y:\test\yuorfaec - yuorfaec\campaign_info\image-4839753.webp.part" to "Y:\test\yuorfaec - yuorfaec\campaign_info\image-4839753.webp; filesize: 2046 bytes
Dec 22 20:38:50: �[32minfo:�[39m �[34mPostDownloader:�[39m Download complete (#0.1): "Y:\test\yuorfaec - yuorfaec\campaign_info\image-4839753.webp"
Dec 22 20:38:50: �[32minfo:�[39m �[34mPostDownloader:�[39m Download begin (#0.2): [type: image; ID: #34188673] -> image-34188673.png
Dec 22 20:38:50: �[33mdebug:�[39m �[34mFetcher:�[39m Pipe "https://c8.patreon.com/3/200/34188673" to "Y:\test\yuorfaec - yuorfaec\campaign_info\image-34188673.png.part"
Dec 22 20:38:50: �[33mdebug:�[39m �[34mFetcher:�[39m Commit "Y:\test\yuorfaec - yuorfaec\campaign_info\image-34188673.png.part" to "Y:\test\yuorfaec - yuorfaec\campaign_info\image-34188673.png; filesize: 3138 bytes
Dec 22 20:38:51: �[32minfo:�[39m �[34mPostDownloader:�[39m Download complete (#0.2): "Y:\test\yuorfaec - yuorfaec\campaign_info\image-34188673.png"
Dec 22 20:38:51: �[32minfo:�[39m �[34mPostDownloader:�[39m Download begin (#0.3): [type: image; ID: #34188673] -> image-34188673 (1).png
Dec 22 20:38:51: �[33mdebug:�[39m �[34mFetcher:�[39m Pipe "https://c8.patreon.com/3/200/34188673" to "Y:\test\yuorfaec - yuorfaec\campaign_info\image-34188673.png.part"
Dec 22 20:38:51: �[33mdebug:�[39m �[34mFetcherDownloadTask:�[39m (saveAsCopyIfNewer) Compare "Y:\test\yuorfaec - yuorfaec\campaign_info\image-34188673.png.part" with "Y:\test\yuorfaec - yuorfaec\campaign_info\image-34188673.png": Files match
Dec 22 20:38:51: �[33mdebug:�[39m �[34mFetcher:�[39m Clean up "Y:\test\yuorfaec - yuorfaec\campaign_info\image-34188673.png.part"
Dec 22 20:38:51: �[35mwarn:�[39m �[34mPostDownloader:�[39m Download skipped (#0.3): Destination file exists with same content (Y:\test\yuorfaec - yuorfaec\campaign_info\image-34188673.png)
Dec 22 20:38:51: �[32minfo:�[39m �[34mPostDownloader:�[39m Download batch complete (#0): 4 downloads; 3 completed; 0 errors; 1 skipped; 0 aborted
Dec 22 20:38:51: �[32minfo:�[39m �[34mPostDownloader:�[39m Done saving campaign info
Dec 22 20:38:51: �[33mdebug:�[39m �[34mPostDownloader:�[39m 4 posts fetched
Dec 22 20:38:51: �[33mdebug:�[39m �[34mPostDownloader:�[39m Post directories: {
  root: �[32m'Y:\\test\\yuorfaec - yuorfaec\\posts\\95146990 - alas'�[39m,
  info: �[32m'Y:\\test\\yuorfaec - yuorfaec\\posts\\95146990 - alas\\post_info'�[39m,
  audio: �[32m'Y:\\test\\yuorfaec - yuorfaec\\posts\\95146990 - alas\\audio'�[39m,
  video: �[32m'Y:\\test\\yuorfaec - yuorfaec\\posts\\95146990 - alas\\video'�[39m,
  images: �[32m'Y:\\test\\yuorfaec - yuorfaec\\posts\\95146990 - alas\\images'�[39m,
  audioPreview: �[32m'Y:\\test\\yuorfaec - yuorfaec\\posts\\95146990 - alas\\audio_preview'�[39m,
  videoPreview: �[32m'Y:\\test\\yuorfaec - yuorfaec\\posts\\95146990 - alas\\video_preview'�[39m,
  imagePreviews: �[32m'Y:\\test\\yuorfaec - yuorfaec\\posts\\95146990 - alas\\image_previews'�[39m,
  attachments: �[32m'Y:\\test\\yuorfaec - yuorfaec\\posts\\95146990 - alas\\attachments'�[39m,
  embed: �[32m'Y:\\test\\yuorfaec - yuorfaec\\posts\\95146990 - alas\\embed'�[39m,
  statusCache: �[32m'Y:\\test\\yuorfaec - yuorfaec\\.patreon-dl'�[39m
}
Dec 22 20:38:51: �[33mdebug:�[39m "Y:\test\yuorfaec - yuorfaec\.patreon-dl\status-cache.json" does not exist. Start with empty data
Dec 22 20:38:51: �[33mdebug:�[39m Status cache entry does not exist for post #95146990
Dec 22 20:38:51: �[32minfo:�[39m �[34mPostDownloader:�[39m Download post #95146990 (alas)
Dec 22 20:38:51: �[32minfo:�[39m �[34mPostDownloader:�[39m Save post info #95146990
Dec 22 20:38:52: �[32minfo:�[39m �[34mPostDownloader:�[39m Saved post summary to "Y:\test\yuorfaec - yuorfaec\posts\95146990 - alas\post_info\info.txt"
Dec 22 20:38:52: �[32minfo:�[39m �[34mPostDownloader:�[39m Saved post API data to "Y:\test\yuorfaec - yuorfaec\posts\95146990 - alas\post_info\post-api.json"
Dec 22 20:38:52: �[32minfo:�[39m �[34mPostDownloader:�[39m Create download tasks for post #95146990 -> video
Dec 22 20:38:52: �[32minfo:�[39m �[34mPostDownloader:�[39m Create download tasks for post #95146990 -> info elements
Dec 22 20:38:52: �[32minfo:�[39m �[34mPostDownloader:�[39m Download batch created (#1): 4 downloads pending
Dec 22 20:38:52: �[32minfo:�[39m �[34mPostDownloader:�[39m Download begin (#1.0): [type: video; ID: #258155918] -> video-258155918.mp4
Dec 22 20:38:52: �[33mdebug:�[39m �[34mFetcher:�[39m Pipe "https://stream.mux.com/00VNZXlRruj02S4sUT019U1Q1a6kxDFRB9LLj7lfiFHr01s/high.mp4?token=eyJhbGciOiJSUzI1NiIsImtpZCI6Ik5CY3o3Sk5RcUNmdDdWcmo5MWhra2lEY3Vyc2xtRGNmSU1oSFUzallZMDI0IiwidHlwIjoiSldUIn0.eyJzdWIiOiIwMFZOWlhsUnJ1ajAyUzRzVVQwMTlVMVExYTZreERGUkI5TExqN2xmaUZIcjAxcyIsImV4cCI6MTcwMzM4NjgwMCwiYXVkIjoidiIsInBsYXliYWNrX3Jlc3RyaWN0aW9uX2lkIjoiSXIwMkZtcXNxVW5NSXBFcUg4OU1kbHZXYTE1UXdPbzZkQ25lbEN0U0k5WUkifQ.msmi7niP1eKFRYws0vWFWyjYTSsync2GbFcDdM4ulWDIT0IcLMg2lMoCC-yTgxf3BTXyePq9sdZpUuqyl4FITT_5uaI-XVAyGNqiYgYOTf5tQVgNS9JLmDfEh7iB7RD3XgYZwWd1BsWzFxSvf7owTvVKcJq-rrME0cbmdlGuhBRNti3DwnpQL4X4DXayTX5EisDB41qcRzRi58ZWfqLkLISLqLllPZ33fMLUxowanbSo0u4Y-3O9METsCLTzUSK7V12i-TOpBIpEsB4fdNeL0UvCjqzqbTksSszPoNSHoEHhtppJDKNyoe3ZA2cm03YL0CBrrdmJWUMQJ_pB1XqPCA" to "Y:\test\yuorfaec - yuorfaec\posts\95146990 - alas\video\video-258155918.mp4.part"
Dec 22 20:38:53: �[32minfo:�[39m �[34mPostDownloader:�[39m Download begin (#1.1): [type: dummy; ID: #258155918] -> dummy-258155918-thumbnail.jpg
Dec 22 20:38:53: �[33mdebug:�[39m �[34mFetcher:�[39m Pipe "https://image.mux.com/00VNZXlRruj02S4sUT019U1Q1a6kxDFRB9LLj7lfiFHr01s/thumbnail.jpg?token=eyJhbGciOiJSUzI1NiIsImtpZCI6Ik5CY3o3Sk5RcUNmdDdWcmo5MWhra2lEY3Vyc2xtRGNmSU1oSFUzallZMDI0IiwidHlwIjoiSldUIn0.eyJzdWIiOiIwMFZOWlhsUnJ1ajAyUzRzVVQwMTlVMVExYTZreERGUkI5TExqN2xmaUZIcjAxcyIsImV4cCI6MTcwNTk3NzUyOCwiYXVkIjoidCIsInRpbWUiOjIuMH0.GW_yQpIRWLa2LvzA6J10O39nvXjqgbfu0HIVqYWMETRWQRSwFkQElbzkOh5Sspr00QYW0cKbYQXXVKxJ1dYl40BseQhzGkUToW4VBnNDtEndgixHAqrFgE0B9WtJnqFAyRrMe7rbh6cjyMuT3SNiKL31gU1BEs4IjwtPRZUKgA1cm7xoLUVuAw0WBrDNG8FO8UWBlD_l33N3tTMfVzbjm605taUBJ9ZkjrLWgUza9rIQWGqOFm0NlGJuxxv7XPaSlLQWl6gTXMhaDE3kFzHTTJ9oM-dFxhPmpq9kKSVD8MReMIhsPIl9VmyKTezkXd-ASlOJtf9gvnOE2YZfO7lCkg" to "Y:\test\yuorfaec - yuorfaec\posts\95146990 - alas\video\dummy-258155918-thumbnail.jpg.part"
Dec 22 20:38:53: �[33mdebug:�[39m �[34mFetcher:�[39m Commit "Y:\test\yuorfaec - yuorfaec\posts\95146990 - alas\video\dummy-258155918-thumbnail.jpg.part" to "Y:\test\yuorfaec - yuorfaec\posts\95146990 - alas\video\dummy-258155918-thumbnail.jpg; filesize: 180273 bytes
Dec 22 20:38:53: �[32minfo:�[39m �[34mPostDownloader:�[39m Download complete (#1.1): "Y:\test\yuorfaec - yuorfaec\posts\95146990 - alas\video\dummy-258155918-thumbnail.jpg"
Dec 22 20:38:53: �[32minfo:�[39m �[34mPostDownloader:�[39m Download begin (#1.2): [type: image; ID: #95146990] -> image-95146990.jpg
Dec 22 20:38:53: �[33mdebug:�[39m �[34mFetcher:�[39m Pipe "https://image.mux.com/00VNZXlRruj02S4sUT019U1Q1a6kxDFRB9LLj7lfiFHr01s/thumbnail.jpg?token=eyJhbGciOiJSUzI1NiIsImtpZCI6Ik5CY3o3Sk5RcUNmdDdWcmo5MWhra2lEY3Vyc2xtRGNmSU1oSFUzallZMDI0IiwidHlwIjoiSldUIn0.eyJzdWIiOiIwMFZOWlhsUnJ1ajAyUzRzVVQwMTlVMVExYTZreERGUkI5TExqN2xmaUZIcjAxcyIsImV4cCI6MTcwNTk3NzUyOCwiYXVkIjoidCIsInRpbWUiOjIuMH0.GW_yQpIRWLa2LvzA6J10O39nvXjqgbfu0HIVqYWMETRWQRSwFkQElbzkOh5Sspr00QYW0cKbYQXXVKxJ1dYl40BseQhzGkUToW4VBnNDtEndgixHAqrFgE0B9WtJnqFAyRrMe7rbh6cjyMuT3SNiKL31gU1BEs4IjwtPRZUKgA1cm7xoLUVuAw0WBrDNG8FO8UWBlD_l33N3tTMfVzbjm605taUBJ9ZkjrLWgUza9rIQWGqOFm0NlGJuxxv7XPaSlLQWl6gTXMhaDE3kFzHTTJ9oM-dFxhPmpq9kKSVD8MReMIhsPIl9VmyKTezkXd-ASlOJtf9gvnOE2YZfO7lCkg" to "Y:\test\yuorfaec - yuorfaec\posts\95146990 - alas\post_info\image-95146990.jpg.part"
Dec 22 20:38:53: �[33mdebug:�[39m �[34mFetcher:�[39m Commit "Y:\test\yuorfaec - yuorfaec\posts\95146990 - alas\post_info\image-95146990.jpg.part" to "Y:\test\yuorfaec - yuorfaec\posts\95146990 - alas\post_info\image-95146990.jpg; filesize: 180273 bytes
Dec 22 20:38:53: �[32minfo:�[39m �[34mPostDownloader:�[39m Download complete (#1.2): "Y:\test\yuorfaec - yuorfaec\posts\95146990 - alas\post_info\image-95146990.jpg"
Dec 22 20:38:54: �[32minfo:�[39m �[34mPostDownloader:�[39m Download begin (#1.3): [type: image; ID: #95146990] -> image-95146990 (1).jpg
Dec 22 20:38:54: �[33mdebug:�[39m �[34mFetcher:�[39m Pipe "https://image.mux.com/00VNZXlRruj02S4sUT019U1Q1a6kxDFRB9LLj7lfiFHr01s/thumbnail.jpg?token=eyJhbGciOiJSUzI1NiIsImtpZCI6Ik5CY3o3Sk5RcUNmdDdWcmo5MWhra2lEY3Vyc2xtRGNmSU1oSFUzallZMDI0IiwidHlwIjoiSldUIn0.eyJzdWIiOiIwMFZOWlhsUnJ1ajAyUzRzVVQwMTlVMVExYTZreERGUkI5TExqN2xmaUZIcjAxcyIsImV4cCI6MTcwNTk3NzUyOCwiYXVkIjoidCIsInRpbWUiOjIuMH0.GW_yQpIRWLa2LvzA6J10O39nvXjqgbfu0HIVqYWMETRWQRSwFkQElbzkOh5Sspr00QYW0cKbYQXXVKxJ1dYl40BseQhzGkUToW4VBnNDtEndgixHAqrFgE0B9WtJnqFAyRrMe7rbh6cjyMuT3SNiKL31gU1BEs4IjwtPRZUKgA1cm7xoLUVuAw0WBrDNG8FO8UWBlD_l33N3tTMfVzbjm605taUBJ9ZkjrLWgUza9rIQWGqOFm0NlGJuxxv7XPaSlLQWl6gTXMhaDE3kFzHTTJ9oM-dFxhPmpq9kKSVD8MReMIhsPIl9VmyKTezkXd-ASlOJtf9gvnOE2YZfO7lCkg" to "Y:\test\yuorfaec - yuorfaec\posts\95146990 - alas\post_info\image-95146990.jpg.part"
Dec 22 20:38:54: �[33mdebug:�[39m �[34mFetcherDownloadTask:�[39m (saveAsCopyIfNewer) Compare "Y:\test\yuorfaec - yuorfaec\posts\95146990 - alas\post_info\image-95146990.jpg.part" with "Y:\test\yuorfaec - yuorfaec\posts\95146990 - alas\post_info\image-95146990.jpg": Files match
Dec 22 20:38:54: �[33mdebug:�[39m �[34mFetcher:�[39m Clean up "Y:\test\yuorfaec - yuorfaec\posts\95146990 - alas\post_info\image-95146990.jpg.part"
Dec 22 20:38:54: �[35mwarn:�[39m �[34mPostDownloader:�[39m Download skipped (#1.3): Destination file exists with same content (Y:\test\yuorfaec - yuorfaec\posts\95146990 - alas\post_info\image-95146990.jpg)
Dec 22 20:39:03: �[33mdebug:�[39m �[34mFetcher:�[39m Commit "Y:\test\yuorfaec - yuorfaec\posts\95146990 - alas\video\video-258155918.mp4.part" to "Y:\test\yuorfaec - yuorfaec\posts\95146990 - alas\video\video-258155918.mp4; filesize: 25054416 bytes

this url format not support [https://www.patreon.com/user/posts?u=userId]

request url: https://www.patreon.com/user/posts?u=80821958

detail log

May 06 20:18:54: info: PostDownloader: Targeting posts by 'user'
May 06 20:18:54: debug: PostDownloader: Fetch initial data from "https://www.patreon.com/user"
May 06 20:18:55: debug: PageParser: Parse initial data from https://www.patreon.com/user
May 06 20:18:55: debug: PageParser: Trying pattern: /window.patreon\s*?=\s*?({.+?});/gm
May 06 20:18:55: debug: PageParser: No match for pattern: /window.patreon\s*?=\s*?({.+?});/gm
May 06 20:18:55: debug: PageParser: Trying pattern: /<script id="__NEXT_DATA__" type="application\/json">(.+)</script>/gm
May 06 20:18:55: debug: PostDownloader: Initial data: campaign ID 'undefined'; current user ID '127971141'
May 06 20:18:55: error: PostDownloader: Campaign ID not found in initial data of "https://www.patreon.com/user"
May 06 20:18:55: warn: PostDownloader end with error

Images without a file type.

Occasionally an image would encounter a value of null when checking the id and be given its id or an assortment of like 50-60 characters as the file name. Issue is, the file wouldn’t have any extension connected. No jpg, webp, png, etc. Just a file name.
I don’t believe it was considered an error in logs.

It consistently happened when trying to download an image from a Patreon post that had a video link attached to it and images “embedded” into the post. They weren’t attachments or files.

I don’t have it set to download videos. ffmpeg is installed but not being used. At first I had issues with emojis but I checked issues and switched my node js version to 22 and it fixed them. When I encountered this I tried switching over to 18 LTS. I’m not sure if the issue occurred when I was on 20 LTS. I can check if you’d like.

I didn’t have logging enabled outside of cmd.

Update Brew

Your most recent update was not yet updated on HomeBrew, if that's in your control would you mind pushing to it? The update you pushed was the issue I raised a month or so back and it would be great to have it. Also if there is another way to contact you in the future, would you mind providing so I do not bother you here? I appreciate it, thank you!

Not an issue

Hey Patrick,

Sorry to bother you, but I don't know of any other way to contact you regarding a feature request. I was wondering if there's a way to incorporate a feature in the config.json to list multiple target URLs that I frequently download from. This would automate the selection process, removing the need to manually uncomment the URLs in the config, which can be a bit of a hassle. It would be a great convenience to just update the cookie when necessary and have "patreon-dl" cycle through the predefined list of URLs.

[Feature req.] Generating a readable index file (HTML, Markdown...) to browse/navigate content

Hi!

Thanks again for the hard work in patreon-dl. I've been using it recently and it works great!

I'd like to suggest a feature if possible.

While the content is well downloaded and placed into the respective folders, it's not easy or a great experience to browse and access it quickly. I was wondering if patreon-dl could have an option that generates a readable index file (format could be HTML or Markdown, not sure what's easier/best/more scalable) at the root of each patreon directory?

That's it! Please le me know your thoughts, thanks!

PostDownloader: Post #93397294 is not viewable by current user

Hello. I keep getting this error message when trying to download. I provide the appropriate cookie patreon_device_id and it is not working. I know the cookie works because i've tried it with other downloader like Stacher. Can you help me diagnose the issue? Thank you!

URLs only Download first one

using 1.7, when send mutiple URLs to CLI, only first one will be downloaded, the await seems not resolved and the process exit after first download finished.
Using Node.js v20.9.0

What am I doing wrong here?

I am encountering an issue where I can't seem to download audio content from Patreon posts, which seems to occur as if the cookie is incorrect. However, I have verified the cookie directly from my browser's developer tools, ensuring it's correct based on the directions in the Wiki. Can you help identify what I might be overlooking?

I'm using the .conf format for the config file as per the tool's documentation. The tool is downloading images alongside audio, which I don't require. Additionally, the audio files are not in a listenable format. Could there be a configuration or tool-related issue?

Command I am using in the terminal:

patreon-dl --config-file /Path/to/config_patreon-dl.conf --cookie "12345678-9abc-def0-1234-56789abcdef0" --out-dir "/Path/to" https://www.patreon.com/creatorname/posts

Path I am using to my config file (wasn't sure if I was supposed to use .conf or .json):

/Path/to/config_patreon-dl.conf

Config File Contents

cookie = 12345678-9abc-def0-1234-56789abcdef0
use.status.cache = 1
no.prompt = 1
path.to.ffmpeg = /opt/homebrew/opt/ffmpeg@4/bin/ffmpeg

[output]
out.dir = /Path/to/dir
campaign.dir.name.format = "{creator.vanity}[ - ]?{campaign.name}"
content.dir.name.format = "{content.id}[ - ]?{content.name}"
media.filename.format = "{media.filename}"

[include]
locked.content = 1
posts.with.media.type = audio
campaign.info = 1
content.info = 1
content.media = audio

[request]
max.retries = 3
max.concurrent = 10
min.time = 333

[logger.console]
enabled = 1
log.level = info
include.date.time = 1
include.level = 1
include.originator = 1
include.error.stack = 0
date.time.format = "mmm dd HH:MM:ss"
color = 1

Filtering Tier

Hello again... sorry! Maybe this one is more difficult, I hope not, but I think it's the last type of filter that I miss. After downloading the posts I need to delete the lowest tier folders. It's not a huge job, but if the filter is possible, the better, I think.

Great job, congrats and again, many thanks!

Download specific dates

Is this possible to scrape before, after or between specific dates? I'd like like this function to be implemented please 🙃

Getting this error when I attempt to download

internal/process/esm_loader.js:74
internalBinding('errors').triggerUncaughtException(
^

Error [ERR_MODULE_NOT_FOUND]: Cannot find package 'stream' imported from /usr/local/lib/node_modules/patreon-dl/dist/utils/Fetcher.js
at packageResolve (internal/modules/esm/resolve.js:655:9)
at moduleResolve (internal/modules/esm/resolve.js:696:18)
at Loader.defaultResolve [as _resolve] (internal/modules/esm/resolve.js:810:11)
at Loader.resolve (internal/modules/esm/loader.js:86:40)
at Loader.getModuleJob (internal/modules/esm/loader.js:230:28)
at ModuleWrap. (internal/modules/esm/module_job.js:56:40)
at link (internal/modules/esm/module_job.js:55:36) {
code: 'ERR_MODULE_NOT_FOUND'
}

Was working yesterday but not anymore

Hi there,

First of all, thanks for creating and sharing such a useful tool. really appreciate.

I've tested it yesterday and it worked perfectly, just by using:

patreon-dl https://www.patreon.com/[creator]/posts

I've tried the same command today and ended up being stuck on info: PostDownloader: Fetch target post. So I've read about cookies (which I didn't specify yesterday) and copied/pasted its value as suggested:

patreon-dl https://www.patreon.com/posts/project-files-100875769 -c "patreon_device_id=XXXX; patreon_location_country_code=XX; patreon_locale_code=xx-XX; __cf_bm=XXXX; patreon_currency_pref=XXX; a_csrf=XXXX; analytics_session_id=XXX; __ssid=XXX; session_id=XXX"

And end up with the following:

info: PostDownloader: Targeting post #100875769 Apr 15 11:12:18: info: PostDownloader: Fetch target post Apr 15 11:17:21: error: PostDownloader: Error requesting API URL "https://www.patreon.com/api/posts/100875769?include=campaign%2Caccess_rules%2Cattachments%2Caudio%2Caudio_preview.null%2Cimages%2Cmedia%2Cnative_video_insights%2Cpoll.choices%2Cpoll.current_user_responses.user%2Cpoll.current_user_responses.choice%2Cpoll.current_user_responses.poll%2Cuser%2Cuser_defined_tags%2Cti_checks&sort=-published_at&json-api-version=1.0&filter%5Bcontains_exclusive_posts%5D=true&filter%5Bis_draft%5D=false": (FetcherError) request to https://www.patreon.com/api/posts/100875769?include=campaign%2Caccess_rules%2Cattachments%2Caudio%2Caudio_preview.null%2Cimages%2Cmedia%2Cnative_video_insights%2Cpoll.choices%2Cpoll.current_user_responses.user%2Cpoll.current_user_responses.choice%2Cpoll.current_user_responses.poll%2Cuser%2Cuser_defined_tags%2Cti_checks&sort=-published_at&json-api-version=1.0&filter%5Bcontains_exclusive_posts%5D=true&filter%5Bis_draft%5D=false failed, reason: connect ETIMEDOUT 2606:4700::6810:180e:443 (retried 3 times) Apr 15 11:17:21: error: PostDownloader: Failed to fetch posts Apr 15 11:17:21: warn: PostDownloader: End with error Apr 15 11:17:21: warn: PostDownloader end with error

When I try to open "https://www.patreon.com/api/posts/100875769?include=campaign%2Caccess_rules%2Cattachments%2Caudio%2Caudio_preview.null%2Cimages%2Cmedia%2Cnative_video_insights%2Cpoll.choices%2Cpoll.current_user_responses.user%2Cpoll.current_user_responses.choice%2Cpoll.current_user_responses.poll%2Cuser%2Cuser_defined_tags%2Cti_checks&sort=-published_at&json-api-version=1.0&filter%5Bcontains_exclusive_posts%5D=true&filter%5Bis_draft%5D=false" in the browser, it works. Cookie issue?

Any idea on how to fix this? Have I missed something?

error: PostDownloader: Campaign ID not found in initial data

Hello! Sorry here I'm again. I tried with 3 different patreon addresses and I all get the same message. I tried updating and the problem persists.

info: PostDownloader: Targeting posts by 'cthulhu_architect'
error: PostDownloader: Campaign ID not found in initial data of "https://www.patreon.com/cthulhu_architect"
warn: PostDownloader end with error

Thanks

Cannot download initial page : Cloudflare captcha

Hi, patreon-dl was working fine until this week
I have an error (see below)

After dumping the resulting html I got something like <!DOCTYPE html><html lang="en-US"><head><title>Just a moment...</title></body></html>
Which made me think the script got locked by the Cloudflare captcha

Maybe it should use the provided cookie value to bypass the captcha?

Complete log

Jun 18 19:40:56: info: PostDownloader: Targeting posts by 'CREATOR_NAME'
Jun 18 19:40:56: debug: PostsFetcher: Fetch initial data from "https://www.patreon.com/CREATOR_NAME"
Jun 18 19:40:56: debug: PostsFetcher: next() requested (0)
Jun 18 19:40:56: debug: PageParser: Parse initial data from https://www.patreon.com/CREATOR_NAME
Jun 18 19:40:56: debug: PageParser: Trying pattern: /window\.patreon\s*?=\s*?({.+?});/gm
Jun 18 19:40:56: debug: PageParser: No match for pattern: /window\.patreon\s*?=\s*?({.+?});/gm
Jun 18 19:40:56: debug: PageParser: Trying pattern: /<script id="__NEXT_DATA__" type="application\/json">(.+)<\/script>/gm
Jun 18 19:40:56: debug: PageParser: No match for pattern: /<script id="__NEXT_DATA__" type="application\/json">(.+)<\/script>/gm
Jun 18 19:40:56: error: PostsFetcher: Error parsing initial data from "https://www.patreon.com/CREATOR_NAME": Initial data not found - no regex matches
Jun 18 19:40:56: debug: PostsFetcher: next() handled (0)
Jun 18 19:40:56: info: PostDownloader: Done downloading posts by 'CREATOR_NAME'
Jun 18 19:40:56: info: PostDownloader: Total 0 / undefined posts processed
Jun 18 19:40:56: info: PostDownloader end

How to avoid rerunning patreon-dl to keep downloading posts (possible postparser bug?)

I have to keep rerunning the program to keep downloading posts. Is there a way to just download everything from a patreon page. It downloads roughly 20 posts and then stops and says its finished but when i a rerun again it starts to download new posts. The program says there is no more posts but there definitely is

Anyway to fix this. Here is what it says when it finishes. I can rerun and it skips all the posts downloaded and starts to download more.

May 27 21:30:25: info: PostDownloader: Download batch complete (#21): 8 downloads; 8 completed; 0 errors; 0 skipped; 0 aborted
May 27 21:30:25: info: PostDownloader: Fetch more posts
May 27 21:30:25: warn: PostParser: 'included' field missing in API response of "https://www.patreon.com/api/posts?include=campaign%2Caccess_rules%2Caccess_rules.tier.null%2Cattachments%2Caudio%2Caudio_preview.null%2Cimages%2Cmedia%2Cnative_video_insights%2Cpoll.choices%2Cpoll.current_user_responses.user%2Cpoll.current_user_responses.choice%2Cpoll.current_user_responses.poll%2Cuser%2Cuser_defined_tags%2Cti_checks&sort=-published_at&json-api-version=1.0&filter%5Bcontains_exclusive_posts%5D=true&filter%5Bis_draft%5D=false&filter%5Bcampaign_id%5D=791478" or has incorrect type - no media items and campaign info will be returned
May 27 21:30:25: warn: PostParser: No posts found in API response of "https://www.patreon.com/api/posts?include=campaign%2Caccess_rules%2Caccess_rules.tier.null%2Cattachments%2Caudio%2Caudio_preview.null%2Cimages%2Cmedia%2Cnative_video_insights%2Cpoll.choices%2Cpoll.current_user_responses.user%2Cpoll.current_user_responses.choice%2Cpoll.current_user_responses.poll%2Cuser%2Cuser_defined_tags%2Cti_checks&sort=-published_at&json-api-version=1.0&filter%5Bcontains_exclusive_posts%5D=true&filter%5Bis_draft%5D=false&filter%5Bcampaign_id%5D=791478"
May 27 21:30:25: info: PostDownloader: Done downloading posts by 'letstalkaboutmathrock'
May 27 21:30:25: info: PostDownloader: Total 21 / null posts processed (skipped: 139 redundant)
May 27 21:30:25: info: PostDownloader end

Total 1 targets processed
-------------------------

0: https://www.patreon.com/letstalkaboutmathrock/posts
Total 21 / null posts processed (skipped: 139 redundant)

here is my config and launch command:

patreon-dl -C config.conf
   1 [downloader]
   2 # URL of content to download
   3 # You can specify multiple URLs by separating them with a comma.
   4 # Alternatively, you can use a file to supply URLs. In this case, you would
   5 # provide the path to the file here. The file should contain a list of the
   6 # target URLs, each in its own line, along with any target-specific 'include'
   7 # config. See project documentation for example.
   8 target.url = https://www.patreon.com/letstalkaboutmathrock/posts
   9 
  10 # Cookie to include in requests; required for accessing 
  11 # patron-only content
  12 cookie = "mycookiehere"

Filtering download

First, many thanks, works great. But have someway to download just the posts with attachments?

Thanks again

Campaign ID not found in initial data....

I just used patreon-dl to download from a creator I have downloaded from before but it cannot any more because of this error?

patreon-dl v1.2.2 Patreon Downloader

Jun 05 10:17:45: debug: Created PostDownloader instance with config:  {
  type: 'post',
  targetURL: 'https://www.patreon.com/justinalexander/posts',
  postFetch: { type: 'byUser', vanity: 'justinalexander', filters: undefined },
  outDir: '/srv/dev-disk-by-uuid-81c52823-5c84-400a-96e0-edbd46c93db4/patreon',
  useStatusCache: true,
  pathToFFmpeg: null,
  pathToYouTubeCredentials: null,
  dirNameFormat: {
    campaign: '{creator.vanity}[ - ]?{campaign.name}',
    content: '{content.id}[ - ]?{content.name}'
  },
  filenameFormat: { media: '{media.filename}' },
  include: {
    lockedContent: true,
    postsWithMediaType: 'any',
    campaignInfo: true,
    contentInfo: true,
    previewMedia: true,
    contentMedia: true,
    allMediaVariants: false
  },
  request: { maxRetries: 3, maxConcurrent: 10, minTime: 333 },
  fileExistsAction: { content: 'skip', info: 'saveAsCopyIfNewer', infoAPI: 'overwrite' }
}
Jun 05 10:17:45: info: PostDownloader: Targeting posts by 'justinalexander'
Jun 05 10:17:45: debug: PostDownloader: Fetch initial data from URL "https://www.patreon.com/justinalexander"
Jun 05 10:17:48: debug: PageParser: Parse initial data from https://www.patreon.com/justinalexander
Jun 05 10:17:48: debug: PageParser: Trying pattern: /window\.patreon\s*?=\s*?({.+?});/gm
Jun 05 10:17:48: debug: PageParser: No match for pattern: /window\.patreon\s*?=\s*?({.+?});/gm
Jun 05 10:17:48: debug: PageParser: Trying pattern: /<script id="__NEXT_DATA__" type="application\/json">(.+)<\/script>/gm
Jun 05 10:17:48: debug: PostDownloader: Initial data: campaign ID 'undefined'; current user ID 'undefined'
Jun 05 10:17:48: error: PostDownloader: Campaign ID not found in initial data of "https://www.patreon.com/justinalexander"
Jun 05 10:17:48: warn: PostDownloader end with error

Any idea why this has happened. The creators latestpot is a PDF post?

TIA

Edit: Added a zip of the page source in case that helps.

https __www.patreon.com_justinalexander_posts.html.zip

Failed to fetch posts

hello
I use clash(VPN) and can access patreon successfully
but can't download
what should I do?

my command
patreon-dl "https://www.patreon.com/posts/minnie-8k-3d-vr-102928930" -c "patreon_device_id=xxx; _ketch_consent_v1_=xxx; __ssid=xxx; patreon_locale_code=xxx; patreon_location_country_code=xx; _gid=xxx7; _ga=xxx; patreon_currency_pref=xxx; g_state=xxx; group_id=xxx; session_id=xxxI; __cf_bm=xxx; analytics_session_id=xxx; _ga_JF55G82FNT=xxx" -o "F:\"

May 03 12:51:50: info: PostDownloader: Targeting post #102928930 May 03 12:51:50: info: PostDownloader: Fetch target post May 03 12:51:51: error: PostDownloader: Error requesting API URL "https://www.patreon.com/api/posts/102928930?include=campaign%2Caccess_rules%2Cattachments%2Caudio%2Caudio_preview.null%2Cimages%2Cmedia%2Cnative_video_insights%2Cpoll.choices%2Cpoll.current_user_responses.user%2Cpoll.current_user_responses.choice%2Cpoll.current_user_responses.poll%2Cuser%2Cuser_defined_tags%2Cti_checks&sort=-published_at&json-api-version=1.0&filter%5Bcontains_exclusive_posts%5D=true&filter%5Bis_draft%5D=false": (FetcherError) request to https://www.patreon.com/api/posts/102928930?include=campaign%2Caccess_rules%2Cattachments%2Caudio%2Caudio_preview.null%2Cimages%2Cmedia%2Cnative_video_insights%2Cpoll.choices%2Cpoll.current_user_responses.user%2Cpoll.current_user_responses.choice%2Cpoll.current_user_responses.poll%2Cuser%2Cuser_defined_tags%2Cti_checks&sort=-published_at&json-api-version=1.0&filter%5Bcontains_exclusive_posts%5D=true&filter%5Bis_draft%5D=false failed, reason: (retried 3 times) May 03 12:51:51: error: PostDownloader: Failed to fetch posts May 03 12:51:51: warn: PostDownloader: End with error May 03 12:51:51: warn: PostDownloader end with error There were errors processing the following URLs: [ "https://www.patreon.com/posts/minnie-8k-3d-vr-102928930" ]

Json files

Sorry, here I'm again.
The format of the files I downloaded is json, but with the tool, they downloaded as txt. Is there something in the configuration that I can change to resolve this?

Many thanks!

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.