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