예제 #1
0
    def get(self, time_range):
        """Gets aggregated app metrics based on time range and bucket size"""
        if time_range not in valid_bucket_sizes:
            abort_bad_path_param('time_range', ns)

        args = aggregate_app_metrics_parser.parse_args()
        limit = format_limit(args, max_limit=100)
        metrics = get_aggregate_app_metrics(time_range, limit)
        response = success_response(metrics)
        return response
예제 #2
0
    def get(self, version):
        underground_trending_versions = trending_strategy_factory.get_versions_for_type(TrendingType.UNDERGROUND_TRACKS).keys()
        version_list = list(filter(lambda v: v.name == version, underground_trending_versions))
        if not version_list:
            abort_bad_path_param('version', full_ns)

        args = underground_trending_parser.parse_args()
        strategy = trending_strategy_factory.get_strategy(TrendingType.UNDERGROUND_TRACKS, version_list[0])
        trending_tracks = get_underground_trending(request, args, strategy)
        return success_response(trending_tracks)
예제 #3
0
    def get(self, version):
        """Get trending playlists"""
        trending_playlist_versions = trending_strategy_factory.get_versions_for_type(TrendingType.PLAYLISTS).keys()
        version_list = list(filter(lambda v: v.name == version, trending_playlist_versions))
        if not version_list:
            abort_bad_path_param('version', full_ns)

        args = full_trending_parser.parse_args()
        strategy = trending_strategy_factory.get_strategy(TrendingType.PLAYLISTS, version_list[0])
        playlists = get_full_trending_playlists(request, args, strategy)
        return success_response(playlists)
예제 #4
0
    def get(self, version):
        """Gets the top 100 trending (most popular) tracks on Audius"""
        trending_track_versions = trending_strategy_factory.get_versions_for_type(TrendingType.TRACKS).keys()
        version_list = list(filter(lambda v: v.name == version, trending_track_versions))
        if not version_list:
            abort_bad_path_param('version', ns)

        args = trending_parser.parse_args()
        strategy = trending_strategy_factory.get_strategy(TrendingType.TRACKS, version_list[0])
        trending_tracks = get_trending(args, strategy)
        return success_response(trending_tracks)
예제 #5
0
    def get(self, version):
        trending_track_versions = trending_strategy_factory.get_versions_for_type(TrendingType.TRACKS).keys()
        version_list = list(filter(lambda v: v.name == version, trending_track_versions))
        if not version_list:
            abort_bad_path_param('version', full_ns)

        args = full_recommended_track_parser.parse_args()
        limit = format_limit(args, default_limit=DEFAULT_RECOMMENDED_LIMIT)
        args['limit'] = max(TRENDING_LIMIT, limit)
        strategy = trending_strategy_factory.get_strategy(TrendingType.TRACKS, version_list[0])
        full_recommended_tracks = get_full_recommended_tracks(request, args, strategy)
        return success_response(full_recommended_tracks[:limit])
예제 #6
0
    def get(self, version):
        trending_track_versions = trending_strategy_factory.get_versions_for_type(
            TrendingType.TRACKS).keys()
        version_list = list(
            filter(lambda v: v.name == version, trending_track_versions))
        if not version_list:
            abort_bad_path_param("version", ns)

        args = trending_parser.parse_args()
        strategy = trending_strategy_factory.get_strategy(
            TrendingType.TRACKS, version_list[0])
        trending_tracks = get_trending(args, strategy)
        return success_response(trending_tracks)
예제 #7
0
    def get(self, time_range):
        """Gets aggregated route metrics based on time range and bucket size"""
        if time_range not in valid_bucket_sizes:
            abort_bad_path_param('time_range', ns)

        args = aggregate_route_metrics_parser.parse_args()
        valid_buckets = valid_bucket_sizes[time_range]
        bucket_size = args.get("bucket_size") or valid_buckets[0]

        if bucket_size not in valid_buckets:
            abort_bad_request_param('bucket_size', ns)

        metrics = get_aggregate_route_metrics(time_range, bucket_size)
        response = success_response(metrics)
        return response
예제 #8
0
    def get(self, version):
        """Gets the track ids of the top trending tracks on Audius based on the trending version"""
        trending_track_versions = trending_strategy_factory.get_versions_for_type(TrendingType.TRACKS).keys()
        version_list = list(filter(lambda v: v.name == version, trending_track_versions))
        if not version_list:
            abort_bad_path_param('version', full_ns)

        args = trending_ids_route_parser.parse_args()
        strategy = trending_strategy_factory.get_strategy(TrendingType.TRACKS, version_list[0])
        trending_ids = get_trending_ids(args, strategy)
        res = {
            "week": list(map(get_encoded_track_id, trending_ids["week"])),
            "month": list(map(get_encoded_track_id, trending_ids["month"])),
            "year": list(map(get_encoded_track_id, trending_ids["year"]))
        }
        return success_response(res)
예제 #9
0
    def get(self, version):
        trending_track_versions = trending_strategy_factory.get_versions_for_type(
            TrendingType.TRACKS).keys()
        version_list = list(
            filter(lambda v: v.name == version, trending_track_versions))
        if not version_list:
            abort_bad_path_param("version", full_ns)

        args = trending_ids_route_parser.parse_args()
        args["limit"] = args.get("limit", 10)
        strategy = trending_strategy_factory.get_strategy(
            TrendingType.TRACKS, version_list[0])
        trending_ids = get_trending_ids(args, strategy)
        res = {
            "week": list(map(get_encoded_track_id, trending_ids["week"])),
            "month": list(map(get_encoded_track_id, trending_ids["month"])),
            "year": list(map(get_encoded_track_id, trending_ids["year"])),
        }
        return success_response(res)
예제 #10
0
    def get(self, version):
        """Gets top trending playlists for time period on Audius"""
        trending_playlist_versions = trending_strategy_factory.get_versions_for_type(TrendingType.PLAYLISTS).keys()
        version_list = list(filter(lambda v: v.name == version, trending_playlist_versions))
        if not version_list:
            abort_bad_path_param('version', ns)

        args = trending_parser.parse_args()
        time = args.get("time")
        time = "week" if time not in ["week", "month", "year"] else time
        args = {
            "time": time,
            "with_tracks": False
        }
        strategy = trending_strategy_factory.get_strategy(TrendingType.PLAYLISTS, version_list[0])
        playlists = get_trending_playlists(args, strategy)
        playlists = playlists[:TRENDING_LIMIT]
        playlists = list(map(extend_playlist, playlists))

        return success_response(playlists)