Circumvent clownflare, make categories more specific. - gopherbay - piratebay gopher interface
 (HTM) git clone git://bitreich.org/gopherbay git://enlrupgkhuxnvlhsf6lc3fziv5h2hhfrinws65d7roiv6bfj7d652fid.onion/gopherbay
 (DIR) Log
 (DIR) Files
 (DIR) Refs
 (DIR) Tags
 (DIR) README
 (DIR) LICENSE
       ---
 (DIR) commit 574f32f812b53ec9242ce9084c972c42469b0f7a
 (DIR) parent 2c20385c9b3becf36b5000b4ac76c2f7f2a4d09e
 (HTM) Author: Christoph Lohmann <20h@r-36.net>
       Date:   Sun, 11 Jan 2026 19:32:21 +0100
       
       Circumvent clownflare, make categories more specific.
       
       Diffstat:
         M index.dcgi                          |      42 +++++++++++++++++++++++++------
       
       1 file changed, 34 insertions(+), 8 deletions(-)
       ---
 (DIR) diff --git a/index.dcgi b/index.dcgi
       @@ -87,6 +87,10 @@ proxies = {
                "https": "socks5h://localhost:9050"
        }
        
       +headers = {
       +        "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3"
       +}
       +
        def main(args):
                if len(args) != 7:
                        sys.stderr.write("Must be run as geomyidae dcgi.\n")
       @@ -133,10 +137,22 @@ def main(args):
        
                def category2gph(kind):
                        gph = logo()
       -                if kind == "top" or kind == "recent":
       +                begin_category = list(categories.keys())[0]
       +                end_category = list(categories.keys())[-1]
       +                if kind == "top" or kind == "recent" or kind == "category":
                                gph += "[1|all %s|%s/search/%s|server|port]\n" % \
                                        (kind, g_base, kind)
       -                for c in categories:
       +                else:
       +                        try:
       +                                c = int(kind)
       +                        except ValueError:
       +                                return "[3|Invalid category.||server|port]\n"
       +                        begin_category = c - (c % 100)
       +                        end_category = begin_category + 99
       +
       +                for c in categories.keys():
       +                        if c < begin_category or c > end_category:
       +                                continue
                                if (c % 100) == 0:
                                        gph += "[1|= %s =|%s/search/%s:%s|server|port]\n" % \
                                                (categories[c], g_base, kind, c)
       @@ -149,33 +165,40 @@ def main(args):
                        if q == "":
                                return requests.get(pb_data % (pb_precompiled,\
                                                "top100", "all"),\
       +                                        headers=headers,\
                                                proxies=proxies).json()
                        elif q.startswith("recent"):
                                if ":" in q:
                                        (q, category) = q.split(":", 1)
                                        return requests.get(pb_data % (pb_precompiled,\
                                                "top100_48h", category),\
       -                                        proxies=proxies)
       +                                        headers=headers,\
       +                                        proxies=proxies).json()
                                else:
                                        return requests.get(pb_data % (pb_precompiled,\
                                                "top100", "recent"),\
       -                                        proxies=proxies)
       +                                        headers=headers,\
       +                                        proxies=proxies).json()
                        elif q.startswith("top"):
                                if ":" in q:
                                        (q, category) = q.split(":", 1)
                                        return requests.get(pb_data % (pb_precompiled,\
                                                "top100", category),\
       -                                        proxies=proxies)
       +                                        headers=headers,\
       +                                        proxies=proxies).json()
                                else:
                                        return requests.get(pb_data % (pb_precompiled,\
                                                "top100", "all"),\
       -                                        proxies=proxies)
       +                                        headers=headers,\
       +                                        proxies=proxies).json()
                        else:
                                return requests.get(pb_search, params={"q":q},\
       +                                        headers=headers,\
                                                proxies=proxies).json()
        
                # Proudly taken from parazyd.
                def print_category(c):
       +                c = int(c)
                        if c in categories:
                                masterc = str(c)[0] + "00"
                                if masterc in categories:
       @@ -203,7 +226,7 @@ def main(args):
                                gph += "[1|Category: %s|%s/category/%s|server|port]\n" % \
                                        (name2gph(print_category(r["category"])),\
                                        g_base, r["category"])
       -                        gph += "Se:%d,Le:%d,F#:%d,Si:%s,T:%s,U:%s\n" % \
       +                        gph += "Seeders:%d,Leechers:%d,Files:%d,Size:%s,T:%s,U:%s\n" % \
                                        (int(r["seeders"]), int(r["leechers"]),\
                                        int(r["num_files"]), size2human(int(r["size"])),\
                                        time.strftime("%Y-%m-%d %H:%M:%S", time.gmtime(int(r["added"]))),\
       @@ -219,7 +242,10 @@ def main(args):
                elif cmds[1] == "":
                        gph = index2gph()
                elif cmds[1] == "category" or cmds[1] == "top" or cmds[1] == "recent":
       -                gph = category2gph(cmds[1])
       +                if len(cmds) > 2:
       +                        gph = category2gph(cmds[2])
       +                else:
       +                        gph = category2gph(cmds[1])
                elif cmds[1] == "search":
                        # https://apibay.org/q.php?q=Example
                        # scm:apibay