from apollo_utils.core.utils.ext_enum import ExtEnum # this is used only for sorting to put new entries to the top NEW_ENTRY_TREND = -10000 class YoutubeDatesInclude(ExtEnum): MARKETS = "markets" class ChartGroup(ExtEnum): YOUTUBE_TRENDING = "youtube_trending" class YoutubeVideoTrendField(ExtEnum): CURRENT_POSITION = "current_position" TREND = "trend" IN_CHART_DAYS = "in_chart_days" PEAK_POSITION = "peak_position" PEAK_POSITION_DATE = "peak_position_date" ADDED_DATE = "added_date" IS_NEW = "is_new" IS_RE_ENTRY = "is_re_entry" DATE = "date" class YoutubeVideoTrendRealField(ExtEnum): CURRENT_POSITION = "current" TREND = "trend" IN_CHART_DAYS = "total_days" PEAK_POSITION = "min_position" PEAK_POSITION_DATE = "min_position_date" ADDED_DATE = "earliest_position_date" IS_NEW = "is_entry" IS_RE_ENTRY = "is_reentry" DATE = "date" class YoutubeVideoTrendSortBy(ExtEnum): COUNTRY_CODE = "country_code" CURRENT_POSITION = YoutubeVideoTrendField.CURRENT_POSITION.value TREND = YoutubeVideoTrendField.TREND.value PEAK_POSITION = YoutubeVideoTrendField.PEAK_POSITION.value ADDED_DATE = YoutubeVideoTrendField.ADDED_DATE.value DEFAULT_INT = 1000 YoutubeVideoTrendSortByDefault = { YoutubeVideoTrendSortBy.COUNTRY_CODE: "", YoutubeVideoTrendSortBy.CURRENT_POSITION: DEFAULT_INT, YoutubeVideoTrendSortBy.TREND: DEFAULT_INT, YoutubeVideoTrendSortBy.PEAK_POSITION: DEFAULT_INT, YoutubeVideoTrendSortBy.ADDED_DATE: "", } YoutubeVideoTrendChartFields = ( YoutubeVideoTrendField.CURRENT_POSITION, YoutubeVideoTrendField.TREND, YoutubeVideoTrendField.IS_NEW, YoutubeVideoTrendField.IS_RE_ENTRY, YoutubeVideoTrendField.DATE, ) YoutubeVideoTrendSummaryFields = ( YoutubeVideoTrendField.IN_CHART_DAYS, YoutubeVideoTrendField.PEAK_POSITION, YoutubeVideoTrendField.PEAK_POSITION_DATE, YoutubeVideoTrendField.ADDED_DATE, ) class YoutubeVideoPositionsInclude(ExtEnum): CHART = "chart" class YoutubeVideoImageSize(ExtEnum): DEFAULT = "default" MEDIUM = "medium" HIGH = "high" STANDARD = "standard" MAXRES = "maxres" class YoutubeFullTrendInclude(ExtEnum): VIDEO = "video" POSITION = "position" SUMMARY = "summary" YoutubeFullTrendMapping = { YoutubeFullTrendInclude.VIDEO: { "title": "video_title", "channel_id": "channel_id", "channel_title": "channel_title", "content_type": "content_type", "date_uploaded": "date_uploaded", }, YoutubeFullTrendInclude.POSITION: { "current": "current", "is_new": "is_entry", "is_re_entry": "is_reentry", "trend": "trend", }, YoutubeFullTrendInclude.SUMMARY: { "peak_position": "min_position", "peak_position_date": "min_position_date", "added_date": "earliest_position_date", "in_chart_days": "total_days", }, }