superbrain-server 1.0.59 → 1.0.60

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "superbrain-server",
3
- "version": "1.0.59",
3
+ "version": "1.0.60",
4
4
  "description": "1-Line Auto-Installer and Server Execution wrapper for SuperBrain",
5
5
  "main": "index.js",
6
6
  "bin": {
@@ -22,7 +22,7 @@
22
22
  "payload/"
23
23
  ],
24
24
  "publishConfig": {
25
- "registry": "https://registry.npmjs.org/",
26
25
  "access": "public"
27
26
  }
28
27
  }
28
+
package/payload/api.py CHANGED
@@ -726,12 +726,12 @@ async def check_cache(shortcode: str, token: str = Depends(verify_token)):
726
726
 
727
727
 
728
728
  @app.get("/recent")
729
- async def get_recent_analyses(limit: int = Query(default=10000, ge=1), token: str = Depends(verify_token)):
729
+ async def get_recent_analyses(limit: int = Query(default=10, ge=1, le=100), token: str = Depends(verify_token)):
730
730
  """
731
731
  Get recent analyses from database
732
732
 
733
733
  - Returns most recently analyzed content
734
- - Default limit: 10000 (all lightweight posts)
734
+ - Default limit: 10, max: 100
735
735
  - Requires API authentication
736
736
  """
737
737
  try:
@@ -1,52 +1,52 @@
1
1
  {
2
2
  "groq_gpt_oss_20b": {
3
3
  "key": "groq_gpt_oss_20b",
4
- "avg_response_s": 2.1030592078849115,
5
- "success_count": 311,
6
- "fail_count": 9,
7
- "down_until": "2026-04-12T09:18:56.258250",
8
- "last_used": "2026-04-12T08:48:46.365989",
9
- "last_error": "Error code: 429 - {'error': {'message': 'Rate limit reached for model `openai/gpt-oss-20b` in organization `org_01jrmafjknfc8tmcz6f2zka3q2` service tier `on_demand` on tokens per day (TPD): Limit 2000",
4
+ "avg_response_s": 1.5213420135082059,
5
+ "success_count": 85,
6
+ "fail_count": 6,
7
+ "down_until": null,
8
+ "last_used": "2026-04-10T06:49:02.416228",
9
+ "last_error": null,
10
10
  "base_priority": 0.5
11
11
  },
12
12
  "groq_llama33_70b": {
13
13
  "key": "groq_llama33_70b",
14
- "avg_response_s": 14.10594888995464,
15
- "success_count": 131,
16
- "fail_count": 6,
17
- "down_until": null,
18
- "last_used": "2026-04-12T08:37:54.068541",
19
- "last_error": null,
14
+ "avg_response_s": 1.423364281654358,
15
+ "success_count": 2,
16
+ "fail_count": 5,
17
+ "down_until": "2026-04-09T12:01:26.317058",
18
+ "last_used": "2026-02-24T07:53:30.927446",
19
+ "last_error": "No module named 'groq'",
20
20
  "base_priority": 1
21
21
  },
22
22
  "groq_llama4_scout": {
23
23
  "key": "groq_llama4_scout",
24
- "avg_response_s": 11.992687265344381,
25
- "success_count": 7,
24
+ "avg_response_s": null,
25
+ "success_count": 0,
26
26
  "fail_count": 5,
27
- "down_until": null,
28
- "last_used": "2026-04-12T08:08:47.469811",
29
- "last_error": null,
27
+ "down_until": "2026-04-09T12:01:26.318058",
28
+ "last_used": null,
29
+ "last_error": "No module named 'groq'",
30
30
  "base_priority": 1.5
31
31
  },
32
32
  "groq_llama31_8b": {
33
33
  "key": "groq_llama31_8b",
34
- "avg_response_s": 1.9519281985067138,
35
- "success_count": 347,
34
+ "avg_response_s": null,
35
+ "success_count": 0,
36
36
  "fail_count": 5,
37
- "down_until": null,
38
- "last_used": "2026-04-12T09:01:50.290420",
39
- "last_error": null,
37
+ "down_until": "2026-04-09T12:01:26.319563",
38
+ "last_used": null,
39
+ "last_error": "No module named 'groq'",
40
40
  "base_priority": 2
41
41
  },
42
42
  "groq_qwen3_32b": {
43
43
  "key": "groq_qwen3_32b",
44
- "avg_response_s": 3.935154914855957,
45
- "success_count": 1,
44
+ "avg_response_s": null,
45
+ "success_count": 0,
46
46
  "fail_count": 5,
47
- "down_until": null,
48
- "last_used": "2026-04-12T08:16:41.617443",
49
- "last_error": null,
47
+ "down_until": "2026-04-09T12:01:26.320569",
48
+ "last_used": null,
49
+ "last_error": "No module named 'groq'",
50
50
  "base_priority": 2.5
51
51
  },
52
52
  "groq_gpt_oss_120b": {
@@ -313,18 +313,18 @@
313
313
  "key": "gemini_25_flash_vision",
314
314
  "avg_response_s": 15.284299373626709,
315
315
  "success_count": 1,
316
- "fail_count": 32,
317
- "down_until": "2026-04-12T09:01:55.494866",
316
+ "fail_count": 6,
317
+ "down_until": "2026-04-09T12:01:25.986949",
318
318
  "last_used": "2026-02-24T06:25:56.490384",
319
- "last_error": "No module named 'google.generativeai'",
319
+ "last_error": "No module named 'google'",
320
320
  "base_priority": 1
321
321
  },
322
322
  "gemini_25_flash_lite_vision": {
323
323
  "key": "gemini_25_flash_lite_vision",
324
324
  "avg_response_s": 6.709401964075168,
325
325
  "success_count": 14,
326
- "fail_count": 53,
327
- "down_until": "2026-04-12T09:03:49.079253",
326
+ "fail_count": 25,
327
+ "down_until": "2026-04-09T18:29:31.449579",
328
328
  "last_used": "2026-02-24T09:45:09.831171",
329
329
  "last_error": "No module named 'google.generativeai'",
330
330
  "base_priority": 1.5
@@ -333,8 +333,8 @@
333
333
  "key": "gemini_25_pro_vision",
334
334
  "avg_response_s": null,
335
335
  "success_count": 0,
336
- "fail_count": 56,
337
- "down_until": "2026-04-12T09:03:49.075655",
336
+ "fail_count": 28,
337
+ "down_until": "2026-04-09T18:29:31.445576",
338
338
  "last_used": null,
339
339
  "last_error": "No module named 'google.generativeai'",
340
340
  "base_priority": 2
@@ -343,18 +343,18 @@
343
343
  "key": "gemini_3_flash_vision",
344
344
  "avg_response_s": 22.28640604019165,
345
345
  "success_count": 1,
346
- "fail_count": 29,
347
- "down_until": "2026-04-12T09:01:59.727849",
346
+ "fail_count": 6,
347
+ "down_until": "2026-04-09T12:01:25.991504",
348
348
  "last_used": "2026-02-24T07:50:22.906246",
349
- "last_error": "No module named 'google.generativeai'",
349
+ "last_error": "No module named 'google'",
350
350
  "base_priority": 2.5
351
351
  },
352
352
  "gemini_3_pro_vision": {
353
353
  "key": "gemini_3_pro_vision",
354
354
  "avg_response_s": null,
355
355
  "success_count": 0,
356
- "fail_count": 55,
357
- "down_until": "2026-04-12T09:03:49.077691",
356
+ "fail_count": 27,
357
+ "down_until": "2026-04-09T18:29:31.447577",
358
358
  "last_used": null,
359
359
  "last_error": "No module named 'google.generativeai'",
360
360
  "base_priority": 3
@@ -363,8 +363,8 @@
363
363
  "key": "gemini_31_pro_vision",
364
364
  "avg_response_s": null,
365
365
  "success_count": 0,
366
- "fail_count": 54,
367
- "down_until": "2026-04-12T09:03:49.080628",
366
+ "fail_count": 26,
367
+ "down_until": "2026-04-09T18:29:31.450615",
368
368
  "last_used": null,
369
369
  "last_error": "No module named 'google.generativeai'",
370
370
  "base_priority": 3.5
@@ -373,8 +373,8 @@
373
373
  "key": "gemini_20_flash_vision",
374
374
  "avg_response_s": null,
375
375
  "success_count": 0,
376
- "fail_count": 53,
377
- "down_until": "2026-04-12T09:03:49.081592",
376
+ "fail_count": 25,
377
+ "down_until": "2026-04-09T18:29:31.451578",
378
378
  "last_used": null,
379
379
  "last_error": "No module named 'google.generativeai'",
380
380
  "base_priority": 4
@@ -383,8 +383,8 @@
383
383
  "key": "gemini_20_flash_lite_vision",
384
384
  "avg_response_s": null,
385
385
  "success_count": 0,
386
- "fail_count": 53,
387
- "down_until": "2026-04-12T09:03:49.082631",
386
+ "fail_count": 25,
387
+ "down_until": "2026-04-09T18:29:31.453083",
388
388
  "last_used": null,
389
389
  "last_error": "No module named 'google.generativeai'",
390
390
  "base_priority": 4.5
@@ -393,98 +393,98 @@
393
393
  "key": "gemini_15_flash_vision",
394
394
  "avg_response_s": null,
395
395
  "success_count": 0,
396
- "fail_count": 53,
397
- "down_until": "2026-04-12T09:03:49.084633",
396
+ "fail_count": 25,
397
+ "down_until": "2026-04-09T18:29:31.455139",
398
398
  "last_used": null,
399
399
  "last_error": "No module named 'google.generativeai'",
400
400
  "base_priority": 4.8
401
401
  },
402
402
  "groq_llama4_scout_vision": {
403
403
  "key": "groq_llama4_scout_vision",
404
- "avg_response_s": 2.0650597900565066,
405
- "success_count": 217,
406
- "fail_count": 10,
407
- "down_until": "2026-04-12T09:13:17.959244",
408
- "last_used": "2026-04-12T08:42:56.472897",
409
- "last_error": "Error code: 429 - {'error': {'message': 'Rate limit reached for model `meta-llama/llama-4-scout-17b-16e-instruct` in organization `org_01jrmafjknfc8tmcz6f2zka3q2` service tier `on_demand` on tokens pe",
404
+ "avg_response_s": 1.528297446591561,
405
+ "success_count": 56,
406
+ "fail_count": 5,
407
+ "down_until": null,
408
+ "last_used": "2026-04-09T18:25:54.184988",
409
+ "last_error": null,
410
410
  "base_priority": 5
411
411
  },
412
412
  "groq_vision_11b": {
413
413
  "key": "groq_vision_11b",
414
414
  "avg_response_s": null,
415
415
  "success_count": 0,
416
- "fail_count": 31,
417
- "down_until": "2026-04-12T09:01:56.480971",
416
+ "fail_count": 5,
417
+ "down_until": "2026-04-09T12:01:25.989247",
418
418
  "last_used": null,
419
- "last_error": "Error code: 400 - {'error': {'message': 'The model `llama-3.2-11b-vision-preview` has been decommissioned and is no longer supported. Please refer to https://console.groq.com/docs/deprecations for a r",
419
+ "last_error": "No module named 'groq'",
420
420
  "base_priority": 5.5
421
421
  },
422
422
  "groq_vision_90b": {
423
423
  "key": "groq_vision_90b",
424
424
  "avg_response_s": null,
425
425
  "success_count": 0,
426
- "fail_count": 31,
427
- "down_until": "2026-04-12T09:01:57.040649",
426
+ "fail_count": 5,
427
+ "down_until": "2026-04-09T12:01:25.989247",
428
428
  "last_used": null,
429
- "last_error": "Error code: 400 - {'error': {'message': 'The model `llama-3.2-90b-vision-preview` has been decommissioned and is no longer supported. Please refer to https://console.groq.com/docs/deprecations for a r",
429
+ "last_error": "No module named 'groq'",
430
430
  "base_priority": 6
431
431
  },
432
432
  "openrouter_qwen3_vl_235b": {
433
433
  "key": "openrouter_qwen3_vl_235b",
434
434
  "avg_response_s": null,
435
435
  "success_count": 0,
436
- "fail_count": 23,
437
- "down_until": "2026-04-12T09:01:58.155413",
436
+ "fail_count": 0,
437
+ "down_until": null,
438
438
  "last_used": null,
439
- "last_error": "404 Client Error: Not Found for url: https://openrouter.ai/api/v1/chat/completions",
439
+ "last_error": null,
440
440
  "base_priority": 7
441
441
  },
442
442
  "openrouter_qwen3_vl_30b": {
443
443
  "key": "openrouter_qwen3_vl_30b",
444
444
  "avg_response_s": null,
445
445
  "success_count": 0,
446
- "fail_count": 23,
447
- "down_until": "2026-04-12T09:01:59.065255",
446
+ "fail_count": 0,
447
+ "down_until": null,
448
448
  "last_used": null,
449
- "last_error": "404 Client Error: Not Found for url: https://openrouter.ai/api/v1/chat/completions",
449
+ "last_error": null,
450
450
  "base_priority": 7.5
451
451
  },
452
452
  "openrouter_nvidia_vl": {
453
453
  "key": "openrouter_nvidia_vl",
454
- "avg_response_s": 18.168677418730027,
455
- "success_count": 64,
456
- "fail_count": 5,
457
- "down_until": "2026-04-12T09:17:10.589764",
458
- "last_used": "2026-04-12T07:46:28.394605",
459
- "last_error": "429 rate limit: {\"error\":{\"message\":\"Rate limit exceeded: free-models-per-day. Add 10 credits to unlock 1000 free model requests per day\",\"code\":429,\"metadata\":{\"headers\":{\"X-RateLimit-Limit\":\"50\",\"X-",
454
+ "avg_response_s": null,
455
+ "success_count": 0,
456
+ "fail_count": 0,
457
+ "down_until": null,
458
+ "last_used": null,
459
+ "last_error": null,
460
460
  "base_priority": 8
461
461
  },
462
462
  "openrouter_gemma3_vision": {
463
463
  "key": "openrouter_gemma3_vision",
464
- "avg_response_s": 7.945096383094787,
465
- "success_count": 3,
466
- "fail_count": 5,
467
- "down_until": "2026-04-12T09:13:59.767520",
468
- "last_used": "2026-04-12T07:43:40.487825",
469
- "last_error": "429 rate limit: {\"error\":{\"message\":\"Rate limit exceeded: free-models-per-day. Add 10 credits to unlock 1000 free model requests per day\",\"code\":429,\"metadata\":{\"headers\":{\"X-RateLimit-Limit\":\"50\",\"X-",
464
+ "avg_response_s": null,
465
+ "success_count": 0,
466
+ "fail_count": 0,
467
+ "down_until": null,
468
+ "last_used": null,
469
+ "last_error": null,
470
470
  "base_priority": 8.5
471
471
  },
472
472
  "openrouter_mistral_vision": {
473
473
  "key": "openrouter_mistral_vision",
474
474
  "avg_response_s": null,
475
475
  "success_count": 0,
476
- "fail_count": 23,
477
- "down_until": "2026-04-12T09:01:59.725111",
476
+ "fail_count": 0,
477
+ "down_until": null,
478
478
  "last_used": null,
479
- "last_error": "404 Client Error: Not Found for url: https://openrouter.ai/api/v1/chat/completions",
479
+ "last_error": null,
480
480
  "base_priority": 9
481
481
  },
482
482
  "local_qwen3_vl": {
483
483
  "key": "local_qwen3_vl",
484
484
  "avg_response_s": null,
485
485
  "success_count": 0,
486
- "fail_count": 23,
487
- "down_until": "2026-04-12T09:04:18.457834",
486
+ "fail_count": 6,
487
+ "down_until": "2026-04-09T12:01:25.992508",
488
488
  "last_used": null,
489
489
  "last_error": "No module named 'ollama'",
490
490
  "base_priority": 100
@@ -1,5 +1,5 @@
1
1
  {
2
- "cached_at": "2026-04-12T07:04:19.623841",
2
+ "cached_at": "2026-04-10T06:49:01.068927",
3
3
  "models": [
4
4
  {
5
5
  "id": "google/lyria-3-pro-preview",
@@ -982,99 +982,99 @@
982
982
  }
983
983
  },
984
984
  {
985
- "id": "google/gemma-3-27b-it:free",
986
- "canonical_slug": "google/gemma-3-27b-it",
987
- "hugging_face_id": "google/gemma-3-27b-it",
988
- "name": "Google: Gemma 3 27B (free)",
989
- "created": 1741756359,
990
- "description": "Gemma 3 introduces multimodality, supporting vision-language input and text outputs. It handles context windows up to 128k tokens, understands over 140 languages, and offers improved math, reasoning, and chat capabilities,...",
991
- "context_length": 131072,
985
+ "id": "cognitivecomputations/dolphin-mistral-24b-venice-edition:free",
986
+ "canonical_slug": "venice/uncensored",
987
+ "hugging_face_id": "cognitivecomputations/Dolphin-Mistral-24B-Venice-Edition",
988
+ "name": "Venice: Uncensored (free)",
989
+ "created": 1752094966,
990
+ "description": "Venice Uncensored Dolphin Mistral 24B Venice Edition is a fine-tuned variant of Mistral-Small-24B-Instruct-2501, developed by dphn.ai in collaboration with Venice.ai. This model is designed as an \u201cuncensored\u201d instruct-tuned LLM, preserving...",
991
+ "context_length": 32768,
992
992
  "architecture": {
993
- "modality": "text+image->text",
993
+ "modality": "text->text",
994
994
  "input_modalities": [
995
- "text",
996
- "image"
995
+ "text"
997
996
  ],
998
997
  "output_modalities": [
999
998
  "text"
1000
999
  ],
1001
- "tokenizer": "Gemini",
1002
- "instruct_type": "gemma"
1000
+ "tokenizer": "Other",
1001
+ "instruct_type": null
1003
1002
  },
1004
1003
  "pricing": {
1005
1004
  "prompt": "0",
1006
1005
  "completion": "0"
1007
1006
  },
1008
1007
  "top_provider": {
1009
- "context_length": 131072,
1010
- "max_completion_tokens": 8192,
1008
+ "context_length": 32768,
1009
+ "max_completion_tokens": null,
1011
1010
  "is_moderated": false
1012
1011
  },
1013
1012
  "per_request_limits": null,
1014
1013
  "supported_parameters": [
1014
+ "frequency_penalty",
1015
1015
  "max_tokens",
1016
+ "presence_penalty",
1016
1017
  "response_format",
1017
- "seed",
1018
1018
  "stop",
1019
+ "structured_outputs",
1019
1020
  "temperature",
1021
+ "top_k",
1020
1022
  "top_p"
1021
1023
  ],
1022
- "default_parameters": {
1023
- "temperature": null,
1024
- "top_p": null,
1025
- "frequency_penalty": null
1026
- },
1027
- "knowledge_cutoff": "2024-08-31",
1024
+ "default_parameters": {},
1025
+ "knowledge_cutoff": "2024-04-30",
1028
1026
  "expiration_date": null,
1029
1027
  "links": {
1030
- "details": "/api/v1/models/google/gemma-3-27b-it/endpoints"
1028
+ "details": "/api/v1/models/venice/uncensored/endpoints"
1031
1029
  }
1032
1030
  },
1033
1031
  {
1034
- "id": "cognitivecomputations/dolphin-mistral-24b-venice-edition:free",
1035
- "canonical_slug": "venice/uncensored",
1036
- "hugging_face_id": "cognitivecomputations/Dolphin-Mistral-24B-Venice-Edition",
1037
- "name": "Venice: Uncensored (free)",
1038
- "created": 1752094966,
1039
- "description": "Venice Uncensored Dolphin Mistral 24B Venice Edition is a fine-tuned variant of Mistral-Small-24B-Instruct-2501, developed by dphn.ai in collaboration with Venice.ai. This model is designed as an \u201cuncensored\u201d instruct-tuned LLM, preserving...",
1040
- "context_length": 32768,
1032
+ "id": "google/gemma-3-27b-it:free",
1033
+ "canonical_slug": "google/gemma-3-27b-it",
1034
+ "hugging_face_id": "google/gemma-3-27b-it",
1035
+ "name": "Google: Gemma 3 27B (free)",
1036
+ "created": 1741756359,
1037
+ "description": "Gemma 3 introduces multimodality, supporting vision-language input and text outputs. It handles context windows up to 128k tokens, understands over 140 languages, and offers improved math, reasoning, and chat capabilities,...",
1038
+ "context_length": 131072,
1041
1039
  "architecture": {
1042
- "modality": "text->text",
1040
+ "modality": "text+image->text",
1043
1041
  "input_modalities": [
1044
- "text"
1042
+ "text",
1043
+ "image"
1045
1044
  ],
1046
1045
  "output_modalities": [
1047
1046
  "text"
1048
1047
  ],
1049
- "tokenizer": "Other",
1050
- "instruct_type": null
1048
+ "tokenizer": "Gemini",
1049
+ "instruct_type": "gemma"
1051
1050
  },
1052
1051
  "pricing": {
1053
1052
  "prompt": "0",
1054
1053
  "completion": "0"
1055
1054
  },
1056
1055
  "top_provider": {
1057
- "context_length": 32768,
1058
- "max_completion_tokens": null,
1056
+ "context_length": 131072,
1057
+ "max_completion_tokens": 8192,
1059
1058
  "is_moderated": false
1060
1059
  },
1061
1060
  "per_request_limits": null,
1062
1061
  "supported_parameters": [
1063
- "frequency_penalty",
1064
1062
  "max_tokens",
1065
- "presence_penalty",
1066
1063
  "response_format",
1064
+ "seed",
1067
1065
  "stop",
1068
- "structured_outputs",
1069
1066
  "temperature",
1070
- "top_k",
1071
1067
  "top_p"
1072
1068
  ],
1073
- "default_parameters": {},
1074
- "knowledge_cutoff": "2024-04-30",
1069
+ "default_parameters": {
1070
+ "temperature": null,
1071
+ "top_p": null,
1072
+ "frequency_penalty": null
1073
+ },
1074
+ "knowledge_cutoff": "2024-08-31",
1075
1075
  "expiration_date": null,
1076
1076
  "links": {
1077
- "details": "/api/v1/models/venice/uncensored/endpoints"
1077
+ "details": "/api/v1/models/google/gemma-3-27b-it/endpoints"
1078
1078
  }
1079
1079
  },
1080
1080
  {
@@ -246,15 +246,14 @@ class Database:
246
246
  traceback.print_exc()
247
247
  return False
248
248
 
249
- def get_recent(self, limit=10000):
250
- """Return the most recently analysed posts (excludes soft-deleted). Optimized to exclude heavy text blobs."""
249
+ def get_recent(self, limit=10):
250
+ """Return the most recently analysed posts (excludes soft-deleted)."""
251
251
  if not self.is_connected():
252
252
  return []
253
253
  try:
254
254
  cur = self._conn.cursor()
255
- cols = "shortcode, url, username, content_type, analyzed_at, updated_at, post_date, likes, thumbnail, title, summary, tags, music, category, is_hidden"
256
255
  cur.execute(
257
- f"SELECT {cols} FROM analyses WHERE (is_hidden IS NULL OR is_hidden = 0) ORDER BY analyzed_at DESC LIMIT ?", (limit,)
256
+ "SELECT * FROM analyses WHERE (is_hidden IS NULL OR is_hidden = 0) ORDER BY analyzed_at DESC LIMIT ?", (limit,)
258
257
  )
259
258
  return [self._row_to_dict(r) for r in cur.fetchall()]
260
259
  except Exception as e:
@@ -267,9 +266,8 @@ class Database:
267
266
  return []
268
267
  try:
269
268
  cur = self._conn.cursor()
270
- cols = "shortcode, url, username, content_type, analyzed_at, updated_at, post_date, likes, thumbnail, title, summary, tags, music, category, is_hidden"
271
269
  cur.execute(
272
- f"SELECT {cols} FROM analyses WHERE category = ? AND (is_hidden IS NULL OR is_hidden = 0) ORDER BY analyzed_at DESC LIMIT ?",
270
+ "SELECT * FROM analyses WHERE category = ? AND (is_hidden IS NULL OR is_hidden = 0) ORDER BY analyzed_at DESC LIMIT ?",
273
271
  (category, limit)
274
272
  )
275
273
  return [self._row_to_dict(r) for r in cur.fetchall()]
@@ -294,9 +292,8 @@ class Database:
294
292
  cur = self._conn.cursor()
295
293
  conditions = " OR ".join(["LOWER(tags) LIKE ?" for _ in tags])
296
294
  params = [f"%{t.lower()}%" for t in tags] + [limit]
297
- cols = "shortcode, url, username, content_type, analyzed_at, updated_at, post_date, likes, thumbnail, title, summary, tags, music, category, is_hidden"
298
295
  cur.execute(
299
- f"SELECT {cols} FROM analyses WHERE ({conditions}) AND (is_hidden IS NULL OR is_hidden = 0) ORDER BY analyzed_at DESC LIMIT ?",
296
+ f"SELECT * FROM analyses WHERE ({conditions}) AND (is_hidden IS NULL OR is_hidden = 0) ORDER BY analyzed_at DESC LIMIT ?",
300
297
  params
301
298
  )
302
299
  return [self._row_to_dict(r) for r in cur.fetchall()]