Skip to content

JodelNet is an inofficial C# interface to the private Jodel App API

License

Notifications You must be signed in to change notification settings

WakaToa/JodelNet

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

16 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

JodelNet (Inofficial C# Jodel API wrapper)

JodelNet is an inofficial interface to the private Jodel App API. Not affiliated with The Jodel Venture GmbH.

Project is not maintained anymore, there may be some problems


Read before start For Educational Purposes Only

This repository was created for educational purposes only.


Getting started

Create a new JodelUser object

Location location = Location.GetFromString("Berlin", "GOOGLEMAPS_APIKEY");
JodelUser jodelUser = new JodelUser(location); //Creates a fresh account object with a given location

Alternatives:

JodelUser jodelUser = new JodelUser(location, "deviceUiD");
JodelUser jodelUser = new JodelUser(location, "deviceUiD", "accessToken", "refreshToken", "distinctId"); //'load' an existing account

Create the account.

await jodelUser.CreateAccountAsync();

To perform all actions (like voting and posting/creating new content), you need to verify your account using Google Cloud Messaging (GCM) or Firebase

await AndroidVerification.VerifyAccountAsync(jodelUser);
//It seems like trying to verify with a fresh/unused ip address works better than a "used" one

await InstanceIdVerification.VerifyAccountAsync(jodelUser);
//uses new Firebase(?) method from the Jodel app, not sure if it is intended to verify accounts

Methods

//Authentication
CreateAccountAsync()
RefreshAccessTokenAsync();

//Verification
PushTokenAsync();
VerifyPushTokenAsync();
VerifyInstanceIdAsync();

//Get posts by location
GetPostsRecentAsync();
GetPostsPopularAsync();
GetPostsDiscussedAsync();
GetPostsComboAsync();

//Get posts by channel
GetPostsChannelRecentAsync();
GetPostsChannelPopularAsync();
GetPostsChannelDiscussedAsync();
GetPostsChannelComboAsync();

//Get posts by hashtag
GetPostsHashtagRecentAsync();
GetPostsHashtagPopularAsync();
GetPostsHashtagDiscussedAsync();
GetPostsHashtagComboAsync();

//Get own posts
GetPostsOwnAsync();
GetPostsOwnPopularAsync();
GetPostsOwnDiscussedAsync();
GetPostsOwnComboAsync();
GetPostsPinnedAsync();
GetPostsRepliedAsync();
GetPostsVotedAsync()

//User interaction
SetLocationAsync();
SetHomeTownAsync();
DeleteUserHomeAsync();
GetUserConfigAsync();
GetUserStatsAsync();

//Post interaction
CreatePostAsync(); //verified account needed
DeletePostAsync(); //verified account needed
UpvotePostAsync(); //verified account needed
DownvotePostAsync(); //verified account needed
GiveThanksAsync(); //verified account needed
GetPostDetailsAsync();
GetSharePostUrlAsync();
PinPostAsync();
UnpinPostAsync();

//Channel interaction
GetRecommendedChannelsAsync();
FollowChannelAsync();
FollowChannelsAsync();

#Referrer
GetUserInviteCode();
PostInviteComplete();

Signing requests | Retrieving the HMAC secret

Jodel signs every request using a HMAC hash. The secret changes every time they update the android app and you need to decrypt the new one from a native x86 library. Take a look at JodelUpdate to retrieve the new HMAC secret.


Todos

  • Add all methods from Jodel
  • Code cleanup

Acknowledgments

Thanks to

for developing their awesome projects which helped me a lot understanding how Jodel works.


License

MIT

About

JodelNet is an inofficial C# interface to the private Jodel App API

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages