@@ -217,6 +217,53 @@ def get(self):
217
217
self .write (resp )
218
218
219
219
220
+ class NameHandler (BaseHandler ):
221
+ executor = ThreadPoolExecutor (50 )
222
+
223
+ @run_on_executor ()
224
+ def get_top_resource (self ):
225
+ if self .get_query_argument ("human" , None ):
226
+ aggregation = [
227
+ {
228
+ "$project" : {
229
+ "name" : {
230
+ "$concat" : [
231
+ "$data.info.area" ,
232
+ "$data.info.channel_cn" ,
233
+ ": " ,
234
+ "$data.info.cnname" ,
235
+ " " ,
236
+ "$data.info.enname" ,
237
+ " " ,
238
+ "$data.info.aliasname"
239
+ ]
240
+ },
241
+ "_id" : False
242
+ }
243
+ }
244
+ ]
245
+ query_cursor = self .mongo .db ["yyets" ].aggregate (aggregation )
246
+ else :
247
+ projection = {'_id' : False ,
248
+ 'data.info.cnname' : True ,
249
+ 'data.info.enname' : True ,
250
+ 'data.info.aliasname' : True ,
251
+ 'data.info.channel_cn' : True ,
252
+
253
+ }
254
+ query_cursor = self .mongo .db ["yyets" ].find ({}, projection )
255
+
256
+ data = []
257
+ for i in query_cursor :
258
+ data .extend (i .values ())
259
+ return dict (data = data )
260
+
261
+ @gen .coroutine
262
+ def get (self ):
263
+ resp = yield self .get_top_resource ()
264
+ self .write (resp )
265
+
266
+
220
267
class MetricsHandler (BaseHandler ):
221
268
executor = ThreadPoolExecutor (50 )
222
269
@@ -256,6 +303,7 @@ class RunServer:
256
303
handlers = [
257
304
(r'/api/resource' , ResourceHandler ),
258
305
(r'/api/top' , TopHandler ),
306
+ (r'/api/name' , NameHandler ),
259
307
(r'/api/metrics' , MetricsHandler ),
260
308
(r'/' , IndexHandler ),
261
309
(r'/(.*\.html|.*\.js|.*\.css|.*\.png|.*\.jpg|.*\.ico|.*\.gif|.*\.woff2)' , web .StaticFileHandler ,
0 commit comments