implemented fanfou trends
This commit is contained in:
parent
d38073b944
commit
7d7ea93241
|
@ -1,17 +1,19 @@
|
|||
package org.mariotaku.microblog.library.fanfou;
|
||||
|
||||
import org.mariotaku.microblog.library.fanfou.api.BlocksResources;
|
||||
import org.mariotaku.microblog.library.fanfou.api.DirectMessagesResources;
|
||||
import org.mariotaku.microblog.library.fanfou.api.FavoritesResources;
|
||||
import org.mariotaku.microblog.library.fanfou.api.FriendshipsResources;
|
||||
import org.mariotaku.microblog.library.fanfou.api.PhotosResources;
|
||||
import org.mariotaku.microblog.library.fanfou.api.SearchResources;
|
||||
import org.mariotaku.microblog.library.fanfou.api.StatusesResources;
|
||||
import org.mariotaku.microblog.library.fanfou.api.TrendsResources;
|
||||
import org.mariotaku.microblog.library.fanfou.api.UsersResources;
|
||||
import org.mariotaku.microblog.library.fanfou.api.DirectMessagesResources;
|
||||
|
||||
/**
|
||||
* Created by mariotaku on 16/3/10.
|
||||
*/
|
||||
public interface Fanfou extends StatusesResources, SearchResources, UsersResources, PhotosResources,
|
||||
FriendshipsResources, BlocksResources, FavoritesResources, DirectMessagesResources {
|
||||
FriendshipsResources, BlocksResources, FavoritesResources, DirectMessagesResources,
|
||||
TrendsResources {
|
||||
}
|
||||
|
|
|
@ -0,0 +1,16 @@
|
|||
package org.mariotaku.microblog.library.fanfou.api;
|
||||
|
||||
import org.mariotaku.microblog.library.MicroBlogException;
|
||||
import org.mariotaku.microblog.library.twitter.model.Trends;
|
||||
import org.mariotaku.restfu.annotation.method.GET;
|
||||
|
||||
/**
|
||||
* Created by mariotaku on 2017/2/5.
|
||||
*/
|
||||
|
||||
@SuppressWarnings("RedundantThrows")
|
||||
public interface TrendsResources {
|
||||
|
||||
@GET("/trends/list.json")
|
||||
Trends getFanfouTrends() throws MicroBlogException;
|
||||
}
|
|
@ -7,7 +7,7 @@ import org.mariotaku.microblog.library.twitter.api.HelpResources;
|
|||
import org.mariotaku.microblog.library.twitter.api.ListResources;
|
||||
import org.mariotaku.microblog.library.twitter.api.PlacesGeoResources;
|
||||
import org.mariotaku.microblog.library.twitter.api.SavedSearchesResources;
|
||||
import org.mariotaku.microblog.library.twitter.api.SearchResource;
|
||||
import org.mariotaku.microblog.library.twitter.api.SearchResources;
|
||||
import org.mariotaku.microblog.library.twitter.api.SpamReportingResources;
|
||||
import org.mariotaku.microblog.library.twitter.api.TimelineResources;
|
||||
import org.mariotaku.microblog.library.twitter.api.TrendsResources;
|
||||
|
@ -17,7 +17,7 @@ import org.mariotaku.microblog.library.twitter.api.UsersResources;
|
|||
/**
|
||||
* Created by mariotaku on 16/5/13.
|
||||
*/
|
||||
public interface Twitter extends SearchResource, TimelineResources, TweetResources, UsersResources,
|
||||
public interface Twitter extends SearchResources, TimelineResources, TweetResources, UsersResources,
|
||||
ListResources, DirectMessagesResources, FriendsFollowersResources, FavoritesResources,
|
||||
SpamReportingResources, SavedSearchesResources, TrendsResources, PlacesGeoResources,
|
||||
HelpResources, TwitterPrivate {
|
||||
|
|
|
@ -29,7 +29,7 @@ import org.mariotaku.restfu.annotation.param.Query;
|
|||
|
||||
@SuppressWarnings("RedundantThrows")
|
||||
@Queries(template = StatusAnnotationTemplate.class)
|
||||
public interface SearchResource {
|
||||
public interface SearchResources {
|
||||
@GET("/search/tweets.json")
|
||||
QueryResult search(@Query SearchQuery query) throws MicroBlogException;
|
||||
}
|
|
@ -45,6 +45,4 @@ public interface TrendsResources {
|
|||
@GET("/trends/place.json")
|
||||
ResponseList<Trends> getLocationTrends(@Query("id") int woeid) throws MicroBlogException;
|
||||
|
||||
@GET("/trends/place.json")
|
||||
Trends getPlaceTrends(@Query("id") int woeid) throws MicroBlogException;
|
||||
}
|
||||
|
|
|
@ -5,6 +5,7 @@ import com.fasterxml.jackson.core.JsonGenerator;
|
|||
import com.fasterxml.jackson.core.JsonParser;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.text.DateFormat;
|
||||
import java.text.ParseException;
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.util.Date;
|
||||
|
@ -15,6 +16,7 @@ public class TwitterTrendsDateConverter implements TypeConverter<Date> {
|
|||
|
||||
private static final SimpleDateFormat DATE_FORMAT_1 = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'", Locale.ENGLISH);
|
||||
private static final SimpleDateFormat DATE_FORMAT_2 = new SimpleDateFormat("EEE, d MMM yyyy HH:mm:ss z", Locale.ENGLISH);
|
||||
private static final SimpleDateFormat DATE_FORMAT_3 = new SimpleDateFormat("EEE MMM d HH:mm:ss z yyyy", Locale.ENGLISH);
|
||||
|
||||
@Override
|
||||
public Date parse(JsonParser jsonParser) throws IOException {
|
||||
|
@ -28,7 +30,7 @@ public class TwitterTrendsDateConverter implements TypeConverter<Date> {
|
|||
case 20:
|
||||
return DATE_FORMAT_1.parse(dateString);
|
||||
default:
|
||||
return DATE_FORMAT_2.parse(dateString);
|
||||
return parse(dateString, new DateFormat[]{DATE_FORMAT_2, DATE_FORMAT_3});
|
||||
}
|
||||
}
|
||||
} catch (ParseException e) {
|
||||
|
@ -40,4 +42,15 @@ public class TwitterTrendsDateConverter implements TypeConverter<Date> {
|
|||
public void serialize(Date object, String fieldName, boolean writeFieldNameForObject, JsonGenerator jsonGenerator) {
|
||||
throw new UnsupportedOperationException();
|
||||
}
|
||||
|
||||
private static Date parse(String dateString, DateFormat[] formats) throws ParseException {
|
||||
for (final DateFormat format : formats) {
|
||||
try {
|
||||
return format.parse(dateString);
|
||||
} catch (ParseException e) {
|
||||
// Ignore
|
||||
}
|
||||
}
|
||||
throw new ParseException("Unrecognized date " + dateString, 0);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -59,7 +59,8 @@ public class TrendsTabConfiguration extends TabConfiguration {
|
|||
extras.setWoeId(place.getWoeId());
|
||||
extras.setPlaceName(place.getName());
|
||||
} else {
|
||||
return false;
|
||||
extras.setWoeId(0);
|
||||
extras.setPlaceName(null);
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
|
|
@ -10,9 +10,11 @@ import android.widget.TextView
|
|||
import org.mariotaku.microblog.library.twitter.model.Location
|
||||
import org.mariotaku.twidere.R
|
||||
import org.mariotaku.twidere.activity.TrendsLocationSelectorActivity
|
||||
import org.mariotaku.twidere.annotation.AccountType
|
||||
import org.mariotaku.twidere.constant.IntentConstants.EXTRA_ACCOUNT_KEY
|
||||
import org.mariotaku.twidere.constant.IntentConstants.EXTRA_LOCATION
|
||||
import org.mariotaku.twidere.fragment.CustomTabsFragment
|
||||
import org.mariotaku.twidere.model.AccountDetails
|
||||
import org.mariotaku.twidere.model.tab.TabConfiguration
|
||||
|
||||
/**
|
||||
|
@ -34,6 +36,7 @@ open class TrendsLocationExtraConfiguration(
|
|||
}
|
||||
|
||||
private lateinit var summaryView: TextView
|
||||
|
||||
override fun onCreateView(context: Context, parent: ViewGroup): View {
|
||||
return LayoutInflater.from(context).inflate(R.layout.layout_extra_config_checkbox, parent, false)
|
||||
}
|
||||
|
@ -64,5 +67,18 @@ open class TrendsLocationExtraConfiguration(
|
|||
}
|
||||
}
|
||||
|
||||
override fun onAccountSelectionChanged(account: AccountDetails?) {
|
||||
super.onAccountSelectionChanged(account)
|
||||
val titleView = view.findViewById(android.R.id.title) as TextView
|
||||
val summaryView = view.findViewById(android.R.id.summary) as TextView
|
||||
val canSelectLocation = account?.type == AccountType.TWITTER
|
||||
view.isEnabled = canSelectLocation
|
||||
titleView.isEnabled = canSelectLocation
|
||||
summaryView.isEnabled = canSelectLocation
|
||||
if (!canSelectLocation) {
|
||||
value = null
|
||||
}
|
||||
}
|
||||
|
||||
data class Place(var woeId: Int, var name: String)
|
||||
}
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
package org.mariotaku.twidere.task
|
||||
|
||||
import android.accounts.AccountManager
|
||||
import android.content.ContentResolver
|
||||
import android.content.ContentValues
|
||||
import android.content.Context
|
||||
|
@ -7,16 +8,21 @@ import android.net.Uri
|
|||
import android.support.v4.util.ArraySet
|
||||
import com.squareup.otto.Bus
|
||||
import org.mariotaku.abstask.library.AbstractTask
|
||||
import org.mariotaku.microblog.library.MicroBlog
|
||||
import org.mariotaku.microblog.library.MicroBlogException
|
||||
import org.mariotaku.microblog.library.twitter.model.Trends
|
||||
import org.mariotaku.sqliteqb.library.Expression
|
||||
import org.mariotaku.twidere.TwidereConstants.LOGTAG
|
||||
import org.mariotaku.twidere.annotation.AccountType
|
||||
import org.mariotaku.twidere.extension.model.newMicroBlogInstance
|
||||
import org.mariotaku.twidere.model.ParcelableTrend
|
||||
import org.mariotaku.twidere.model.ParcelableTrendValuesCreator
|
||||
import org.mariotaku.twidere.model.UserKey
|
||||
import org.mariotaku.twidere.model.message.TrendsRefreshedEvent
|
||||
import org.mariotaku.twidere.model.util.AccountUtils
|
||||
import org.mariotaku.twidere.provider.TwidereDataStore.CachedHashtags
|
||||
import org.mariotaku.twidere.provider.TwidereDataStore.CachedTrends
|
||||
import org.mariotaku.twidere.util.MicroBlogAPIFactory
|
||||
import org.mariotaku.twidere.util.DebugLog
|
||||
import org.mariotaku.twidere.util.content.ContentResolverUtils
|
||||
import org.mariotaku.twidere.util.dagger.GeneralComponentHelper
|
||||
import java.util.*
|
||||
|
@ -39,15 +45,17 @@ class GetTrendsTask(
|
|||
}
|
||||
|
||||
override fun doLongOperation(param: Any?) {
|
||||
val twitter = MicroBlogAPIFactory.getInstance(context, accountKey) ?: return
|
||||
val details = AccountUtils.getAccountDetails(AccountManager.get(context), accountKey, true) ?: return
|
||||
val twitter = details.newMicroBlogInstance(context, cls = MicroBlog::class.java)
|
||||
try {
|
||||
val trends = twitter.getLocationTrends(woeId)
|
||||
val trends = when {
|
||||
details.type == AccountType.FANFOU -> listOf(twitter.fanfouTrends)
|
||||
else -> twitter.getLocationTrends(woeId)
|
||||
}
|
||||
storeTrends(context.contentResolver, CachedTrends.Local.CONTENT_URI, trends)
|
||||
return
|
||||
} catch (e: MicroBlogException) {
|
||||
return
|
||||
DebugLog.w(LOGTAG, tr = e)
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
override fun afterExecute(handler: Any?, result: Unit) {
|
||||
|
|
Loading…
Reference in New Issue