kopia lustrzana https://github.com/twitter/the-algorithm
30 wiersze
1022 B
Scala
30 wiersze
1022 B
Scala
package com.twitter.tweetypie.util
|
|
|
|
import com.twitter.escherbird.thriftscala.TweetEntityAnnotation
|
|
import com.twitter.tweetypie.thriftscala.EscherbirdEntityAnnotations
|
|
import com.twitter.tweetypie.thriftscala.Tweet
|
|
|
|
object CommunityAnnotation {
|
|
|
|
val groupId: Long = 8
|
|
val domainId: Long = 31
|
|
|
|
def apply(communityId: Long): TweetEntityAnnotation =
|
|
TweetEntityAnnotation(groupId, domainId, entityId = communityId)
|
|
|
|
def unapply(annotation: TweetEntityAnnotation): Option[Long] =
|
|
annotation match {
|
|
case TweetEntityAnnotation(`groupId`, `domainId`, entityId) => Some(entityId)
|
|
case _ => None
|
|
}
|
|
|
|
// Returns None instead of Some(Seq()) when there are non-community annotations present
|
|
def additionalFieldsToCommunityIDs(additionalFields: Tweet): Option[Seq[Long]] = {
|
|
additionalFields.escherbirdEntityAnnotations
|
|
.map {
|
|
case EscherbirdEntityAnnotations(entityAnnotations) =>
|
|
entityAnnotations.flatMap(CommunityAnnotation.unapply)
|
|
}.filter(_.nonEmpty)
|
|
}
|
|
}
|