Пример #1
0
def test_playback_details_live_time_based_5():
    report = rt.PlaybackDetailsLiveTimeBased()
    assert report.name == "Time-based playback details (live)"
    d = []
    f = {}
    m = data.LIVE_PLAYBACK_DETAIL_METRICS
    s = data.LIVE_PLAYBACK_DETAIL_METRICS
    report.validate(d, f, m, s)
Пример #2
0
def test_playback_details_live_time_based_1():
    report = rt.PlaybackDetailsLiveTimeBased()
    assert report.name == "Time-based playback details (live)"
    d = ["subscribedStatus", "day"]
    f = {"country": "US", "video": "fn849bng984b", "youtubeProduct": "CORE"}
    m = data.LIVE_PLAYBACK_DETAIL_METRICS
    s = data.LIVE_PLAYBACK_DETAIL_METRICS
    report.validate(d, f, m, s)
Пример #3
0
def test_playback_details_live_time_based_3():
    report = rt.PlaybackDetailsLiveTimeBased()
    assert report.name == "Time-based playback details (live)"
    d = ["subscribedStatus", "liveOrOnDemand", "youtubeProduct"]
    f = {
        "subContinent": "014",
        "youtubeProduct": "CORE",
        "subscribedStatus": "SUBSCRIBED",
        "liveOrOnDemand": "LIVE",
    }
    m = data.LIVE_PLAYBACK_DETAIL_METRICS
    s = data.LIVE_PLAYBACK_DETAIL_METRICS
    report.validate(d, f, m, s)
Пример #4
0
    def determine_report_type(self) -> ReportType:
        curated = self.filters.get("isCurated", "0") == "1"

        if "adType" in self.dimensions:
            return rt.AdPerformance()

        if "sharingService" in self.dimensions:
            return rt.EngagementAndContentSharing()

        if "elapsedVideoTimeRatio" in self.dimensions:
            return rt.AudienceRetention()

        if "playlist" in self.dimensions:
            return rt.TopPlaylists()

        if "insightPlaybackLocationType" in self.dimensions:
            if curated:
                return rt.PlaybackLocationPlaylist()
            return rt.PlaybackLocation()

        if "insightPlaybackLocationDetail" in self.dimensions:
            if curated:
                return rt.PlaybackLocationDetailPlaylist()
            return rt.PlaybackLocationDetail()

        if "insightTrafficSourceType" in self.dimensions:
            if curated:
                return rt.TrafficSourcePlaylist()
            return rt.TrafficSource()

        if "insightTrafficSourceDetail" in self.dimensions:
            if curated:
                return rt.TrafficSourceDetailPlaylist()
            return rt.TrafficSourceDetail()

        if "ageGroup" in self.dimensions or "gender" in self.dimensions:
            if curated:
                return rt.ViewerDemographicsPlaylist()
            return rt.ViewerDemographics()

        if "deviceType" in self.dimensions:
            if "operatingSystem" in self.dimensions:
                if curated:
                    return rt.DeviceTypeAndOperatingSystemPlaylist()
                return rt.DeviceTypeAndOperatingSystem()
            if curated:
                return rt.DeviceTypePlaylist()
            return rt.DeviceType()

        if "operatingSystem" in self.dimensions:
            if curated:
                return rt.OperatingSystemPlaylist()
            return rt.OperatingSystem()

        if "video" in self.dimensions:
            if "province" in self.filters:
                return rt.TopVideosUS()
            if "subscribedStatus" not in self.filters:
                return rt.TopVideosRegional()
            if "province" not in self.filters and "youtubeProduct" not in self.filters:
                return rt.TopVideosSubscribed()
            if "averageViewPercentage" in self.metrics:
                return rt.TopVideosYouTubeProduct()
            return rt.TopVideosPlaybackDetail()

        if "country" in self.dimensions:
            if "liveOrOnDemand" in self.dimensions or "liveOrOnDemand" in self.filters:
                return rt.PlaybackDetailsLiveGeographyBased()
            if curated:
                return rt.GeographyBasedActivityPlaylist()
            if ("subscribedStatus" in self.dimensions
                    or "subscribedStatus" in self.filters
                    or "youtubeProduct" in self.dimensions
                    or "youtubeProduct" in self.filters):
                return rt.PlaybackDetailsViewPercentageGeographyBased()
            return rt.GeographyBasedActivity()

        if "province" in self.dimensions:
            if "liveOrOnDemand" in self.dimensions or "liveOrOnDemand" in self.filters:
                return rt.PlaybackDetailsLiveGeographyBasedUS()
            if curated:
                return rt.GeographyBasedActivityUSPlaylist()
            if ("subscribedStatus" in self.dimensions
                    or "subscribedStatus" in self.filters
                    or "youtubeProduct" in self.dimensions
                    or "youtubeProduct" in self.filters):
                return rt.PlaybackDetailsViewPercentageGeographyBasedUS()
            return rt.GeographyBasedActivityUS()

        if "youtubeProduct" in self.dimensions or "youtubeProduct" in self.filters:
            if "liveOrOnDemand" in self.dimensions or "liveOrOnDemand" in self.filters:
                return rt.PlaybackDetailsLiveTimeBased()
            return rt.PlaybackDetailsViewPercentageTimeBased()

        if "liveOrOnDemand" in self.dimensions or "liveOrOnDemand" in self.filters:
            return rt.PlaybackDetailsLiveTimeBased()

        if "subscribedStatus" in self.dimensions:
            if "province" in self.filters:
                return rt.PlaybackDetailsSubscribedStatusUS()
            return rt.PlaybackDetailsSubscribedStatus()

        if "day" in self.dimensions or "month" in self.dimensions:
            if curated:
                return rt.TimeBasedActivityPlaylist()
            if "province" in self.filters:
                return rt.TimeBasedActivityUS()
            return rt.TimeBasedActivity()

        if curated:
            return rt.BasicUserActivityPlaylist()
        if "province" in self.filters:
            return rt.BasicUserActivityUS()
        return rt.BasicUserActivity()