I want comments on my social media crossposts to show up on my blog as a comment section, and mostly this works well: modern systems ( Mastodon, Bluesky, LessWrong, etc) provide APIs where you can load the replies associated with a post. On the other hand, older systems like Facebook are more locked down: they want to keep your content inside the platform as part of their economic moat.
Still, Facebook will show all the comments on a post to anyone who visits it, even if logged out. You have to dismiss a popup and click "show more" and "see replies" a few times, but it's all public. At times I've written scripts to export the comments, but they're quite brittle: Facebook doesn't design their pages to be easy to scrape, and so my code has relied on incidental things that only happen to work.
Even though this is not a permanent solution, I've had another go at writing a comment exporter (code). It's not as thorough as past times: I couldn't figure out easy was to get the timestamp or links to the comment on Facebook, and I've left both out. I also had to switch my opt-out from working on user id to user name, which is less robust. But it works! I've gone back through June 2019, fetching comments for any posts where I was missing them.
I don’t know about better, but there are some ways to DRY up your code a bit with some higher-order functions and, eliminate nested
if
statements that I tend to have more trouble following. Your approach is pretty straightforward, and mostly my suggestions will be minor refactors at best.I’ll go through it tonight, and post it as a pull request, that way it will be easier to discuss any particular line.
One general suggestion I have is to write some test code that can notify you when something breaks. Since you are forced to rely on a brittle solution, knowing when it eventually breaks will helpful for the future.