from delphi_api.bigtable import BigTableModel, TextAttribute from delphi_api.bigtable.attributes import LongIntAttribute from delphi_api.v3.enums import ChartmetricPartner, ColumnFamily, ColumnName, TableName class ChartmetricArtist(BigTableModel): class Meta: table_name = TableName.chartmetric.value country_codes = None len_sub_dsps = len(ChartmetricPartner.__members__) date = TextAttribute( column_family=ColumnFamily.META.value, attr_name=ColumnName.DATE.value) dsp = TextAttribute( column_family=ColumnFamily.META.value, attr_name=ColumnName.DSP.value) artist_id = TextAttribute( column_family=ColumnFamily.META.value, attr_name=ColumnName.ARTIST_ID.value) fans = LongIntAttribute( column_family=ColumnFamily.METRICS.value, attr_name=ColumnName.FANS.value) followers = LongIntAttribute( column_family=ColumnFamily.METRICS.value, attr_name=ColumnName.FOLLOWERS.value) likes = LongIntAttribute( column_family=ColumnFamily.METRICS.value, attr_name=ColumnName.LIKES.value) listeners = LongIntAttribute( column_family=ColumnFamily.METRICS.value, attr_name=ColumnName.LISTENERS.value) popularity = LongIntAttribute( column_family=ColumnFamily.METRICS.value, attr_name=ColumnName.POPULARITY.value) talks = LongIntAttribute( column_family=ColumnFamily.METRICS.value, attr_name=ColumnName.TALKS.value) subscribers = LongIntAttribute( column_family=ColumnFamily.METRICS.value, attr_name=ColumnName.SUBSCRIBERS.value) views = LongIntAttribute( column_family=ColumnFamily.METRICS.value, attr_name=ColumnName.VIEWS.value) @property def apple_followers(self): if self.dsp == ChartmetricPartner.APPLE.value: return self.followers @property def facebook_likes(self): if self.dsp == ChartmetricPartner.FACEBOOK.value: return self.likes @property def facebook_storytellers(self): if self.dsp == ChartmetricPartner.FACEBOOK.value: return self.talks @property def instagram_followers(self): if self.dsp == ChartmetricPartner.INSTAGRAM.value: return self.followers @property def spotify_followers(self): if self.dsp == ChartmetricPartner.SPOTIFY.value: return self.followers @property def spotify_popularity(self): if self.dsp == ChartmetricPartner.SPOTIFY.value: return self.popularity @property def twitter_followers(self): if self.dsp == ChartmetricPartner.TWITTER.value: return self.followers @property def youtube_channel_subscribers(self): if self.dsp == ChartmetricPartner.YOUTUBE_CHANNEL.value: return self.subscribers @property def youtube_channel_views(self): if self.dsp == ChartmetricPartner.YOUTUBE_CHANNEL.value: return self.views