no1b4me commited on
Commit
8cef93b
·
verified ·
1 Parent(s): e81f8f1

Upload 31 files

Browse files
Files changed (15) hide show
  1. .env +5 -1
  2. .env_sample +1 -2
  3. .idea/.gitignore +8 -0
  4. .idea/jackett_addon_fiber.iml +9 -0
  5. .idea/modules.xml +8 -0
  6. .idea/vcs.xml +6 -0
  7. assets/nyaa.public.db +3 -1
  8. assets/servers.db +2 -3
  9. go.mod +15 -9
  10. go.sum +16 -32
  11. helpers.go +25 -22
  12. main.go +53 -134
  13. rd.go +3 -4
  14. redis.go +23 -0
  15. utils.go +27 -4
.env CHANGED
@@ -1,3 +1,7 @@
1
  MAX_RES=100
2
- PUBLIC=0
3
  PORT=8001
 
 
 
 
 
1
  MAX_RES=100
2
+ PUBLIC=1
3
  PORT=8001
4
+ OVERRIDE_API_URL="/api/v2.0/indexers/nyaasi/results/torznab/api?cat=2000,5000,8000"
5
+ REDIS_URL="vast-leopard-52165.upstash.io"
6
+ REDIS_PASSWORD="AcvFAAIncDFhOTkwMjlkMTNlN2M0NmM1YWJjMDFkMzc5OTIyMTY2NXAxNTIxNjU"
7
+ REDIS_PORT='6379'
.env_sample CHANGED
@@ -1,4 +1,3 @@
1
  MAX_RES=100 # max results to receive from the addon
2
  PUBLIC=0 # 0 means the tracker is public and 1 otherwise
3
- OVERRIDE_API_URL="/api/v2.0/indexers/nyaasi/results/torznab/api?cat=2000,5000,8000"
4
- PORT=3000
 
1
  MAX_RES=100 # max results to receive from the addon
2
  PUBLIC=0 # 0 means the tracker is public and 1 otherwise
3
+ OVERRIDE_API_URL="/api/v2.0/indexers/nyaasi/results/torznab/api?cat=2000,5000,8000"
 
.idea/.gitignore ADDED
@@ -0,0 +1,8 @@
 
 
 
 
 
 
 
 
 
1
+ # Default ignored files
2
+ /shelf/
3
+ /workspace.xml
4
+ # Editor-based HTTP Client requests
5
+ /httpRequests/
6
+ # Datasource local storage ignored files
7
+ /dataSources/
8
+ /dataSources.local.xml
.idea/jackett_addon_fiber.iml ADDED
@@ -0,0 +1,9 @@
 
 
 
 
 
 
 
 
 
 
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <module type="WEB_MODULE" version="4">
3
+ <component name="Go" enabled="true" />
4
+ <component name="NewModuleRootManager">
5
+ <content url="file://$MODULE_DIR$" />
6
+ <orderEntry type="inheritedJdk" />
7
+ <orderEntry type="sourceFolder" forTests="false" />
8
+ </component>
9
+ </module>
.idea/modules.xml ADDED
@@ -0,0 +1,8 @@
 
 
 
 
 
 
 
 
 
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <project version="4">
3
+ <component name="ProjectModuleManager">
4
+ <modules>
5
+ <module fileurl="file://$PROJECT_DIR$/.idea/jackett_addon_fiber.iml" filepath="$PROJECT_DIR$/.idea/jackett_addon_fiber.iml" />
6
+ </modules>
7
+ </component>
8
+ </project>
.idea/vcs.xml ADDED
@@ -0,0 +1,6 @@
 
 
 
 
 
 
 
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <project version="4">
3
+ <component name="VcsDirectoryMappings">
4
+ <mapping directory="" vcs="Git" />
5
+ </component>
6
+ </project>
assets/nyaa.public.db CHANGED
@@ -1,2 +1,4 @@
1
  http://107.174.205.19:9117|lob0qltgax72dudgufn7onjr7nx2rscw
2
- http://172.91.224.183:9117|luuo4utx3hiaigdx2gpdm5pxa9k2kxw2
 
 
 
1
  http://107.174.205.19:9117|lob0qltgax72dudgufn7onjr7nx2rscw
2
+ http://172.91.224.183:9117|luuo4utx3hiaigdx2gpdm5pxa9k2kxw2
3
+ http://209.141.51.175:9117|cmrenk8hgy1u738worvkmfiuif5fa14c
4
+ http://108.35.189.213:9117|w7i23m3vo1dc9xmco53ysxksd16stzg3
assets/servers.db CHANGED
@@ -1,3 +1,2 @@
1
- http://94.23.251.209:9117|9h74moi7ojdkiznbnjs0u06120skuvi7
2
- http://91.121.142.198:9117|h3sw93wbzdfxql4gdf42b30r9nj18qm6
3
- http://94.23.255.66:9117/jackett|k1uucgr72c7l6a7l2nc45v0nlrsvbuq3
 
1
+ http://209.141.51.175:9117|cmrenk8hgy1u738worvkmfiuif5fa14c
2
+ http://108.35.189.213:9117|w7i23m3vo1dc9xmco53ysxksd16stzg3
 
go.mod CHANGED
@@ -1,11 +1,15 @@
1
  module github.com/daniwalter001/jackett_fiber
2
 
3
- // +heroku goVersion go1.21
4
- go 1.22
5
 
6
- require github.com/gofiber/fiber/v2 v2.52.5
7
 
8
- require github.com/zeebo/bencode v1.0.0 // indirect
 
 
 
 
9
 
10
  require (
11
  github.com/RoaringBitmap/roaring v1.2.3 // indirect
@@ -24,7 +28,7 @@ require (
24
  github.com/anacrolix/multiless v0.3.0 // indirect
25
  github.com/anacrolix/stm v0.4.0 // indirect
26
  github.com/anacrolix/sync v0.5.1 // indirect
27
- github.com/anacrolix/torrent v1.55.0
28
  github.com/anacrolix/upnp v0.1.3-0.20220123035249-922794e51c96 // indirect
29
  github.com/anacrolix/utp v0.1.0 // indirect
30
  github.com/andybalholm/brotli v1.0.5 // indirect
@@ -45,7 +49,7 @@ require (
45
  github.com/gorilla/websocket v1.5.0 // indirect
46
  github.com/huandu/xstrings v1.3.2 // indirect
47
  github.com/j-muller/go-torrent-parser v0.0.0-20211014072822-db02b4099054
48
- github.com/joho/godotenv v1.5.1
49
  github.com/klauspost/compress v1.17.0 // indirect
50
  github.com/mattn/go-colorable v0.1.13 // indirect
51
  github.com/mattn/go-isatty v0.0.20 // indirect
@@ -70,6 +74,7 @@ require (
70
  github.com/pion/udp v0.1.4 // indirect
71
  github.com/pion/webrtc/v3 v3.1.42 // indirect
72
  github.com/pkg/errors v0.9.1 // indirect
 
73
  github.com/remyoudompheng/bigfft v0.0.0-20230129092748-24d4a6f8daec // indirect
74
  github.com/rivo/uniseg v0.2.0 // indirect
75
  github.com/rs/dnscache v0.0.0-20211102005908-e0241e321417 // indirect
@@ -80,11 +85,12 @@ require (
80
  go.etcd.io/bbolt v1.3.6 // indirect
81
  go.opentelemetry.io/otel v1.8.0 // indirect
82
  go.opentelemetry.io/otel/trace v1.8.0 // indirect
83
- golang.org/x/crypto v0.21.0 // indirect
84
  golang.org/x/exp v0.0.0-20230626212559-97b1e661b5df // indirect
85
- golang.org/x/net v0.23.0 // indirect
86
  golang.org/x/sync v0.3.0 // indirect
87
- golang.org/x/sys v0.18.0 // indirect
 
88
  golang.org/x/time v0.0.0-20220609170525-579cf78fd858 // indirect
89
  modernc.org/libc v1.22.3 // indirect
90
  modernc.org/mathutil v1.5.0 // indirect
 
1
  module github.com/daniwalter001/jackett_fiber
2
 
3
+ // +heroku goVersion go1.21.0
4
+ go 1.22.0
5
 
6
+ require github.com/gofiber/fiber/v2 v2.52.4
7
 
8
+ require (
9
+ github.com/cespare/xxhash/v2 v2.2.0 // indirect
10
+ github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f // indirect
11
+ github.com/zeebo/bencode v1.0.0 // indirect
12
+ )
13
 
14
  require (
15
  github.com/RoaringBitmap/roaring v1.2.3 // indirect
 
28
  github.com/anacrolix/multiless v0.3.0 // indirect
29
  github.com/anacrolix/stm v0.4.0 // indirect
30
  github.com/anacrolix/sync v0.5.1 // indirect
31
+ github.com/anacrolix/torrent v1.55.0 // indirect
32
  github.com/anacrolix/upnp v0.1.3-0.20220123035249-922794e51c96 // indirect
33
  github.com/anacrolix/utp v0.1.0 // indirect
34
  github.com/andybalholm/brotli v1.0.5 // indirect
 
49
  github.com/gorilla/websocket v1.5.0 // indirect
50
  github.com/huandu/xstrings v1.3.2 // indirect
51
  github.com/j-muller/go-torrent-parser v0.0.0-20211014072822-db02b4099054
52
+ github.com/joho/godotenv v1.5.1 // indirect
53
  github.com/klauspost/compress v1.17.0 // indirect
54
  github.com/mattn/go-colorable v0.1.13 // indirect
55
  github.com/mattn/go-isatty v0.0.20 // indirect
 
74
  github.com/pion/udp v0.1.4 // indirect
75
  github.com/pion/webrtc/v3 v3.1.42 // indirect
76
  github.com/pkg/errors v0.9.1 // indirect
77
+ github.com/redis/go-redis/v9 v9.5.1
78
  github.com/remyoudompheng/bigfft v0.0.0-20230129092748-24d4a6f8daec // indirect
79
  github.com/rivo/uniseg v0.2.0 // indirect
80
  github.com/rs/dnscache v0.0.0-20211102005908-e0241e321417 // indirect
 
85
  go.etcd.io/bbolt v1.3.6 // indirect
86
  go.opentelemetry.io/otel v1.8.0 // indirect
87
  go.opentelemetry.io/otel/trace v1.8.0 // indirect
88
+ golang.org/x/crypto v0.17.0 // indirect
89
  golang.org/x/exp v0.0.0-20230626212559-97b1e661b5df // indirect
90
+ golang.org/x/net v0.17.0 // indirect
91
  golang.org/x/sync v0.3.0 // indirect
92
+ golang.org/x/sys v0.15.0 // indirect
93
+ golang.org/x/text v0.15.0
94
  golang.org/x/time v0.0.0-20220609170525-579cf78fd858 // indirect
95
  modernc.org/libc v1.22.3 // indirect
96
  modernc.org/mathutil v1.5.0 // indirect
go.sum CHANGED
@@ -2,10 +2,7 @@ cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMT
2
  cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw=
3
  crawshaw.io/iox v0.0.0-20181124134642-c51c3df30797/go.mod h1:sXBiorCo8c46JlQV3oXPKINnZ8mcqnye1EkVkqsectk=
4
  crawshaw.io/sqlite v0.3.2/go.mod h1:igAO5JulrQ1DbdZdtVq48mnZUBAPOeFzer7VhDWNtW4=
5
- filippo.io/edwards25519 v1.0.0-rc.1 h1:m0VOOB23frXZvAOK44usCgLWvtsxIoMCTBGJZlpmGfU=
6
- filippo.io/edwards25519 v1.0.0-rc.1/go.mod h1:N1IkdkCkiLB6tki+MYJoSx2JTY9NUlxZE7eHn5EwJns=
7
  github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU=
8
- github.com/OneOfOne/xxhash v1.2.2 h1:KMrpdQIwFcEqXDklaen+P1axHaj9BSKzvpUUfnHldSE=
9
  github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU=
10
  github.com/RoaringBitmap/roaring v0.4.7/go.mod h1:8khRDP4HmeXns4xIj9oGrKSz7XTQiJx2zgh7AcNke4w=
11
  github.com/RoaringBitmap/roaring v0.4.17/go.mod h1:D3qVegWTmfCaX4Bl5CrBE9hfrSrrXIr8KVNvRsDi1NI=
@@ -16,12 +13,8 @@ github.com/Shopify/sarama v1.19.0/go.mod h1:FVkBWblsNy7DGZRfXLU0O9RCGt5g3g3yEuWX
16
  github.com/Shopify/toxiproxy v2.1.4+incompatible/go.mod h1:OXgGpZ6Cli1/URJOF1DMxUHB2q5Ap20/P/eIdh4G0pI=
17
  github.com/ajwerner/btree v0.0.0-20211221152037-f427b3e689c0 h1:byYvvbfSo3+9efR4IeReh77gVs4PnNDR3AMOE9NJ7a0=
18
  github.com/ajwerner/btree v0.0.0-20211221152037-f427b3e689c0/go.mod h1:q37NoqncT41qKc048STsifIt69LfUJ8SrWWcz/yam5k=
19
- github.com/alecthomas/assert/v2 v2.0.0-alpha3 h1:pcHeMvQ3OMstAWgaeaXIAL8uzB9xMm2zlxt+/4ml8lk=
20
- github.com/alecthomas/assert/v2 v2.0.0-alpha3/go.mod h1:+zD0lmDXTeQj7TgDgCt0ePWxb0hMC1G+PGTsTCv1B9o=
21
  github.com/alecthomas/atomic v0.1.0-alpha2 h1:dqwXmax66gXvHhsOS4pGPZKqYOlTkapELkLb3MNdlH8=
22
  github.com/alecthomas/atomic v0.1.0-alpha2/go.mod h1:zD6QGEyw49HIq19caJDc2NMXAy8rNi9ROrxtMXATfyI=
23
- github.com/alecthomas/repr v0.0.0-20210801044451-80ca428c5142 h1:8Uy0oSf5co/NZXje7U1z8Mpep++QJOldL2hs/sBQf48=
24
- github.com/alecthomas/repr v0.0.0-20210801044451-80ca428c5142/go.mod h1:2kn6fqh/zIyPLmm3ugklbEi5hg5wS435eygvNfaDQL8=
25
  github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc=
26
  github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc=
27
  github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0=
@@ -45,7 +38,6 @@ github.com/anacrolix/log v0.10.1-0.20220123034749-3920702c17f8/go.mod h1:GmnE2c0
45
  github.com/anacrolix/log v0.13.1/go.mod h1:D4+CvN8SnruK6zIFS/xPoRJmtvtnxs+CSfDQ+BFxZ68=
46
  github.com/anacrolix/log v0.14.6-0.20231202035202-ed7a02cad0b4 h1:CdVK9IoqoqklXQQ4+L2aew64xsz14KdOD+rnKdTQajg=
47
  github.com/anacrolix/log v0.14.6-0.20231202035202-ed7a02cad0b4/go.mod h1:1OmJESOtxQGNMlUO5rcv96Vpp9mfMqXXbe2RdinFLdY=
48
- github.com/anacrolix/lsan v0.0.0-20211126052245-807000409a62 h1:P04VG6Td13FHMgS5ZBcJX23NPC/fiC4cp9bXwYujdYM=
49
  github.com/anacrolix/lsan v0.0.0-20211126052245-807000409a62/go.mod h1:66cFKPCO7Sl4vbFnAaSq7e4OXtdMhRSBagJGWgmpJbM=
50
  github.com/anacrolix/missinggo v0.0.0-20180725070939-60ef2fbf63df/go.mod h1:kwGiTUTZ0+p4vAz3VbAI5a30t2YbvemcmspjKwrAz5s=
51
  github.com/anacrolix/missinggo v1.1.0/go.mod h1:MBJu3Sk/k3ZfGYcS7z18gwfu72Ey/xopPFJJbTi5yIo=
@@ -102,11 +94,15 @@ github.com/bradfitz/iter v0.0.0-20191230175014-e8f45d346db8/go.mod h1:spo1JLcs67
102
  github.com/cespare/xxhash v1.1.0 h1:a6HrQnmkObjyL+Gs60czilIUGqrzKutQD6XZog3p+ko=
103
  github.com/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghfAqPWnc=
104
  github.com/cespare/xxhash/v2 v2.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs=
 
 
105
  github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw=
106
  github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E=
107
  github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
108
  github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
109
  github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
 
 
110
  github.com/docopt/docopt-go v0.0.0-20180111231733-ee0de3bc6815/go.mod h1:WwZ+bS3ebgob9U8Nd0kOddGdZWjyMGR8Wziv+TBNwSE=
111
  github.com/dustin/go-humanize v0.0.0-20180421182945-02af3965c54e/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk=
112
  github.com/dustin/go-humanize v1.0.0 h1:VSnTsYCnlFHaM2/igO1h6X3HA71jcobQuxemgkq4zYo=
@@ -117,8 +113,6 @@ github.com/eapache/queue v1.1.0/go.mod h1:6eCeP0CKFpHLu8blIFXhExK/dRa7WDZfr6jVFP
117
  github.com/edsrzf/mmap-go v1.1.0 h1:6EUwBLQ/Mcr1EYLE4Tn1VdW1A4ckqCQWZBw8Hr0kjpQ=
118
  github.com/edsrzf/mmap-go v1.1.0/go.mod h1:19H/e8pUPLicwkyNgOykDXkJ9F0MHE+Z52B8EIth78Q=
119
  github.com/frankban/quicktest v1.9.0/go.mod h1:ui7WezCLWMWxVWr1GETZY3smRy0G4KWq9vcPtJmFl7Y=
120
- github.com/frankban/quicktest v1.14.6 h1:7Xjx+VpznH+oBnejlPUj8oUpdxnVs4f8XU8WnHkI4W8=
121
- github.com/frankban/quicktest v1.14.6/go.mod h1:4ptaffx2x8+WTWXmUCuVU6aPUX1/Mz7zb5vbUoiM6w0=
122
  github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo=
123
  github.com/fsnotify/fsnotify v1.4.9/go.mod h1:znqG4EE+3YCdAaPaxE2ZRY/06pZUdp0tY4IgpuI1SZQ=
124
  github.com/glycerine/go-unsnap-stream v0.0.0-20180323001048-9f0cb55181dd/go.mod h1:/20jfyN9Y5QPEAprSgKAUr+glWDY39ZiUEAYOEv5dsE=
@@ -142,8 +136,8 @@ github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag=
142
  github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE=
143
  github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY=
144
  github.com/go-task/slim-sprig v0.0.0-20210107165309-348f09dbbbc0/go.mod h1:fyg7847qk6SyHyPtNmDHnmrv/HOrqktSC+C9fM+CJOE=
145
- github.com/gofiber/fiber/v2 v2.52.5 h1:tWoP1MJQjGEe4GB5TUGOi7P2E0ZMMRx5ZTG4rT+yGMo=
146
- github.com/gofiber/fiber/v2 v2.52.5/go.mod h1:KEOE+cXMhXG0zHc9d8+E38hoX+ZN7bhOtgeF2oT6jrQ=
147
  github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ=
148
  github.com/gogo/protobuf v1.2.0/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ=
149
  github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q=
@@ -172,8 +166,6 @@ github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMyw
172
  github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU=
173
  github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
174
  github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
175
- github.com/google/go-cmp v0.5.9 h1:O2Tfq5qg4qc4AmwVlvv0oLiVAGB7enBSJ2x2DqQFi38=
176
- github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=
177
  github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg=
178
  github.com/google/uuid v1.3.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
179
  github.com/google/uuid v1.5.0 h1:1p67kYwdtXjb0gL0BPiP1Av9wiZPo5A8z2cWkTZ+eyU=
@@ -187,8 +179,6 @@ github.com/gorilla/mux v1.6.2/go.mod h1:1lud6UwP+6orDFRuTfBEV8e9/aOM/c4fVVCaMa2z
187
  github.com/gorilla/websocket v1.5.0 h1:PPwGk2jz7EePpoHN/+ClbZu8SPxiqlu12wZP/3sWmnc=
188
  github.com/gorilla/websocket v1.5.0/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE=
189
  github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8=
190
- github.com/hexops/gotextdiff v1.0.3 h1:gitA9+qJrrTCsiCl7+kh75nPqQt1cx4ZkudSTLoUqJM=
191
- github.com/hexops/gotextdiff v1.0.3/go.mod h1:pSWU5MAI3yDq+fZBTazCSJysOMbxWL1BSow5/V2vxeg=
192
  github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU=
193
  github.com/huandu/xstrings v1.0.0/go.mod h1:4qWG/gcEcfX4z/mBDHJ++3ReCw9ibxbsNJbcucJdbSo=
194
  github.com/huandu/xstrings v1.2.0/go.mod h1:DvyZB1rfVYsBIigL8HwpZgxHwXozlTgGqn63UyNX5k4=
@@ -213,11 +203,8 @@ github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515/go.mod h1:+0opPa2QZZtGFB
213
  github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo=
214
  github.com/kr/pretty v0.2.0/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI=
215
  github.com/kr/pretty v0.3.0/go.mod h1:640gp4NfQd8pI5XOwp5fnNeVWj67G7CFk/SaSQn7NBk=
216
- github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE=
217
- github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk=
218
  github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ=
219
  github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI=
220
- github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY=
221
  github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE=
222
  github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA=
223
  github.com/mattn/go-colorable v0.1.13/go.mod h1:7S9/ev0klgBDR4GtXTXX8a3vIGJpMovkB8vQcUbaXHg=
@@ -297,7 +284,6 @@ github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINE
297
  github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
298
  github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4=
299
  github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
300
- github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
301
  github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
302
  github.com/prometheus/client_golang v0.9.1/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw=
303
  github.com/prometheus/client_golang v0.9.3-0.20190127221311-3c4408c8b829/go.mod h1:p2iRAGwDERtqlqzRXnrOVns+ignqQo//hLXqYxZYVNs=
@@ -316,6 +302,8 @@ github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsT
316
  github.com/prometheus/procfs v0.0.8/go.mod h1:7Qr8sr6344vo1JqZ6HhLceV9o3AJ1Ff+GxbHq6oeK9A=
317
  github.com/prometheus/procfs v0.0.11/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4OA4YeYWdaU=
318
  github.com/rcrowley/go-metrics v0.0.0-20181016184325-3113b8401b8a/go.mod h1:bCqnVzQkZxMG4s8nGwiZ5l3QUCyqpo9Y+/ZMZ9VjZe4=
 
 
319
  github.com/remyoudompheng/bigfft v0.0.0-20200410134404-eec4a21b6bb0/go.mod h1:qqbHyh8v60DhA7CoWK5oRCqLrMHRGoxYCSS9EjAz6Eo=
320
  github.com/remyoudompheng/bigfft v0.0.0-20230129092748-24d4a6f8daec h1:W09IVJc94icq4NjY3clb7Lk8O1qJ8BdBEF8z0ibU0rE=
321
  github.com/remyoudompheng/bigfft v0.0.0-20230129092748-24d4a6f8daec/go.mod h1:qqbHyh8v60DhA7CoWK5oRCqLrMHRGoxYCSS9EjAz6Eo=
@@ -323,11 +311,8 @@ github.com/rivo/uniseg v0.2.0 h1:S1pD9weZBuJdFmowNwbpi7BJ8TNftyUImj/0WQi72jY=
323
  github.com/rivo/uniseg v0.2.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc=
324
  github.com/rogpeppe/go-internal v1.6.1/go.mod h1:xXDCJY+GAPziupqXw64V24skbSoqbTEfhy4qGm1nDQc=
325
  github.com/rogpeppe/go-internal v1.8.0/go.mod h1:WmiCO8CzOY8rg0OYDC4/i/2WRWAB6poM+XZ2dLUbcbE=
326
- github.com/rogpeppe/go-internal v1.9.0 h1:73kH8U+JUqXU8lRuOHeVHaa/SZPifC7BkcraZVejAe8=
327
- github.com/rogpeppe/go-internal v1.9.0/go.mod h1:WtVeX8xhTBvf0smdhujwtBcq4Qrzq/fJaraNFVN+nFs=
328
  github.com/rs/dnscache v0.0.0-20211102005908-e0241e321417 h1:Lt9DzQALzHoDwMBGJ6v8ObDPR0dzr2a6sXTB1Fq7IHs=
329
  github.com/rs/dnscache v0.0.0-20211102005908-e0241e321417/go.mod h1:qe5TWALJ8/a1Lqznoc5BDHpYX/8HU60Hm2AwRmqzxqA=
330
- github.com/ryszard/goskiplist v0.0.0-20150312221310-2dfbae5fcf46 h1:GHRpF1pTW19a8tTFrMLUcfWwyC0pnifVo2ClaLq+hP8=
331
  github.com/ryszard/goskiplist v0.0.0-20150312221310-2dfbae5fcf46/go.mod h1:uAQ5PCi+MFsC7HjREoAz1BU+Mq60+05gifQSsHSDG/8=
332
  github.com/sclevine/agouti v3.0.0+incompatible/go.mod h1:b4WX9W9L1sfQKXeJf1mUTLZKJ48R1S7H23Ji7oFO5Bw=
333
  github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo=
@@ -336,7 +321,6 @@ github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d/go.mod h1
336
  github.com/smartystreets/assertions v0.0.0-20190215210624-980c5ac6f3ac/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc=
337
  github.com/smartystreets/goconvey v0.0.0-20181108003508-044398e4856c/go.mod h1:XDJAKZRPZ1CvBcN2aX5YOUTYGHki24fSF0Iv48Ibg0s=
338
  github.com/smartystreets/goconvey v0.0.0-20190306220146-200a235640ff/go.mod h1:KSQcGKpxUMHk3nbYzs/tIBAM2iDooCn0BmttHOJEbLs=
339
- github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72 h1:qLC7fQah7D6K1B0ujays3HV9gkFtllcxhzImRR7ArPQ=
340
  github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA=
341
  github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
342
  github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
@@ -351,7 +335,6 @@ github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/
351
  github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
352
  github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
353
  github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU=
354
- github.com/stretchr/testify v1.8.1 h1:w7B6lhMri9wdJUVmEZPGGhZzrYTPvgJArz7wNPgYKsk=
355
  github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4=
356
  github.com/tidwall/btree v1.6.0 h1:LDZfKfQIBHGHWSwckhXI0RPSXzlo+KYdjK7FWSqOzzg=
357
  github.com/tidwall/btree v1.6.0/go.mod h1:twD9XRA5jj9VUQGELzDO4HPQTNJsoWWfYEL+EUQ2cKY=
@@ -388,8 +371,8 @@ golang.org/x/crypto v0.0.0-20220131195533-30dcbda58838/go.mod h1:IxCIyHEi3zRg3s0
388
  golang.org/x/crypto v0.0.0-20220427172511-eb4f295cb31f/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4=
389
  golang.org/x/crypto v0.0.0-20220516162934-403b01795ae8/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4=
390
  golang.org/x/crypto v0.5.0/go.mod h1:NK/OQwhpMQP3MwtdjgLlYHnH9ebylxKWv3e0fK+mkQU=
391
- golang.org/x/crypto v0.21.0 h1:X31++rzVUdKhX5sWmSOFZxx8UW/ldWx55cbf08iNAMA=
392
- golang.org/x/crypto v0.21.0/go.mod h1:0BP7YvVV9gBbVKyeTG0Gyn+gZm94bibOW5BjDEYAOMs=
393
  golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
394
  golang.org/x/exp v0.0.0-20230626212559-97b1e661b5df h1:UA2aFVmmsIlefxMk29Dp2juaUSth8Pyn3Tq5Y5mJGME=
395
  golang.org/x/exp v0.0.0-20230626212559-97b1e661b5df/go.mod h1:FXUEEKJgO7OQYeo8N01OfiKP8RXMtf6e8aTskBGqWdc=
@@ -426,8 +409,8 @@ golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug
426
  golang.org/x/net v0.1.0/go.mod h1:Cx3nUiGt4eDBEyega/BKRp+/AlGL8hYe7U9odMt2Cco=
427
  golang.org/x/net v0.5.0/go.mod h1:DivGGAXEgPSlEBzxGzZI+ZLohi+xUj054jfeKui00ws=
428
  golang.org/x/net v0.7.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs=
429
- golang.org/x/net v0.23.0 h1:7EYJ93RZ9vYSZAIb2x3lnuvqO5zneoD6IvWjuhfxjTs=
430
- golang.org/x/net v0.23.0/go.mod h1:JKghWKKOSdJwpW2GEx0Ja7fmaKnMsbu+MWVZTokSYmg=
431
  golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
432
  golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
433
  golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
@@ -472,8 +455,8 @@ golang.org/x/sys v0.2.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
472
  golang.org/x/sys v0.4.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
473
  golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
474
  golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
475
- golang.org/x/sys v0.18.0 h1:DBdB3niSjOA/O0blCZBqDefyWNYveAYMNF1Wum0DYQ4=
476
- golang.org/x/sys v0.18.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
477
  golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
478
  golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
479
  golang.org/x/term v0.1.0/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
@@ -487,6 +470,8 @@ golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ=
487
  golang.org/x/text v0.4.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8=
488
  golang.org/x/text v0.6.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8=
489
  golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8=
 
 
490
  golang.org/x/time v0.0.0-20220609170525-579cf78fd858 h1:Dpdu/EMxGMFgq0CeYMh4fazTD2vtlZRYE7wyynxJb9U=
491
  golang.org/x/time v0.0.0-20220609170525-579cf78fd858/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
492
  golang.org/x/tools v0.0.0-20180828015842-6cd1fcedba52/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
@@ -533,7 +518,6 @@ gopkg.in/yaml.v2 v2.2.5/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
533
  gopkg.in/yaml.v2 v2.3.0/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
534
  gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ=
535
  gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
536
- gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
537
  gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
538
  honnef.co/go/tools v0.0.0-20180728063816-88497007e858/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
539
  honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
 
2
  cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw=
3
  crawshaw.io/iox v0.0.0-20181124134642-c51c3df30797/go.mod h1:sXBiorCo8c46JlQV3oXPKINnZ8mcqnye1EkVkqsectk=
4
  crawshaw.io/sqlite v0.3.2/go.mod h1:igAO5JulrQ1DbdZdtVq48mnZUBAPOeFzer7VhDWNtW4=
 
 
5
  github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU=
 
6
  github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU=
7
  github.com/RoaringBitmap/roaring v0.4.7/go.mod h1:8khRDP4HmeXns4xIj9oGrKSz7XTQiJx2zgh7AcNke4w=
8
  github.com/RoaringBitmap/roaring v0.4.17/go.mod h1:D3qVegWTmfCaX4Bl5CrBE9hfrSrrXIr8KVNvRsDi1NI=
 
13
  github.com/Shopify/toxiproxy v2.1.4+incompatible/go.mod h1:OXgGpZ6Cli1/URJOF1DMxUHB2q5Ap20/P/eIdh4G0pI=
14
  github.com/ajwerner/btree v0.0.0-20211221152037-f427b3e689c0 h1:byYvvbfSo3+9efR4IeReh77gVs4PnNDR3AMOE9NJ7a0=
15
  github.com/ajwerner/btree v0.0.0-20211221152037-f427b3e689c0/go.mod h1:q37NoqncT41qKc048STsifIt69LfUJ8SrWWcz/yam5k=
 
 
16
  github.com/alecthomas/atomic v0.1.0-alpha2 h1:dqwXmax66gXvHhsOS4pGPZKqYOlTkapELkLb3MNdlH8=
17
  github.com/alecthomas/atomic v0.1.0-alpha2/go.mod h1:zD6QGEyw49HIq19caJDc2NMXAy8rNi9ROrxtMXATfyI=
 
 
18
  github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc=
19
  github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc=
20
  github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0=
 
38
  github.com/anacrolix/log v0.13.1/go.mod h1:D4+CvN8SnruK6zIFS/xPoRJmtvtnxs+CSfDQ+BFxZ68=
39
  github.com/anacrolix/log v0.14.6-0.20231202035202-ed7a02cad0b4 h1:CdVK9IoqoqklXQQ4+L2aew64xsz14KdOD+rnKdTQajg=
40
  github.com/anacrolix/log v0.14.6-0.20231202035202-ed7a02cad0b4/go.mod h1:1OmJESOtxQGNMlUO5rcv96Vpp9mfMqXXbe2RdinFLdY=
 
41
  github.com/anacrolix/lsan v0.0.0-20211126052245-807000409a62/go.mod h1:66cFKPCO7Sl4vbFnAaSq7e4OXtdMhRSBagJGWgmpJbM=
42
  github.com/anacrolix/missinggo v0.0.0-20180725070939-60ef2fbf63df/go.mod h1:kwGiTUTZ0+p4vAz3VbAI5a30t2YbvemcmspjKwrAz5s=
43
  github.com/anacrolix/missinggo v1.1.0/go.mod h1:MBJu3Sk/k3ZfGYcS7z18gwfu72Ey/xopPFJJbTi5yIo=
 
94
  github.com/cespare/xxhash v1.1.0 h1:a6HrQnmkObjyL+Gs60czilIUGqrzKutQD6XZog3p+ko=
95
  github.com/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghfAqPWnc=
96
  github.com/cespare/xxhash/v2 v2.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs=
97
+ github.com/cespare/xxhash/v2 v2.2.0 h1:DC2CZ1Ep5Y4k3ZQ899DldepgrayRUGE6BBZ/cd9Cj44=
98
+ github.com/cespare/xxhash/v2 v2.2.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs=
99
  github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw=
100
  github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E=
101
  github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
102
  github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
103
  github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
104
+ github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f h1:lO4WD4F/rVNCu3HqELle0jiPLLBs70cWOduZpkS1E78=
105
+ github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f/go.mod h1:cuUVRXasLTGF7a8hSLbxyZXjz+1KgoB3wDUb6vlszIc=
106
  github.com/docopt/docopt-go v0.0.0-20180111231733-ee0de3bc6815/go.mod h1:WwZ+bS3ebgob9U8Nd0kOddGdZWjyMGR8Wziv+TBNwSE=
107
  github.com/dustin/go-humanize v0.0.0-20180421182945-02af3965c54e/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk=
108
  github.com/dustin/go-humanize v1.0.0 h1:VSnTsYCnlFHaM2/igO1h6X3HA71jcobQuxemgkq4zYo=
 
113
  github.com/edsrzf/mmap-go v1.1.0 h1:6EUwBLQ/Mcr1EYLE4Tn1VdW1A4ckqCQWZBw8Hr0kjpQ=
114
  github.com/edsrzf/mmap-go v1.1.0/go.mod h1:19H/e8pUPLicwkyNgOykDXkJ9F0MHE+Z52B8EIth78Q=
115
  github.com/frankban/quicktest v1.9.0/go.mod h1:ui7WezCLWMWxVWr1GETZY3smRy0G4KWq9vcPtJmFl7Y=
 
 
116
  github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo=
117
  github.com/fsnotify/fsnotify v1.4.9/go.mod h1:znqG4EE+3YCdAaPaxE2ZRY/06pZUdp0tY4IgpuI1SZQ=
118
  github.com/glycerine/go-unsnap-stream v0.0.0-20180323001048-9f0cb55181dd/go.mod h1:/20jfyN9Y5QPEAprSgKAUr+glWDY39ZiUEAYOEv5dsE=
 
136
  github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE=
137
  github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY=
138
  github.com/go-task/slim-sprig v0.0.0-20210107165309-348f09dbbbc0/go.mod h1:fyg7847qk6SyHyPtNmDHnmrv/HOrqktSC+C9fM+CJOE=
139
+ github.com/gofiber/fiber/v2 v2.52.4 h1:P+T+4iK7VaqUsq2PALYEfBBo6bJZ4q3FP8cZ84EggTM=
140
+ github.com/gofiber/fiber/v2 v2.52.4/go.mod h1:KEOE+cXMhXG0zHc9d8+E38hoX+ZN7bhOtgeF2oT6jrQ=
141
  github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ=
142
  github.com/gogo/protobuf v1.2.0/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ=
143
  github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q=
 
166
  github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU=
167
  github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
168
  github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
 
 
169
  github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg=
170
  github.com/google/uuid v1.3.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
171
  github.com/google/uuid v1.5.0 h1:1p67kYwdtXjb0gL0BPiP1Av9wiZPo5A8z2cWkTZ+eyU=
 
179
  github.com/gorilla/websocket v1.5.0 h1:PPwGk2jz7EePpoHN/+ClbZu8SPxiqlu12wZP/3sWmnc=
180
  github.com/gorilla/websocket v1.5.0/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE=
181
  github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8=
 
 
182
  github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU=
183
  github.com/huandu/xstrings v1.0.0/go.mod h1:4qWG/gcEcfX4z/mBDHJ++3ReCw9ibxbsNJbcucJdbSo=
184
  github.com/huandu/xstrings v1.2.0/go.mod h1:DvyZB1rfVYsBIigL8HwpZgxHwXozlTgGqn63UyNX5k4=
 
203
  github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo=
204
  github.com/kr/pretty v0.2.0/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI=
205
  github.com/kr/pretty v0.3.0/go.mod h1:640gp4NfQd8pI5XOwp5fnNeVWj67G7CFk/SaSQn7NBk=
 
 
206
  github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ=
207
  github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI=
 
208
  github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE=
209
  github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA=
210
  github.com/mattn/go-colorable v0.1.13/go.mod h1:7S9/ev0klgBDR4GtXTXX8a3vIGJpMovkB8vQcUbaXHg=
 
284
  github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
285
  github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4=
286
  github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
 
287
  github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
288
  github.com/prometheus/client_golang v0.9.1/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw=
289
  github.com/prometheus/client_golang v0.9.3-0.20190127221311-3c4408c8b829/go.mod h1:p2iRAGwDERtqlqzRXnrOVns+ignqQo//hLXqYxZYVNs=
 
302
  github.com/prometheus/procfs v0.0.8/go.mod h1:7Qr8sr6344vo1JqZ6HhLceV9o3AJ1Ff+GxbHq6oeK9A=
303
  github.com/prometheus/procfs v0.0.11/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4OA4YeYWdaU=
304
  github.com/rcrowley/go-metrics v0.0.0-20181016184325-3113b8401b8a/go.mod h1:bCqnVzQkZxMG4s8nGwiZ5l3QUCyqpo9Y+/ZMZ9VjZe4=
305
+ github.com/redis/go-redis/v9 v9.5.1 h1:H1X4D3yHPaYrkL5X06Wh6xNVM/pX0Ft4RV0vMGvLBh8=
306
+ github.com/redis/go-redis/v9 v9.5.1/go.mod h1:hdY0cQFCN4fnSYT6TkisLufl/4W5UIXyv0b/CLO2V2M=
307
  github.com/remyoudompheng/bigfft v0.0.0-20200410134404-eec4a21b6bb0/go.mod h1:qqbHyh8v60DhA7CoWK5oRCqLrMHRGoxYCSS9EjAz6Eo=
308
  github.com/remyoudompheng/bigfft v0.0.0-20230129092748-24d4a6f8daec h1:W09IVJc94icq4NjY3clb7Lk8O1qJ8BdBEF8z0ibU0rE=
309
  github.com/remyoudompheng/bigfft v0.0.0-20230129092748-24d4a6f8daec/go.mod h1:qqbHyh8v60DhA7CoWK5oRCqLrMHRGoxYCSS9EjAz6Eo=
 
311
  github.com/rivo/uniseg v0.2.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc=
312
  github.com/rogpeppe/go-internal v1.6.1/go.mod h1:xXDCJY+GAPziupqXw64V24skbSoqbTEfhy4qGm1nDQc=
313
  github.com/rogpeppe/go-internal v1.8.0/go.mod h1:WmiCO8CzOY8rg0OYDC4/i/2WRWAB6poM+XZ2dLUbcbE=
 
 
314
  github.com/rs/dnscache v0.0.0-20211102005908-e0241e321417 h1:Lt9DzQALzHoDwMBGJ6v8ObDPR0dzr2a6sXTB1Fq7IHs=
315
  github.com/rs/dnscache v0.0.0-20211102005908-e0241e321417/go.mod h1:qe5TWALJ8/a1Lqznoc5BDHpYX/8HU60Hm2AwRmqzxqA=
 
316
  github.com/ryszard/goskiplist v0.0.0-20150312221310-2dfbae5fcf46/go.mod h1:uAQ5PCi+MFsC7HjREoAz1BU+Mq60+05gifQSsHSDG/8=
317
  github.com/sclevine/agouti v3.0.0+incompatible/go.mod h1:b4WX9W9L1sfQKXeJf1mUTLZKJ48R1S7H23Ji7oFO5Bw=
318
  github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo=
 
321
  github.com/smartystreets/assertions v0.0.0-20190215210624-980c5ac6f3ac/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc=
322
  github.com/smartystreets/goconvey v0.0.0-20181108003508-044398e4856c/go.mod h1:XDJAKZRPZ1CvBcN2aX5YOUTYGHki24fSF0Iv48Ibg0s=
323
  github.com/smartystreets/goconvey v0.0.0-20190306220146-200a235640ff/go.mod h1:KSQcGKpxUMHk3nbYzs/tIBAM2iDooCn0BmttHOJEbLs=
 
324
  github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA=
325
  github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
326
  github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
 
335
  github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
336
  github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
337
  github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU=
 
338
  github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4=
339
  github.com/tidwall/btree v1.6.0 h1:LDZfKfQIBHGHWSwckhXI0RPSXzlo+KYdjK7FWSqOzzg=
340
  github.com/tidwall/btree v1.6.0/go.mod h1:twD9XRA5jj9VUQGELzDO4HPQTNJsoWWfYEL+EUQ2cKY=
 
371
  golang.org/x/crypto v0.0.0-20220427172511-eb4f295cb31f/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4=
372
  golang.org/x/crypto v0.0.0-20220516162934-403b01795ae8/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4=
373
  golang.org/x/crypto v0.5.0/go.mod h1:NK/OQwhpMQP3MwtdjgLlYHnH9ebylxKWv3e0fK+mkQU=
374
+ golang.org/x/crypto v0.17.0 h1:r8bRNjWL3GshPW3gkd+RpvzWrZAwPS49OmTGZ/uhM4k=
375
+ golang.org/x/crypto v0.17.0/go.mod h1:gCAAfMLgwOJRpTjQ2zCCt2OcSfYMTeZVSRtQlPC7Nq4=
376
  golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
377
  golang.org/x/exp v0.0.0-20230626212559-97b1e661b5df h1:UA2aFVmmsIlefxMk29Dp2juaUSth8Pyn3Tq5Y5mJGME=
378
  golang.org/x/exp v0.0.0-20230626212559-97b1e661b5df/go.mod h1:FXUEEKJgO7OQYeo8N01OfiKP8RXMtf6e8aTskBGqWdc=
 
409
  golang.org/x/net v0.1.0/go.mod h1:Cx3nUiGt4eDBEyega/BKRp+/AlGL8hYe7U9odMt2Cco=
410
  golang.org/x/net v0.5.0/go.mod h1:DivGGAXEgPSlEBzxGzZI+ZLohi+xUj054jfeKui00ws=
411
  golang.org/x/net v0.7.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs=
412
+ golang.org/x/net v0.17.0 h1:pVaXccu2ozPjCXewfr1S7xza/zcXTity9cCdXQYSjIM=
413
+ golang.org/x/net v0.17.0/go.mod h1:NxSsAGuq816PNPmqtQdLE42eU2Fs7NoRIZrHJAlaCOE=
414
  golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
415
  golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
416
  golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
 
455
  golang.org/x/sys v0.4.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
456
  golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
457
  golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
458
+ golang.org/x/sys v0.15.0 h1:h48lPFYpsTvQJZF4EKyI4aLHaev3CxivZmv7yZig9pc=
459
+ golang.org/x/sys v0.15.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
460
  golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
461
  golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
462
  golang.org/x/term v0.1.0/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
 
470
  golang.org/x/text v0.4.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8=
471
  golang.org/x/text v0.6.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8=
472
  golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8=
473
+ golang.org/x/text v0.15.0 h1:h1V/4gjBv8v9cjcR6+AR5+/cIYK5N/WAgiv4xlsEtAk=
474
+ golang.org/x/text v0.15.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU=
475
  golang.org/x/time v0.0.0-20220609170525-579cf78fd858 h1:Dpdu/EMxGMFgq0CeYMh4fazTD2vtlZRYE7wyynxJb9U=
476
  golang.org/x/time v0.0.0-20220609170525-579cf78fd858/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
477
  golang.org/x/tools v0.0.0-20180828015842-6cd1fcedba52/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
 
518
  gopkg.in/yaml.v2 v2.3.0/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
519
  gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ=
520
  gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
 
521
  gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
522
  honnef.co/go/tools v0.0.0-20180728063816-88497007e858/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
523
  honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
helpers.go CHANGED
@@ -7,8 +7,12 @@ import (
7
  "os"
8
  "slices"
9
  "strings"
 
10
 
11
  "github.com/daniwalter001/jackett_fiber/types"
 
 
 
12
  )
13
 
14
  func PrettyPrint(i interface{}) string {
@@ -128,18 +132,6 @@ func getQuality(name string) string {
128
  return ""
129
  }
130
 
131
- // function getSize(size) {
132
- // var gb = 1024 * 1024 * 1024;
133
- // var mb = 1024 * 1024;
134
-
135
- // return (
136
- // "💾 " +
137
- // (size / gb > 1
138
- // ? `${(size / gb).toFixed(2)} GB`
139
- // : `${(size / mb).toFixed(2)} MB`)
140
- // );
141
- // }
142
-
143
  func getSize(size int) string {
144
  gb := 1024 * 1024 * 1024
145
  mb := 1024 * 1024
@@ -147,15 +139,14 @@ func getSize(size int) string {
147
 
148
  size_ := "💾 "
149
 
150
- if size/gb > 1 {
151
- size_ = size_ + fmt.Sprintf("%.2f GB", float32(size/gb))
152
- } else if size/mb > 1 {
153
- size_ = size_ + fmt.Sprintf("%.2f MB", float32(size/mb))
154
  } else {
155
- size_ = size_ + fmt.Sprintf("%.2f KB", float32(size/kb))
156
  }
157
  return size_
158
-
159
  }
160
 
161
  func removeDuplicates(strList []types.ItemsParsed) []types.ItemsParsed {
@@ -195,10 +186,13 @@ func getServers() []types.Server {
195
  var servers []types.Server
196
 
197
  for _, line := range serversArr {
198
- servers = append(servers, types.Server{
199
- Host: strings.Split(line, "|")[0],
200
- ApiKey: strings.Split(line, "|")[1],
201
- })
 
 
 
202
  }
203
 
204
  return servers
@@ -215,3 +209,12 @@ func createIfNotExist(path string) bool {
215
  fmt.Printf("%s already exists\n", path)
216
  return true
217
  }
 
 
 
 
 
 
 
 
 
 
7
  "os"
8
  "slices"
9
  "strings"
10
+ "unicode"
11
 
12
  "github.com/daniwalter001/jackett_fiber/types"
13
+ "golang.org/x/text/runes"
14
+ "golang.org/x/text/transform"
15
+ "golang.org/x/text/unicode/norm"
16
  )
17
 
18
  func PrettyPrint(i interface{}) string {
 
132
  return ""
133
  }
134
 
 
 
 
 
 
 
 
 
 
 
 
 
135
  func getSize(size int) string {
136
  gb := 1024 * 1024 * 1024
137
  mb := 1024 * 1024
 
139
 
140
  size_ := "💾 "
141
 
142
+ if size/gb >= 1 {
143
+ size_ = size_ + fmt.Sprintf("%.2f GB", float64(size)/float64(gb))
144
+ } else if size/mb >= 1 {
145
+ size_ = size_ + fmt.Sprintf("%.2f MB", float64(size)/float64(mb))
146
  } else {
147
+ size_ = size_ + fmt.Sprintf("%.2f KB", float64(size)/float64(kb))
148
  }
149
  return size_
 
150
  }
151
 
152
  func removeDuplicates(strList []types.ItemsParsed) []types.ItemsParsed {
 
186
  var servers []types.Server
187
 
188
  for _, line := range serversArr {
189
+ //fmt.Println(line)
190
+ if len(line)!=0 {
191
+ servers = append(servers, types.Server{
192
+ Host: strings.Split(line, "|")[0],
193
+ ApiKey: strings.Split(line, "|")[1],
194
+ })
195
+ }
196
  }
197
 
198
  return servers
 
209
  fmt.Printf("%s already exists\n", path)
210
  return true
211
  }
212
+
213
+ func removeAccents(s string) string {
214
+ t := transform.Chain(norm.NFD, runes.Remove(runes.In(unicode.Mn)), norm.NFC)
215
+ output, _, e := transform.String(t, s)
216
+ if e != nil {
217
+ panic(e)
218
+ }
219
+ return output
220
+ }
main.go CHANGED
@@ -1,18 +1,17 @@
1
  package main
2
 
3
  import (
 
4
  "encoding/json"
5
  "fmt"
6
- "log"
7
  "os"
8
- "slices"
9
  "sort"
10
  "strconv"
11
  "strings"
12
  "sync"
 
13
 
14
  "github.com/daniwalter001/jackett_fiber/types"
15
- "github.com/daniwalter001/jackett_fiber/types/rd"
16
  "github.com/gofiber/fiber/v2"
17
  "github.com/joho/godotenv"
18
  )
@@ -20,38 +19,27 @@ import (
20
  func main() {
21
  enc := json.NewEncoder(os.Stdout)
22
  enc.SetEscapeHTML(false)
 
23
 
24
  errDot := godotenv.Load("./.env")
25
  if errDot != nil {
26
- log.Fatalln("Error loading .env file")
27
  }
28
 
29
  fmt.Printf("Creating... %t\n", createIfNotExist("./temp"))
30
  fmt.Printf("Creating... %t\n", createIfNotExist("./persistence"))
31
 
32
- // ex, err := os.Executable()
33
- // if err != nil {
34
- // panic(err)
35
- // }
36
- // exPath := filepath.Dir(ex)
37
- // fmt.Printf("Current: %s\n", exPath)
38
-
39
- //read and parse cache file content
40
- mapCache := make(map[string]types.StreamMeta)
41
-
42
- cacheFile, _ := os.ReadFile("persistence/cache.json")
43
- if len(cacheFile) > 0 {
44
- json.Unmarshal(cacheFile, &mapCache)
45
  }
46
 
47
- // fmt.Println(PrettyPrint(mapCache))
48
-
49
- // listd, _ := os.ReadDir(".")
50
-
51
- // for _, v := range listd {
52
- // fmt.Println(v.Name())
53
- // }
54
-
55
  app := fiber.New()
56
 
57
  app.Get("/", func(c *fiber.Ctx) error {
@@ -59,7 +47,7 @@ func main() {
59
  })
60
 
61
  app.Get("/manifest.json", func(c *fiber.Ctx) error {
62
- a := types.StreamManifest{ID: "strem.go.nyaa", Description: "Random Golang version on stremio Addon", Name: "GoDon Nyaa", Resources: []string{"stream"}, Version: "1.0.1", Types: []string{"movie", "series", "anime"}, Logo: "https://upload.wikimedia.org/wikipedia/commons/2/23/Golang.png", IdPrefixes: []string{"tt", "kitsu"}, Catalogs: []string{}}
63
 
64
  u, err := json.Marshal(a)
65
  if err != nil {
@@ -89,10 +77,18 @@ func main() {
89
  id = strings.ReplaceAll(id, "%3A", ":")
90
 
91
  //Reading the cache
92
- streams, exists := mapCache[id]
93
- if exists {
94
  fmt.Printf("Sending that %s shit from cache\n", id)
95
- return c.Status(fiber.StatusOK).JSON(streams)
 
 
 
 
 
 
 
 
96
  }
97
 
98
  type_ := c.Params("type")
@@ -118,15 +114,6 @@ func main() {
118
  }
119
  }
120
 
121
- // fmt.Println("----------------------------")
122
- // fmt.Println(tt)
123
- // fmt.Println(strconv.Itoa(s))
124
- // fmt.Println(strconv.Itoa(e))
125
- // fmt.Println(abs)
126
- // fmt.Println(strconv.Itoa(abs_season))
127
- // fmt.Println(strconv.Itoa(abs_episode))
128
- // fmt.Println("----------------------------")
129
-
130
  name, year := getMeta(tt, type_)
131
 
132
  var results []types.ItemsParsed
@@ -141,7 +128,7 @@ func main() {
141
  l = l + 2
142
  }
143
  } else if type_ == "movie" {
144
- l = 1
145
  }
146
  fmt.Printf("Requests: %d\n", l)
147
 
@@ -150,6 +137,11 @@ func main() {
150
  //=========================================================
151
 
152
  if type_ == "movie" {
 
 
 
 
 
153
  go func() {
154
  defer wg.Done()
155
  results = append(results, fetchTorrent(fmt.Sprintf("%s %s", name, year), type_)...)
@@ -158,19 +150,20 @@ func main() {
158
 
159
  go func() {
160
  defer wg.Done()
161
- results = append(results, fetchTorrent(fmt.Sprintf("%s S%02d", name, s), type_)...)
162
  }()
163
  go func() {
164
  defer wg.Done()
165
- results = append(results, fetchTorrent(fmt.Sprintf("%s integrale", name), type_)...)
166
  }()
167
  go func() {
168
  defer wg.Done()
169
- results = append(results, fetchTorrent(fmt.Sprintf("%s batch", name), type_)...)
170
  }()
 
171
  go func() {
172
  defer wg.Done()
173
- results = append(results, fetchTorrent(fmt.Sprintf("%s complet", name), type_)...)
174
  }()
175
 
176
  go func() {
@@ -181,23 +174,23 @@ func main() {
181
  if s == 1 {
182
  go func() {
183
  defer wg.Done()
184
- results = append(results, fetchTorrent(fmt.Sprintf("%s E%02d", name, e), type_)...)
185
  }()
186
  go func() {
187
  defer wg.Done()
188
- results = append(results, fetchTorrent(fmt.Sprintf("%s %02d", name, e), type_)...)
189
  }()
190
  }
191
 
192
  if abs == "true" {
193
  go func() {
194
  defer wg.Done()
195
- results = append(results, fetchTorrent(fmt.Sprintf("%s E%03d", name, abs_episode), type_)...)
196
  }()
197
 
198
  go func() {
199
  defer wg.Done()
200
- results = append(results, fetchTorrent(fmt.Sprintf("%s %03d", name, abs_episode), type_)...)
201
  }()
202
  }
203
  }
@@ -300,8 +293,6 @@ func main() {
300
  wg = sync.WaitGroup{}
301
  wg.Add(len(parsedTorrentFiles))
302
 
303
- nbreAdded := 0
304
-
305
  for _, el := range parsedTorrentFiles {
306
  go func(item types.ItemsParsed) {
307
  defer wg.Done()
@@ -311,88 +302,12 @@ func main() {
311
  continue
312
  }
313
 
314
- // ========================== RD =============================
315
- fmt.Printf("Trynna some RD...\n")
316
-
317
- infoHash := ell.InfoHash
318
- // infoHash := ell.Torrent().InfoHash().String()
319
- // magnet := fmt.Sprint(ell.Torrent().Metainfo().Magnet(nil, ell.Torrent().Info()))
320
- var folderId string
321
- var details []rd.UnrestrictLinkResponse
322
- var data rd.AddTorrentResponse
323
-
324
- available, err := checkTorrentFileinRD(infoHash)
325
-
326
- if err.Error != "" {
327
- continue
328
- }
329
-
330
- v, availableCheck := available[infoHash]
331
-
332
- if !availableCheck {
333
- continue
334
- }
335
-
336
- v_ := v["rd"]
337
- availableCheck = len(v_) > 0
338
-
339
- if availableCheck || nbreAdded < 3 {
340
- data, err = addTorrentFileinRD2(fmt.Sprintf("magnet:?xt=urn:btih:%s", infoHash))
341
- if availableCheck {
342
- fmt.Println("Cached")
343
- } else {
344
- fmt.Println("Added")
345
- nbreAdded = nbreAdded + 1
346
- }
347
- }
348
-
349
- folderId = data.ID
350
- selected, err := selectFilefromRD(folderId, "all")
351
- if folderId != "" && selected {
352
- torrentDetails, err_ := getTorrentInfofromRD(folderId)
353
- //fmt.Println((PrettyPrint(torrentDetails)))
354
- if err.Error != "" {
355
- fmt.Println("Error")
356
- fmt.Println(err_.Error)
357
- }
358
- var files []rd.Files
359
- if len(torrentDetails.Files) > 0 {
360
- files = filter[rd.Files](torrentDetails.Files, func(f rd.Files) bool {
361
- return f.Selected == 1
362
- })
363
- links := torrentDetails.Links
364
- selectedIndex := 0
365
-
366
- if len(files) > 1 {
367
- selectedIndex = slices.IndexFunc[[]rd.Files](files, func(t rd.Files) bool {
368
- return strings.Contains(strings.ToLower(t.Path), strings.ToLower(ell.Name))
369
- })
370
- }
371
- if selectedIndex == -1 || len(links) <= selectedIndex {
372
- selectedIndex = 0
373
- }
374
- if len(links) > 0 {
375
- unrestrictLink, errun := unrestrictLinkfromRD(links[selectedIndex])
376
- details = append(details, unrestrictLink)
377
- // fmt.Println(PrettyPrint(errun.Error))
378
- // fmt.Println(PrettyPrint(details[len(details)-1]))
379
- if errun.Error != "" {
380
- continue
381
- }
382
- }
383
- }
384
-
385
- }
386
-
387
- if len(details) > 0 {
388
- ttttt.Streams = append(ttttt.Streams, types.TorrentStreams{Title: fmt.Sprintf("%s\n%s\n%s | %s", ell.TorrentName, ell.Name, getQuality(ell.Name), getSize(ell.Length)), Name: fmt.Sprintf("RD.%s\n S:%s, P:%s", item.Tracker, item.Seeders, item.Peers), Type: type_, BehaviorHints: types.BehaviorHints{BingeGroup: fmt.Sprintf("Jackett|%s", ell.InfoHash), NotWebReady: true}, URL: details[0].Download})
389
-
390
- // ========================== END RD =============================
391
- } else if os.Getenv("PUBLIC") == "1" {
392
-
393
- announceList := append(ell.AnnounceList, fmt.Sprintf("dht:%s", ell.InfoHash))
394
- ttttt.Streams = append(ttttt.Streams, types.TorrentStreams{Title: fmt.Sprintf("%s\n%s\n%s | %s", ell.TorrentName, ell.Name, getQuality(ell.Name), getSize(int(ell.Length))), Name: fmt.Sprintf("%s\n S:%s, P:%s", item.Tracker, item.Seeders, item.Peers), Type: type_, InfoHash: ell.InfoHash, Sources: announceList, BehaviorHints: types.BehaviorHints{BingeGroup: fmt.Sprintf("Jackett|%s", ell.InfoHash), NotWebReady: true}, FileIdx: parsedSuitableTorrentFilesIndex[ell.Name] - 1})
395
- }
396
 
397
  }
398
  }(el)
@@ -401,9 +316,13 @@ func main() {
401
  wg.Wait()
402
 
403
  if len(ttttt.Streams) > 0 {
404
- mapCache[id] = ttttt
405
- toFile, _ := json.MarshalIndent(mapCache, "", " ")
406
- os.WriteFile("./persistence/cache.json", toFile, 0666)
 
 
 
 
407
  }
408
 
409
  fmt.Println("Sending that shit")
 
1
  package main
2
 
3
  import (
4
+ "context"
5
  "encoding/json"
6
  "fmt"
 
7
  "os"
 
8
  "sort"
9
  "strconv"
10
  "strings"
11
  "sync"
12
+ "time"
13
 
14
  "github.com/daniwalter001/jackett_fiber/types"
 
15
  "github.com/gofiber/fiber/v2"
16
  "github.com/joho/godotenv"
17
  )
 
19
  func main() {
20
  enc := json.NewEncoder(os.Stdout)
21
  enc.SetEscapeHTML(false)
22
+ ctx := context.Background()
23
 
24
  errDot := godotenv.Load("./.env")
25
  if errDot != nil {
26
+ fmt.Println("Error loading .env file")
27
  }
28
 
29
  fmt.Printf("Creating... %t\n", createIfNotExist("./temp"))
30
  fmt.Printf("Creating... %t\n", createIfNotExist("./persistence"))
31
 
32
+ //create redis client instance
33
+ rdClient := RedisClient()
34
+ status, errS := rdClient.Ping(ctx).Result()
35
+ if errS != nil {
36
+ fmt.Print("Error: ")
37
+ fmt.Println(errS.Error())
38
+ } else {
39
+ fmt.Print("OK redis: ")
40
+ fmt.Println(status)
 
 
 
 
41
  }
42
 
 
 
 
 
 
 
 
 
43
  app := fiber.New()
44
 
45
  app.Get("/", func(c *fiber.Ctx) error {
 
47
  })
48
 
49
  app.Get("/manifest.json", func(c *fiber.Ctx) error {
50
+ a := types.StreamManifest{ID: "strem.go.nyaa", Description: "Random Golang version on stremio Addon", Name: "GoDon Nyaa 2", Resources: []string{"stream"}, Version: "1.0.1", Types: []string{"movie", "series", "anime"}, Logo: "https://upload.wikimedia.org/wikipedia/commons/2/23/Golang.png", IdPrefixes: []string{"tt", "kitsu"}, Catalogs: []string{}}
51
 
52
  u, err := json.Marshal(a)
53
  if err != nil {
 
77
  id = strings.ReplaceAll(id, "%3A", ":")
78
 
79
  //Reading the cache
80
+ streams, err := rdClient.JSONGet(ctx, id, "$").Result()
81
+ if err == nil && streams != "" {
82
  fmt.Printf("Sending that %s shit from cache\n", id)
83
+ var cachedStreams []types.StreamMeta
84
+ errJson := json.Unmarshal([]byte(streams), &cachedStreams)
85
+ if errJson != nil {
86
+ fmt.Println(errJson)
87
+ return c.Status(fiber.StatusNotFound).SendString("lol")
88
+ } else if len(cachedStreams) > 0 {
89
+ fmt.Printf("Sent %s from cache \n", id)
90
+ return c.Status(fiber.StatusOK).JSON(cachedStreams[len(cachedStreams)-1])
91
+ }
92
  }
93
 
94
  type_ := c.Params("type")
 
114
  }
115
  }
116
 
 
 
 
 
 
 
 
 
 
117
  name, year := getMeta(tt, type_)
118
 
119
  var results []types.ItemsParsed
 
128
  l = l + 2
129
  }
130
  } else if type_ == "movie" {
131
+ l = 2
132
  }
133
  fmt.Printf("Requests: %d\n", l)
134
 
 
137
  //=========================================================
138
 
139
  if type_ == "movie" {
140
+ go func() {
141
+ defer wg.Done()
142
+ results = append(results, fetchTorrent(fmt.Sprintf("%s %s", simplifiedName(name), year), type_)...)
143
+ }()
144
+
145
  go func() {
146
  defer wg.Done()
147
  results = append(results, fetchTorrent(fmt.Sprintf("%s %s", name, year), type_)...)
 
150
 
151
  go func() {
152
  defer wg.Done()
153
+ results = append(results, fetchTorrent(fmt.Sprintf("%s S%02d", simplifiedName(name), s), type_)...)
154
  }()
155
  go func() {
156
  defer wg.Done()
157
+ results = append(results, fetchTorrent(fmt.Sprintf("%s batch", simplifiedName(name)), type_)...)
158
  }()
159
  go func() {
160
  defer wg.Done()
161
+ results = append(results, fetchTorrent(fmt.Sprintf("%s complet", simplifiedName(name)), type_)...)
162
  }()
163
+
164
  go func() {
165
  defer wg.Done()
166
+ results = append(results, fetchTorrent(fmt.Sprintf("%s S%02dE%02d", simplifiedName(name), s, e), type_)...)
167
  }()
168
 
169
  go func() {
 
174
  if s == 1 {
175
  go func() {
176
  defer wg.Done()
177
+ results = append(results, fetchTorrent(fmt.Sprintf("%s E%02d", simplifiedName(name), e), type_)...)
178
  }()
179
  go func() {
180
  defer wg.Done()
181
+ results = append(results, fetchTorrent(fmt.Sprintf("%s %02d", simplifiedName(name), e), type_)...)
182
  }()
183
  }
184
 
185
  if abs == "true" {
186
  go func() {
187
  defer wg.Done()
188
+ results = append(results, fetchTorrent(fmt.Sprintf("%s E%03d", simplifiedName(name), abs_episode), type_)...)
189
  }()
190
 
191
  go func() {
192
  defer wg.Done()
193
+ results = append(results, fetchTorrent(fmt.Sprintf("%s %03d", simplifiedName(name), abs_episode), type_)...)
194
  }()
195
  }
196
  }
 
293
  wg = sync.WaitGroup{}
294
  wg.Add(len(parsedTorrentFiles))
295
 
 
 
296
  for _, el := range parsedTorrentFiles {
297
  go func(item types.ItemsParsed) {
298
  defer wg.Done()
 
302
  continue
303
  }
304
 
305
+ // ==========================No RD =============================
306
+ fmt.Printf("Bypassing RD...\n")
307
+
308
+ announceList := append(ell.AnnounceList, fmt.Sprintf("dht:%s", ell.InfoHash))
309
+ ttttt.Streams = append(ttttt.Streams, types.TorrentStreams{Title: fmt.Sprintf("%s\n%s\n%s | %s", ell.TorrentName, ell.Name, getQuality(ell.Name), getSize(int(ell.Length))), Name: fmt.Sprintf("%s\n S:%s, P:%s", item.Tracker, item.Seeders, item.Peers), Type: type_, InfoHash: ell.InfoHash, Sources: announceList, BehaviorHints: types.BehaviorHints{BingeGroup: fmt.Sprintf("Jackett|%s", ell.InfoHash), NotWebReady: true}, FileIdx: parsedSuitableTorrentFilesIndex[ell.Name] - 1})
310
+
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
311
 
312
  }
313
  }(el)
 
316
  wg.Wait()
317
 
318
  if len(ttttt.Streams) > 0 {
319
+ jsonBytes, errttt := json.Marshal(ttttt)
320
+ if errttt == nil {
321
+ _, errrrr := rdClient.JSONSet(ctx, id, "$", jsonBytes).Result()
322
+ if errrrr == nil {
323
+ rdClient.Expire(ctx, id, time.Hour*24*7).Result()
324
+ }
325
+ }
326
  }
327
 
328
  fmt.Println("Sending that shit")
rd.go CHANGED
@@ -13,10 +13,9 @@ import (
13
  "github.com/gofiber/fiber/v2"
14
  )
15
 
16
- var keys = []string{"N4LZTV4IC4MUUJBFQMNFHSR4OCT4EV2SL4OTDPDPBMQYEFQML3GQ",
17
- "SKY26TG4NFOE4QJX55ISNVITB7Q2S7ZGKFOB34RUUJOBWHABJUHQ",
18
- "2ILZOV4OXUWH2V3D276BLKVV6XRACRRVH4DPL4XSDRPB2V6QALXA",
19
- "W665ORDQWJBT7OUT2UARA3SZYFARHVNIBBQ6ZBBEBCBBFHW5GECQ"}
20
 
21
  var rdApikey = keys[rand.Intn(len(keys))]
22
 
 
13
  "github.com/gofiber/fiber/v2"
14
  )
15
 
16
+ var keys = []string{
17
+ "TUCIGWCX5VJCPB5YPAD64NB25TZFFGAWGDVHELHZDLNUJEGX45BA",
18
+ "T5Y37CBYWLSOR7DUGM4TWHCEI5FDJ63H2JIBMRGTZHOURSDWI3ZQ"}
 
19
 
20
  var rdApikey = keys[rand.Intn(len(keys))]
21
 
redis.go ADDED
@@ -0,0 +1,23 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ package main
2
+
3
+ import (
4
+ "fmt"
5
+ "os"
6
+
7
+ "github.com/joho/godotenv"
8
+ "github.com/redis/go-redis/v9"
9
+ )
10
+
11
+ func RedisClient() redis.Client {
12
+
13
+ errDot := godotenv.Load("./.env")
14
+ if errDot != nil {
15
+ fmt.Println("Error loading .env file")
16
+ }
17
+
18
+ opt, _ := redis.ParseURL(fmt.Sprintf("rediss://default:%s@%s:%s/0?max_retries=2", os.Getenv("REDIS_PASSWORD"), os.Getenv("REDIS_URL"), os.Getenv("REDIS_PORT")))
19
+
20
+ rdb := redis.NewClient(opt)
21
+
22
+ return *rdb
23
+ }
utils.go CHANGED
@@ -7,6 +7,7 @@ import (
7
  "fmt"
8
  "math/rand"
9
  "os"
 
10
  "strings"
11
  "time"
12
 
@@ -138,7 +139,8 @@ func fetchTorrent(query string, type_ string) []types.ItemsParsed {
138
  if type_ == "movie" {
139
  category = "2000"
140
  }
141
- query = strings.ReplaceAll(query, " ", "+")
 
142
 
143
  override := os.Getenv("OVERRIDE_API_URL")
144
  api := fmt.Sprintf("%s/api/v2.0/indexers/yggtorrent/results/torznab/api?cache=false&cat=%s&apikey=%s&q=%s", host, category, apiKey, query)
@@ -153,8 +155,9 @@ func fetchTorrent(query string, type_ string) []types.ItemsParsed {
153
 
154
  status, data, err := request.Bytes()
155
  if err != nil {
156
- panic(err)
157
  }
 
158
  fmt.Printf("Status code: %d\n", status)
159
  if status >= 400 {
160
  return make([]types.ItemsParsed, 0)
@@ -220,6 +223,7 @@ func readTorrent(item types.ItemsParsed) types.ItemsParsed {
220
  torrentFile, _ := gotorrentparser.Parse(fileReader)
221
 
222
  for _, file := range torrentFile.Files {
 
223
 
224
  files = append(files, types.TorrentFile{
225
  Name: file.Path[len(file.Path)-1],
@@ -239,8 +243,6 @@ func readTorrent(item types.ItemsParsed) types.ItemsParsed {
239
 
240
  func readTorrentFromMagnet(item types.ItemsParsed) types.ItemsParsed {
241
 
242
- // fmt.Println(item.Link)
243
-
244
  c := TorrentClient()
245
 
246
  t, addErr := c.AddMagnet(item.MagnetURI)
@@ -286,3 +288,24 @@ func readTorrentFromMagnet(item types.ItemsParsed) types.ItemsParsed {
286
  }
287
 
288
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
7
  "fmt"
8
  "math/rand"
9
  "os"
10
+ "regexp"
11
  "strings"
12
  "time"
13
 
 
139
  if type_ == "movie" {
140
  category = "2000"
141
  }
142
+ fmt.Printf("Query: %s\n", query)
143
+ query = removeAccents(strings.ReplaceAll(query, " ", "+"))
144
 
145
  override := os.Getenv("OVERRIDE_API_URL")
146
  api := fmt.Sprintf("%s/api/v2.0/indexers/yggtorrent/results/torznab/api?cache=false&cat=%s&apikey=%s&q=%s", host, category, apiKey, query)
 
155
 
156
  status, data, err := request.Bytes()
157
  if err != nil {
158
+ return make([]types.ItemsParsed, 0)
159
  }
160
+
161
  fmt.Printf("Status code: %d\n", status)
162
  if status >= 400 {
163
  return make([]types.ItemsParsed, 0)
 
223
  torrentFile, _ := gotorrentparser.Parse(fileReader)
224
 
225
  for _, file := range torrentFile.Files {
226
+ // fmt.Println(file.Path[len(file.Path)-1])
227
 
228
  files = append(files, types.TorrentFile{
229
  Name: file.Path[len(file.Path)-1],
 
243
 
244
  func readTorrentFromMagnet(item types.ItemsParsed) types.ItemsParsed {
245
 
 
 
246
  c := TorrentClient()
247
 
248
  t, addErr := c.AddMagnet(item.MagnetURI)
 
288
  }
289
 
290
  }
291
+
292
+ func simplifiedName(name string) string {
293
+
294
+ r, _ := regexp.Compile(`\s{2,}`)
295
+
296
+ resRegex := r.FindAllString(name, -1)
297
+
298
+ for _, word := range resRegex {
299
+ name = strings.ReplaceAll(name, word, " ")
300
+ }
301
+
302
+ if strings.Contains(name, ":") {
303
+ name = strings.Split(name, ":")[0]
304
+ }
305
+
306
+ if strings.Contains(name, "-") {
307
+ name = strings.Split(name, "-")[0]
308
+ }
309
+
310
+ return strings.Trim(name, " ")
311
+ }