Skip to content
/ Tweedle Public

A Kotlin based Android library around the Twitter v2 API

Notifications You must be signed in to change notification settings

tyczj/Tweedle

Repository files navigation

Tweedle

v2 build version

Due to twitter going to a paid API this project is no longer going to be maintained. I am not paying $100/month for API access just to create a library that I wont be making any money on.

Library is currently in alpha and the API might change as the Twitter v2 API changes

Tweedle is an Android library built around the Twitter v2 API built fully in Kotlin using Kotlin Coroutines

Usage

ViewModel

class MainViewModel: ViewModel() {

    val oauth2 = OAuth2(token)
    private val _tweetLookup:TweetsLookup = TweetsLookup(oauth2)
    
    fun getTweet(tweetId:Long):LiveData<Response<SingleTweetPayload?>>{
            val liveData:MutableLiveData<Response<SingleTweetPayload?>> = MutableLiveData<Response<SingleTweetPayload?>>()
            viewModelScope.launch{
                val response = _tweetLookup.getTweet(tweetId)
                liveData.postValue(response)
            }
            return liveData
        }
}

Activity

_viewModel.getTweet(1299418846990921728).observe(this, Observer {
    when(it){
        is Response.Error -> {it.exception}
        is Response.Success -> it.data
    }
})

Streaming

Tweedle also supports streaming in real time of current tweets based on filters/rules applied

Creating a filter

You can easily create a filter with the filter builder

Say we want to stream tweets that come in for the hashtag #SundayMorning and only in english. That filter would look like this

val filters:MutableList<Add> = mutableListOf()
        val filter: Filter = Filter.Builder()
            .addOperator("#SundayMorning")
            .and()
            .setLanguage(Filter.ENGLISH)
            .build()

See additional examples here as well as the twiter documentation about creating filters here

Adding a filter/rule

(Streaming only supports OAuth2)

val oAuth2 = OAuth2(token)
val _tweetStream = TweetsStream(oAuth2)
val addRule = Add(filter.filter, "Sunday Morning")
filters.add(addRule)
val rule = Rule(filters)

_tweetStream.addRules(token, rule)

Currently Twitter only supports 25 filters/rules per API key

To start streaming tweets call the startTweetStream endpoint

_tweetStream.startTweetStream().collect {
    when(it){
         is Response.Success -> Log.d("TWEET", it.data.data.text)
    }
}

Collect is called every time a new tweet is received

Authentication

To read about how to authenticate with the api see authentication

To start using Tweedle, include the dependency in your build.gradle

Common

implementation("io.github.tyczj:tweedle:{tweedle_version}")

Android

android{
    buildTypes {
        debug { matchingFallbacks = ['release'] } 
    }
}

implementation 'io.github.tyczj:tweedle-android:{tweedle_version}'

About

A Kotlin based Android library around the Twitter v2 API

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages