Reddit API wrapper for Julia. This package is still a work in progress, and most of the planned functionality is yet to be implemented.
Reddit account - A Reddit account is required to access Reddit's API. Create one at reddit.com.
Client ID & Client Secret - These two values are needed to access Reddit's API as a script application, which is currently the only aplication type supported by this package. If you don’t already have a client ID and client secret, follow Reddit’s First Steps Guide to create them.
User Agent - A user agent is a unique identifier that helps Reddit determine the source of network requests. To use Reddit’s API, you need a unique and descriptive user agent.
The recommended format is:
<platform>:<app ID>:<version string> (by /u/<Reddit username>).
android:com.example.myredditapp:v1.2.3 (by /u/kemitche).
Read more about user-agents at Reddit’s API wiki page.
The package can be installed with Julia's package manager,
either by using the Pkg REPL mode (press
] to enter):
pkg> add Reddit
or by using Pkg functions
julia> using Pkg; Pkg.add("Reddit")
The Reddit script application and user account credentials mentioned in the prerequisites section can be used to create a
creds = Credentials("CLIENT_ID", "CLIENT_SECRET", "USER_AGENT", "USER_NAME", "PASSWORD")
The information required to create
Credentials can be stored in an ini file. The example config file, config.ini, contains two example clients named client1 and client2, with placeholders for the information.
[client1] client_id=CLIENT_ID_1 client_secret=CLIENT_SECRET_1 user_agent=USER_AGENT_1 password=PASSWORD_1 username=USER_NAME_1 [client2] client_id=CLIENT_ID_2 client_secret=CLIENT_SECRET_2 user_agent=USER_AGENT_2 password=PASSWORD_2 username=USER_NAME_2
readconfig() function can be used to read credentials information from an ini file.
# read credentials from default config.ini creds = readconfig("CLIENT_NAME") # read credentials from an alternate ini creds = readconfig("CLIENT_NAME", "PATH/TO/ALTERNATE.ini")
In order to access Reddit's API, the
Credentials need to be authorized. The
authorize() function can be used with
Credentials to get an
Authorized type, which contains the same fields as
Credentials with the addition of a
token representing the Oauth access token needed to interact with most of Reddit's API.
auth = authorize(creds)
token() function can also be called with
Credentials to get the access token without creating an
accesstoken = token(creds)
Authorized credentials can then be used in the various API call functions included in this project.
Get information about user account used to create the script application.
myinfo = me(auth)
Get karma breakdown for user account used to create the script application.
mykarma = karma(auth)
Get the number of subsribers for /r/Julia
subcount = subscribers(Subreddit("Julia"), auth)
Get an array of friends for the user account associated with the script application.
f = friends(auth)
Authorized object can also be set as the default using the
default!() function. When the default credentials are set, the same API call functions can be used without specifying the
Authorized to use.
default!(auth) myinfo = me() mykarma = karma() subcount = subscribers(Subreddit("Julia")) f = friends()
Get comments made by users.
# get comments made by default user mycomments = comments() # get comments made by /user/USERNAME theircomments = comments(User("USERNAME"))
The Reddit API will only return up to 1000 items in a listing, so the
comments() function will return a max of 1000 comments. The number of comments to fetch and the sorting can be specified with the
# get top 100 comments by /user/USERNAME topcomments = comments(User("USERNAME"), count=100, sort="top")
Default sorting is by new. Other options are hot, top, and controversial.
Get the text of a user's latest comment.
text = comments(User("USERNAME"), count=1)["body"]
Reply to a user's latest comment
reply(comments(User("USERNAME"), count=1)["name"], "REPLY TEXT")
Submit a new text post to a subreddit.
submit(Subreddit("SUBREDDIT"), "TITLE", "BODY TEXT")
Submit a new link post to a subreddit
submit(Subreddit("SUBREDDIT"), "TITLE", "URL", kind="link")
Default kind is "self" for text posts.