Source code for Tribler.Core.Modules.restapi.channels.channels_popular_endpoint

from twisted.web import http

from Tribler.Core.Modules.restapi.channels.base_channels_endpoint import BaseChannelsEndpoint
from Tribler.Core.Modules.restapi.util import convert_db_channel_to_json
import Tribler.Core.Utilities.json_util as json


[docs]class ChannelsPopularEndpoint(BaseChannelsEndpoint):
[docs] def render_GET(self, request): """ .. http:get:: /channels/popular?limit=(int:max nr of channels) A GET request to this endpoint will return the most popular discovered channels in Tribler. You can optionally pass a limit parameter to limit the number of results. **Example request**: .. sourcecode:: none curl -X GET http://localhost:8085/channels/popular?limit=1 **Example response**: .. sourcecode:: javascript { "channels": [{ "id": 3, "dispersy_cid": "da69aaad39ccf468aba2ab9177d5f8d8160135e6", "name": "My fancy channel", "description": "A description of this fancy channel", "subscribed": False, "votes": 23, "torrents": 3, "spam": 5, "modified": 14598395, "can_edit": True, }] } """ limit_channels = 10 if 'limit' in request.args and len(request.args['limit']) > 0: limit_channels = int(request.args['limit'][0]) if limit_channels <= 0: request.setResponseCode(http.BAD_REQUEST) return json.dumps({"error": "the limit parameter must be a positive number"}) popular_channels = self.channel_db_handler.getMostPopularChannels(max_nr=limit_channels) results_json = [] for channel in popular_channels: channel_json = convert_db_channel_to_json(channel) if self.session.config.get_family_filter_enabled() and \ self.session.lm.category.xxx_filter.isXXX(channel_json['name']): continue results_json.append(channel_json) return json.dumps({"channels": results_json})