index.dcgi - sound-bar - BBC sound effects bar
(HTM) git clone git://bitreich.org/sound-bar git://enlrupgkhuxnvlhsf6lc3fziv5h2hhfrinws65d7roiv6bfj7d652fid.onion/sound-bar
(DIR) Log
(DIR) Files
(DIR) Refs
(DIR) Tags
(DIR) README
(DIR) LICENSE
---
index.dcgi (2292B)
---
1 #!/usr/bin/env python
2 # coding=utf-8
3 #
4 # © 2025 Christoph Lohmann <20h@r-36.net>
5 #
6 # This file is published under the terms of the GPLv3.
7 #
8
9 import os
10 import sys
11 import getopt
12 import requests
13 import random
14
15 def main(args):
16 if len(args) != 7:
17 sys.stderr.write("Must be run as geomyidae dcgi.\n")
18 return 1
19 g_search = args[1]
20 g_arguments = args[2]
21 g_host = args[3]
22 g_port = args[4]
23 g_traversal = args[5]
24 g_base = g_selector = args[6]
25 if len(g_traversal) > 0:
26 g_base = g_selector[:-len(g_traversal)]
27
28 sb_base = "https://sound-effects.bbcrewind.co.uk"
29 sb_cached_search = "https://sound-effects-api.bbcrewind.co.uk/api/sfx/cached/search"
30 sb_search = "https://sound-effects-api.bbcrewind.co.uk/api/sfx/search"
31 sb_mp3 = "https://sound-effects-media.bbcrewind.co.uk/mp3"
32 sb_waveform = "https://sound-effects-media.bbcrewind.co.uk/waveform/waveform"
33
34 def name2gph(name):
35 return name.replace("|", "\\|")
36
37 def answer2gph(answer):
38 if not "results" in answer:
39 return "[3|Error answer.||server|port]\n"
40 gph = ""
41 for result in answer["results"]:
42 gph += "[h|%s|URL:%s/%s.mp3|server|port]\n" % \
43 (name2gph(result["description"]),\
44 sb_mp3, result["id"])
45 return gph
46
47 def index2gph():
48 gph = r''' _______/#\____/#\_____//#/#/[-=-]\#\#\\_____/#\____/#\_______
49 (o)/::::\ /::::\ /::::\(o) S O U N D (o)/::::\ /::::\ /::::\(o) -= bUZz BUzz
50 (O)\;;;;/_\;;;;/_\;;;;/(O)___B_A_R___(O)\;;;;/_\;;;;/_\;;;;/(O) BuzZ buZZ
51 '''
52 gph += "[7|search sound effects|%s/search|server|port]\n" % (g_base)
53 return gph
54
55 gph = index2gph()
56 cmds = g_traversal.split("/")
57 query = ""
58 if len(cmds) > 1:
59 if cmds[1] == "search":
60 if len(cmds) > 2:
61 query = cmds[2]
62 elif len(g_search) > 0:
63 query = g_search
64 if query != "":
65 criteria = {"criteria": {
66 "from": 0,
67 "size": 10,
68 "query": "",
69 "tags": None,
70 "categories": None,
71 "durations": None,
72 "continents": None,
73 "sortBy": None,
74 "source": None,
75 "recordist": None,
76 "habitat": None
77 }}
78 criteria["criteria"]["query"] = query
79 answer = requests.post(sb_search, json=criteria).json()
80 else:
81 answer = requests.get(sb_cached_search).json()
82
83 gph += answer2gph(answer)
84
85 sys.stdout.write(gph)
86 sys.stdout.flush()
87
88 return 0
89
90 if __name__ == "__main__":
91 sys.exit(main(sys.argv))
92