devRanta
devRanta is the best async devRant client written in Python. Authentication is only needed for half of the functionality; thus, the username and password are optional parameters when constructing the main class of this package (Api). You can find the latest packages in tar and wheel format here.
Running
make run
Testing
Tests are only made for methods not requireing authentication. I do not see value in mocking requests.
make test
How to use
Implementation:
from devranta.api import Api
api = Api(username="optional!", password="optional!")
async def list_rants():
async for rant in api.get_rants():
print(rant["user_username"], ":", rant["text"])
See tests for examples on how to use.
devRant API Documentation
For people wanting to build their own client.
TODO: document responses.
Base URL
https://devrant.com/api
Authentication
- Uses
dr_token
cookie withtoken_id
,token_key
, anduser_id
. - Required for endpoints needing user authentication.
guid
,plat
,sid
,seid
included in requests for session tracking.
Endpoints
User Management
-
Register User
- URL:
/api/users
- Method: POST
- Parameters:
app
: 3 (constant)type
: 1 (constant)email
: User emailusername
: User usernamepassword
: User passwordguid
: Unique identifier (fromgetMyGuid
)plat
: 3 (constant)sid
: Session start time (fromgetSessionStartTime
)seid
: Session event ID (fromgetSessionEventId
)
- Response: JSON with
success
,auth_token
, orerror
anderror_field
- Description: Creates a new user account.
- URL:
-
Login User
- URL:
/api/users/auth-token
- Method: POST
- Parameters:
app
: 3username
: User usernamepassword
: User passwordguid
: Unique identifierplat
: 3sid
: Session start timeseid
: Session event ID
- Response: JSON with
success
,auth_token
, orerror
- Description: Authenticates user and returns auth token.
- URL:
-
Edit Profile
- URL:
/api/users/me/edit-profile
- Method: POST
- Parameters:
app
: 3token_id
: Token IDtoken_key
: Token keyuser_id
: User IDguid
,plat
,sid
,seid
profile_about
: User bioprofile_skills
: User skillsprofile_location
: User locationprofile_website
: User websiteprofile_github
: GitHub username
- Response: JSON with
success
- Description: Updates user profile information.
- URL:
-
Forgot Password
- URL:
/api/users/forgot-password
- Method: POST
- Parameters:
app
: 3username
: User usernameguid
,plat
,sid
,seid
- Response: JSON with
success
- Description: Initiates password reset process.
- URL:
-
Resend Confirmation Email
- URL:
/api/users/me/resend-confirm
- Method: POST
- Parameters:
app
: 3token_id
,token_key
,user_id
,guid
,plat
,sid
,seid
- Response: JSON with
success
- Description: Resends account confirmation email.
- URL:
-
Delete Account
- URL:
/api/users/me
- Method: DELETE
- Parameters:
app
: 3token_id
,token_key
,user_id
,guid
,plat
,sid
,seid
- Response: JSON with
success
- Description: Deletes user account.
- URL:
-
Mark News as Read
- URL:
/api/users/me/mark-news-read
- Method: POST
- Parameters:
app
: 3token_id
,token_key
,user_id
,guid
,plat
,sid
,seid
news_id
: News item ID
- Response: JSON with
success
- Description: Marks a news item as read for logged-in users.
- URL:
Rants
-
Get Rant
- URL:
/api/devrant/rants/{rant_id}
- Method: GET
- Parameters:
app
: 3token_id
,token_key
,user_id
,guid
,plat
,sid
,seid
last_comment_id
: 999999999999 (optional)links
: 0 (optional)
- Response: JSON with
rant
(text, tags) - Description: Retrieves a specific rant by ID.
- URL:
-
Post Rant
- URL:
/api/devrant/rants
- Method: POST
- Parameters (FormData):
app
: 3rant
: Rant texttags
: Comma-separated tagstoken_id
,token_key
,user_id
type
: Rant type IDimage
: Optional image file (img/gif)
- Response: JSON with
success
,rant_id
, orerror
- Description: Creates a new rant.
- URL:
-
Edit Rant
- URL:
/api/devrant/rants/{rant_id}
- Method: POST
- Parameters (FormData):
app
: 3rant
: Rant texttags
: Comma-separated tagstoken_id
,token_key
,user_id
image
: Optional image file
- Response: JSON with
success
orfail_reason
- Description: Updates an existing rant.
- URL:
-
Delete Rant
- URL:
/api/devrant/rants/{rant_id}
- Method: DELETE
- Parameters:
app
: 3token_id
,token_key
,user_id
,guid
,plat
,sid
,seid
- Response: JSON with
success
- Description: Deletes a rant.
- URL:
-
Vote on Rant
- URL:
/api/devrant/rants/{rant_id}/vote
- Method: POST
- Parameters:
app
: 3token_id
,token_key
,user_id
,guid
,plat
,sid
,seid
vote
: 1 (upvote), -1 (downvote), 0 (remove vote)reason
: Downvote reason ID (required for downvote)
- Response: JSON with
success
orconfirmed
(false if unverified) - Description: Votes on a rant.
- URL:
-
Favorite/Unfavorite Rant
- URL:
/api/devrant/rants/{rant_id}/{favorite|unfavorite}
- Method: POST
- Parameters:
app
: 3token_id
,token_key
,user_id
,guid
,plat
,sid
,seid
- Response: JSON with
success
- Description: Favorites or unfavorites a rant.
- URL:
-
Get Rant Feed
- URL:
/api/devrant/rants
- Method: GET
- Parameters:
app
: 3token_id
,token_key
,user_id
,guid
,plat
,sid
,seid
ids
: JSON string of IDs (optional)
- Response: JSON with
success
,num_notifs
- Description: Retrieves rant feed with notification count.
- URL:
Comments
-
Get Comment
- URL:
/api/comments/{comment_id}
- Method: GET
- Parameters:
app
: 3token_id
,token_key
,user_id
,guid
,plat
,sid
,seid
links
: 0 (optional)
- Response: JSON with
comment
(body) - Description: Retrieves a specific comment by ID.
- URL:
-
Post Comment
- URL:
/api/devrant/rants/{rant_id}/comments
- Method: POST
- Parameters (FormData):
app
: 3comment
: Comment texttoken_id
,token_key
,user_id
image
: Optional image file (img/gif)
- Response: JSON with
success
orconfirmed
(false if unverified) - Description: Posts a comment on a rant.
- URL:
-
Edit Comment
- URL:
/api/comments/{comment_id}
- Method: POST
- Parameters (FormData):
app
: 3comment
: Comment texttoken_id
,token_key
,user_id
- Response: JSON with
success
orfail_reason
- Description: Updates an existing comment.
- URL:
-
Delete Comment
- URL:
/api/comments/{comment_id}
- Method: DELETE
- Parameters:
app
: 3token_id
,token_key
,user_id
,guid
,plat
,sid
,seid
- Response: JSON with
success
- Description: Deletes a comment.
- URL:
-
Vote on Comment
- URL:
/api/comments/{comment_id}/vote
- Method: POST
- Parameters:
app
: 3token_id
,token_key
,user_id
,guid
,plat
,sid
,seid
vote
: 1 (upvote), -1 (downvote), 0 (remove vote)reason
: Downvote reason ID (required for downvote)
- Response: JSON with
success
orconfirmed
(false if unverified) - Description: Votes on a comment.
- URL:
Notifications
-
Get Notification Feed
- URL:
/api/users/me/notif-feed
- Method: GET
- Parameters:
app
: 3token_id
,token_key
,user_id
,guid
,plat
,sid
,seid
ext_prof
: 1 (optional)last_time
: Last notification check time
- Response: JSON with
success
,data
(items, check_time, username_map) - Description: Retrieves user notifications.
- URL:
-
Clear Notifications
- URL:
/api/users/me/notif-feed
- Method: DELETE
- Parameters:
app
: 3token_id
,token_key
,user_id
,guid
,plat
,sid
,seid
- Response: JSON with
success
- Description: Clears user notifications.
- URL:
External API
- Beta List Signup
- URL:
https://www.hexicallabs.com/api/beta-list
- Method: GET (JSONP)
- Parameters:
email
: User emailplatform
: Platform nameapp
: 3
- Description: Signs up user for beta list (external service).
- URL:
Notes
- All endpoints expect
app=3
for identification. - Authenticated endpoints require
dr_token
cookie withtoken_id
,token_key
,user_id
. guid
,plat
,sid
,seid
are used for session tracking.- Image uploads use FormData for rants and comments.
- Downvotes require a reason ID, prompting a modal if not provided.
- Responses typically include
success
boolean; errors includeerror
orfail_reason
. - Cookies (
dr_token
,dr_guid
,dr_session_start
,dr_event_id
,dr_feed_sort
,dr_theme
,dr_rants_viewed
,dr_stickers_seen
,rant_type_filters
,news_seen
) manage state and preferences.
.gitea/workflows | |
dist | |
src | |
.gitignore | |
Makefile | |
pyproject.toml | |
README.md | |
setup.cfg |