package com.twitter.home_mixer.model import com.twitter.escherbird.{thriftscala => esb} import com.twitter.tweetypie.{thriftscala => tp} object ContentFeatures { val Empty: ContentFeatures = ContentFeatures( 0.toShort, false, 0.toShort, 0.toShort, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None ) } case class ContentFeatures( length: Short, hasQuestion: Boolean, numCaps: Short, numWhiteSpaces: Short, numNewlines: Option[Short], videoDurationMs: Option[Int], bitRate: Option[Int], aspectRatioNum: Option[Short], aspectRatioDen: Option[Short], widths: Option[Seq[Short]], heights: Option[Seq[Short]], resizeMethods: Option[Seq[Short]], numMediaTags: Option[Short], mediaTagScreenNames: Option[Seq[String]], emojiTokens: Option[Set[String]], emoticonTokens: Option[Set[String]], faceAreas: Option[Seq[Int]], dominantColorRed: Option[Short], dominantColorBlue: Option[Short], dominantColorGreen: Option[Short], numColors: Option[Short], stickerIds: Option[Seq[Long]], mediaOriginProviders: Option[Seq[String]], isManaged: Option[Boolean], is360: Option[Boolean], viewCount: Option[Long], isMonetizable: Option[Boolean], isEmbeddable: Option[Boolean], hasSelectedPreviewImage: Option[Boolean], hasTitle: Option[Boolean], hasDescription: Option[Boolean], hasVisitSiteCallToAction: Option[Boolean], hasAppInstallCallToAction: Option[Boolean], hasWatchNowCallToAction: Option[Boolean], media: Option[Seq[tp.MediaEntity]], dominantColorPercentage: Option[Double], posUnigrams: Option[Set[String]], posBigrams: Option[Set[String]], semanticCoreAnnotations: Option[Seq[esb.TweetEntityAnnotation]], selfThreadMetadata: Option[tp.SelfThreadMetadata], tokens: Option[Seq[String]], conversationControl: Option[tp.ConversationControl], )