0.0
No release in over a year
This gem is to help parse Substack exports.
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
 Dependencies

Runtime

~> 3.2
~> 1.2.1
 Project Readme

SubstackParser

This gem is to help parse Substack exports.

Installation

Add this line to your application's Gemfile:

gem 'substack_parser'

And then execute:

$ bundle install

Or install it yourself as:

$ gem install substack_parser

Usage

To parse the export:

parser = SubstackParser.new("path/to/substack_export")

Substack provides data for mailing lists, posts, post visits, and posts mailed.

Mailing List

parser.mailing_list # List of mailing lists

[
    {
        "email"=>"dummy_email1@example.com",
        "active_subscription"=>"FALSE",
        "expiry"=>nil,
        "plan"=>"other",
        "email_disabled"=>"FALSE"
         "digest_enabled"=>"FALSE",
        "created_at"=>"2022-11-15T07:55:22.660Z"
    }, .....
]

Post List

parser.post_list # List of posts

[
    {
        "post_id"=>1,
        "post_date"=>"2023-06-22T04:58:05.613Z",
        "is_published"=>"TRUE",
        "email_sent_at"=>"2023-06-22T04:58:05.675Z",
        "inbox_sent_at"=>"2023-06-22T04:58:05.675Z",
        "type"=>"newsletter",
        "audience"=>"only_paid",
        "title"=>"One",
        "subtitle"=>"Lorem ipsum dolor",
        "podcast_url"=>nil,
        "content"=>"<p>Lorem ipsum dolor ........</p>"
    }, ....
]

Read List

parser.read_list #To get all the read list

[
    {
        "post_id"=>"1",
        "timestamp"=>"2023-01-05T10:36:08.164Z",
        "email"=>"dummy_email1@gmail.com",
        "post_type"=>"newsletter",
        "post_audience"=>"founding",
        "active_subscription"=>"TRUE",
        "country"=>nil,
        "city"=>nil,
        "region"=>nil,
        "device_type"=>nil,
        "client_os"=>nil,
        "client_type"=>nil,
        "user_agent"=>"Mozilla/5.0"
    }
]

parser.get_read_list_for_post(post_id) #To get read list a post

Post Email List

parser.emails_sent_list #To get all the post emails that were sent

[
    {
        "post_id"=>"1",
        "timestamp"=>"2023-01-05T10:35:15.735Z",
        "email"=>"dummy_email1@gmail.com",
        "post_type"=>"newsletter",
        "post_audience"=>"founding",
        "active_subscription"=>"FALSE"
    } ......
]


parser.get_emails_sent_list_for_post(post_id) #To get emails sent for a post

Contributing

Bug reports and pull requests are welcome on GitHub at https://github.com/betacraft/substack_parser.

License

The gem is available as open source under the terms of the MIT License.