Skip to content

Commit e8daf5d

Browse files
committed
pre-include default config file for lavalink
1 parent dc7efa7 commit e8daf5d

File tree

3 files changed

+115
-12
lines changed

3 files changed

+115
-12
lines changed

.gitignore

+2-1
Original file line numberDiff line numberDiff line change
@@ -9,4 +9,5 @@
99
nameless.sqlite
1010

1111
# Ignore lavalink stuffs
12-
**/bin/
12+
**/bin/*
13+
!application.yml
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,113 @@
1+
server: # REST and WS server
2+
port: 2333
3+
address: 0.0.0.0
4+
http2:
5+
enabled: false # Whether to enable HTTP/2 support
6+
plugins:
7+
youtube:
8+
enabled: true # Whether this source can be used.
9+
allowSearch: true # Whether "ytsearch:" and "ytmsearch:" can be used.
10+
allowDirectVideoIds: true # Whether just video IDs can match. If false, only complete URLs will be loaded.
11+
allowDirectPlaylistIds: true # Whether just playlist IDs can match. If false, only complete URLs will be loaded.
12+
# The clients to use for track loading. See below for a list of valid clients.
13+
# Clients are queried in the order they are given (so the first client is queried first and so on...)
14+
clients:
15+
- MUSIC
16+
- WEB
17+
- WEBEMBEDDED
18+
lavalink:
19+
plugins:
20+
# - dependency: "com.github.example:example-plugin:1.0.0" # required, the coordinates of your plugin
21+
# repository: "https://maven.example.com/releases" # optional, defaults to the Lavalink releases repository by default
22+
# snapshot: false # optional, defaults to false, used to tell Lavalink to use the snapshot repository instead of the release repository
23+
# pluginsDir: "./plugins" # optional, defaults to "./plugins"
24+
# defaultPluginRepository: "https://maven.lavalink.dev/releases" # optional, defaults to the Lavalink release repository
25+
# defaultPluginSnapshotRepository: "https://maven.lavalink.dev/snapshots" # optional, defaults to the Lavalink snapshot repository
26+
# Replace VERSION with the current version as shown by the Releases tab or a long commit hash for snapshots.
27+
- dependency: "dev.lavalink.youtube:youtube-plugin:1.10.2"
28+
snapshot: false
29+
- dependency: "com.github.topi314.sponsorblock:sponsorblock-plugin:3.0.1"
30+
repository: "https://maven.lavalink.dev/releases"
31+
snapshot: false
32+
server:
33+
password: "youshallnotpass"
34+
sources:
35+
youtube: false
36+
bandcamp: true
37+
soundcloud: true
38+
twitch: true
39+
vimeo: true
40+
nico: true
41+
http: true # warning: keeping HTTP enabled without a proxy configured could expose your server's IP address.
42+
local: false
43+
filters: # All filters are enabled by default
44+
volume: true
45+
equalizer: true
46+
karaoke: true
47+
timescale: true
48+
tremolo: true
49+
vibrato: true
50+
distortion: true
51+
rotation: true
52+
channelMix: true
53+
lowPass: true
54+
nonAllocatingFrameBuffer: false # Setting to true reduces the number of allocations made by each player at the expense of frame rebuilding (e.g. non-instantaneous volume changes)
55+
bufferDurationMs: 400 # The duration of the NAS buffer. Higher values fare better against longer GC pauses. Duration <= 0 to disable JDA-NAS. Minimum of 40ms, lower values may introduce pauses.
56+
frameBufferDurationMs: 5000 # How many milliseconds of audio to keep buffered
57+
opusEncodingQuality: 10 # Opus encoder quality. Valid values range from 0 to 10, where 10 is best quality but is the most expensive on the CPU.
58+
resamplingQuality: LOW # Quality of resampling operations. Valid values are LOW, MEDIUM and HIGH, where HIGH uses the most CPU.
59+
trackStuckThresholdMs: 10000 # The threshold for how long a track can be stuck. A track is stuck if does not return any audio data.
60+
useSeekGhosting: true # Seek ghosting is the effect where whilst a seek is in progress, the audio buffer is read from until empty, or until seek is ready.
61+
youtubePlaylistLoadLimit: 6 # Number of pages at 100 each
62+
playerUpdateInterval: 5 # How frequently to send player updates to clients, in seconds
63+
youtubeSearchEnabled: true
64+
soundcloudSearchEnabled: true
65+
gc-warnings: true
66+
#ratelimit:
67+
#ipBlocks: ["1.0.0.0/8", "..."] # list of ip blocks
68+
#excludedIps: ["...", "..."] # ips which should be explicit excluded from usage by lavalink
69+
#strategy: "RotateOnBan" # RotateOnBan | LoadBalance | NanoSwitch | RotatingNanoSwitch
70+
#searchTriggersFail: true # Whether a search 429 should trigger marking the ip as failing
71+
#retryLimit: -1 # -1 = use default lavaplayer value | 0 = infinity | >0 = retry will happen this numbers times
72+
#youtubeConfig: # Required for avoiding all age restrictions by YouTube, some restricted videos still can be played without.
73+
#email: "" # Email of Google account
74+
#password: "" # Password of Google account
75+
#httpConfig: # Useful for blocking bad-actors from ip-grabbing your music node and attacking it, this way only the http proxy will be attacked
76+
#proxyHost: "localhost" # Hostname of the proxy, (ip or domain)
77+
#proxyPort: 3128 # Proxy port, 3128 is the default for squidProxy
78+
#proxyUser: "" # Optional user for basic authentication fields, leave blank if you don't use basic auth
79+
#proxyPassword: "" # Password for basic authentication
80+
81+
metrics:
82+
prometheus:
83+
enabled: false
84+
endpoint: /metrics
85+
86+
sentry:
87+
dsn: ""
88+
environment: ""
89+
# tags:
90+
# some_key: some_value
91+
# another_key: another_value
92+
93+
logging:
94+
file:
95+
path: ./logs/
96+
97+
level:
98+
root: INFO
99+
lavalink: INFO
100+
101+
request:
102+
enabled: true
103+
includeClientInfo: true
104+
includeHeaders: false
105+
includeQueryString: true
106+
includePayload: true
107+
maxPayloadLength: 10000
108+
109+
110+
logback:
111+
rollingpolicy:
112+
max-file-size: 1GB
113+
max-history: 30

nameless/custom/player/lavalink/start.py

-11
Original file line numberDiff line numberDiff line change
@@ -60,16 +60,6 @@ def check_file():
6060
return False
6161

6262

63-
async def default_config():
64-
"""Create a default Lavalink configuration file."""
65-
LAVALINK_CONFIG.parent.mkdir(parents=True, exist_ok=True)
66-
with open(LAVALINK_CONFIG, "wb") as f:
67-
config = base64.b64decode(
68-
"c2VydmVyOiAjIFJFU1QgYW5kIFdTIHNlcnZlcg0KICBwb3J0OiAyMzMzDQogIGFkZHJlc3M6IDAuMC4wLjANCiAgaHR0cDI6DQogICAgZW5hYmxlZDogZmFsc2UgIyBXaGV0aGVyIHRvIGVuYWJsZSBIVFRQLzIgc3VwcG9ydA0KcGx1Z2luczoNCiAgeW91dHViZToNCiAgICBlbmFibGVkOiB0cnVlICMgV2hldGhlciB0aGlzIHNvdXJjZSBjYW4gYmUgdXNlZC4NCiAgICBhbGxvd1NlYXJjaDogdHJ1ZSAjIFdoZXRoZXIgInl0c2VhcmNoOiIgYW5kICJ5dG1zZWFyY2g6IiBjYW4gYmUgdXNlZC4NCiAgICBhbGxvd0RpcmVjdFZpZGVvSWRzOiB0cnVlICMgV2hldGhlciBqdXN0IHZpZGVvIElEcyBjYW4gbWF0Y2guIElmIGZhbHNlLCBvbmx5IGNvbXBsZXRlIFVSTHMgd2lsbCBiZSBsb2FkZWQuDQogICAgYWxsb3dEaXJlY3RQbGF5bGlzdElkczogdHJ1ZSAjIFdoZXRoZXIganVzdCBwbGF5bGlzdCBJRHMgY2FuIG1hdGNoLiBJZiBmYWxzZSwgb25seSBjb21wbGV0ZSBVUkxzIHdpbGwgYmUgbG9hZGVkLg0KICAgICMgVGhlIGNsaWVudHMgdG8gdXNlIGZvciB0cmFjayBsb2FkaW5nLiBTZWUgYmVsb3cgZm9yIGEgbGlzdCBvZiB2YWxpZCBjbGllbnRzLg0KICAgICMgQ2xpZW50cyBhcmUgcXVlcmllZCBpbiB0aGUgb3JkZXIgdGhleSBhcmUgZ2l2ZW4gKHNvIHRoZSBmaXJzdCBjbGllbnQgaXMgcXVlcmllZCBmaXJzdCBhbmQgc28gb24uLi4pDQogICAgY2xpZW50czoNCiAgICAgIC0gTVVTSUMNCiAgICAgIC0gV0VCDQogICAgICAtIFdFQkVNQkVEREVEIA0KbGF2YWxpbms6DQogIHBsdWdpbnM6DQogICAgIyAgICAtIGRlcGVuZGVuY3k6ICJjb20uZ2l0aHViLmV4YW1wbGU6ZXhhbXBsZS1wbHVnaW46MS4wLjAiICMgcmVxdWlyZWQsIHRoZSBjb29yZGluYXRlcyBvZiB5b3VyIHBsdWdpbg0KICAgICMgICAgICByZXBvc2l0b3J5OiAiaHR0cHM6Ly9tYXZlbi5leGFtcGxlLmNvbS9yZWxlYXNlcyIgIyBvcHRpb25hbCwgZGVmYXVsdHMgdG8gdGhlIExhdmFsaW5rIHJlbGVhc2VzIHJlcG9zaXRvcnkgYnkgZGVmYXVsdA0KICAgICMgICAgICBzbmFwc2hvdDogZmFsc2UgIyBvcHRpb25hbCwgZGVmYXVsdHMgdG8gZmFsc2UsIHVzZWQgdG8gdGVsbCBMYXZhbGluayB0byB1c2UgdGhlIHNuYXBzaG90IHJlcG9zaXRvcnkgaW5zdGVhZCBvZiB0aGUgcmVsZWFzZSByZXBvc2l0b3J5DQogICAgIyAgcGx1Z2luc0RpcjogIi4vcGx1Z2lucyIgIyBvcHRpb25hbCwgZGVmYXVsdHMgdG8gIi4vcGx1Z2lucyINCiAgICAjICBkZWZhdWx0UGx1Z2luUmVwb3NpdG9yeTogImh0dHBzOi8vbWF2ZW4ubGF2YWxpbmsuZGV2L3JlbGVhc2VzIiAjIG9wdGlvbmFsLCBkZWZhdWx0cyB0byB0aGUgTGF2YWxpbmsgcmVsZWFzZSByZXBvc2l0b3J5DQogICAgIyAgZGVmYXVsdFBsdWdpblNuYXBzaG90UmVwb3NpdG9yeTogImh0dHBzOi8vbWF2ZW4ubGF2YWxpbmsuZGV2L3NuYXBzaG90cyIgIyBvcHRpb25hbCwgZGVmYXVsdHMgdG8gdGhlIExhdmFsaW5rIHNuYXBzaG90IHJlcG9zaXRvcnkNCiAgICAjIFJlcGxhY2UgVkVSU0lPTiB3aXRoIHRoZSBjdXJyZW50IHZlcnNpb24gYXMgc2hvd24gYnkgdGhlIFJlbGVhc2VzIHRhYiBvciBhIGxvbmcgY29tbWl0IGhhc2ggZm9yIHNuYXBzaG90cy4NCiAgICAtIGRlcGVuZGVuY3k6ICJkZXYubGF2YWxpbmsueW91dHViZTp5b3V0dWJlLXBsdWdpbjoxLjEwLjIiDQogICAgICBzbmFwc2hvdDogZmFsc2UNCiAgICAtIGRlcGVuZGVuY3k6ICJjb20uZ2l0aHViLnRvcGkzMTQuc3BvbnNvcmJsb2NrOnNwb25zb3JibG9jay1wbHVnaW46My4wLjEiDQogICAgICByZXBvc2l0b3J5OiAiaHR0cHM6Ly9tYXZlbi5sYXZhbGluay5kZXYvcmVsZWFzZXMiDQogICAgICBzbmFwc2hvdDogZmFsc2UNCiAgc2VydmVyOg0KICAgIHBhc3N3b3JkOiAieW91c2hhbGxub3RwYXNzIg0KICAgIHNvdXJjZXM6DQogICAgICB5b3V0dWJlOiBmYWxzZQ0KICAgICAgYmFuZGNhbXA6IHRydWUNCiAgICAgIHNvdW5kY2xvdWQ6IHRydWUNCiAgICAgIHR3aXRjaDogdHJ1ZQ0KICAgICAgdmltZW86IHRydWUNCiAgICAgIG5pY286IHRydWUNCiAgICAgIGh0dHA6IHRydWUgIyB3YXJuaW5nOiBrZWVwaW5nIEhUVFAgZW5hYmxlZCB3aXRob3V0IGEgcHJveHkgY29uZmlndXJlZCBjb3VsZCBleHBvc2UgeW91ciBzZXJ2ZXIncyBJUCBhZGRyZXNzLg0KICAgICAgbG9jYWw6IGZhbHNlDQogICAgZmlsdGVyczogIyBBbGwgZmlsdGVycyBhcmUgZW5hYmxlZCBieSBkZWZhdWx0DQogICAgICB2b2x1bWU6IHRydWUNCiAgICAgIGVxdWFsaXplcjogdHJ1ZQ0KICAgICAga2FyYW9rZTogdHJ1ZQ0KICAgICAgdGltZXNjYWxlOiB0cnVlDQogICAgICB0cmVtb2xvOiB0cnVlDQogICAgICB2aWJyYXRvOiB0cnVlDQogICAgICBkaXN0b3J0aW9uOiB0cnVlDQogICAgICByb3RhdGlvbjogdHJ1ZQ0KICAgICAgY2hhbm5lbE1peDogdHJ1ZQ0KICAgICAgbG93UGFzczogdHJ1ZQ0KICAgIG5vbkFsbG9jYXRpbmdGcmFtZUJ1ZmZlcjogZmFsc2UgIyBTZXR0aW5nIHRvIHRydWUgcmVkdWNlcyB0aGUgbnVtYmVyIG9mIGFsbG9jYXRpb25zIG1hZGUgYnkgZWFjaCBwbGF5ZXIgYXQgdGhlIGV4cGVuc2Ugb2YgZnJhbWUgcmVidWlsZGluZyAoZS5nLiBub24taW5zdGFudGFuZW91cyB2b2x1bWUgY2hhbmdlcykNCiAgICBidWZmZXJEdXJhdGlvbk1zOiA0MDAgIyBUaGUgZHVyYXRpb24gb2YgdGhlIE5BUyBidWZmZXIuIEhpZ2hlciB2YWx1ZXMgZmFyZSBiZXR0ZXIgYWdhaW5zdCBsb25nZXIgR0MgcGF1c2VzLiBEdXJhdGlvbiA8PSAwIHRvIGRpc2FibGUgSkRBLU5BUy4gTWluaW11bSBvZiA0MG1zLCBsb3dlciB2YWx1ZXMgbWF5IGludHJvZHVjZSBwYXVzZXMuDQogICAgZnJhbWVCdWZmZXJEdXJhdGlvbk1zOiA1MDAwICMgSG93IG1hbnkgbWlsbGlzZWNvbmRzIG9mIGF1ZGlvIHRvIGtlZXAgYnVmZmVyZWQNCiAgICBvcHVzRW5jb2RpbmdRdWFsaXR5OiAxMCAjIE9wdXMgZW5jb2RlciBxdWFsaXR5LiBWYWxpZCB2YWx1ZXMgcmFuZ2UgZnJvbSAwIHRvIDEwLCB3aGVyZSAxMCBpcyBiZXN0IHF1YWxpdHkgYnV0IGlzIHRoZSBtb3N0IGV4cGVuc2l2ZSBvbiB0aGUgQ1BVLg0KICAgIHJlc2FtcGxpbmdRdWFsaXR5OiBMT1cgIyBRdWFsaXR5IG9mIHJlc2FtcGxpbmcgb3BlcmF0aW9ucy4gVmFsaWQgdmFsdWVzIGFyZSBMT1csIE1FRElVTSBhbmQgSElHSCwgd2hlcmUgSElHSCB1c2VzIHRoZSBtb3N0IENQVS4NCiAgICB0cmFja1N0dWNrVGhyZXNob2xkTXM6IDEwMDAwICMgVGhlIHRocmVzaG9sZCBmb3IgaG93IGxvbmcgYSB0cmFjayBjYW4gYmUgc3R1Y2suIEEgdHJhY2sgaXMgc3R1Y2sgaWYgZG9lcyBub3QgcmV0dXJuIGFueSBhdWRpbyBkYXRhLg0KICAgIHVzZVNlZWtHaG9zdGluZzogdHJ1ZSAjIFNlZWsgZ2hvc3RpbmcgaXMgdGhlIGVmZmVjdCB3aGVyZSB3aGlsc3QgYSBzZWVrIGlzIGluIHByb2dyZXNzLCB0aGUgYXVkaW8gYnVmZmVyIGlzIHJlYWQgZnJvbSB1bnRpbCBlbXB0eSwgb3IgdW50aWwgc2VlayBpcyByZWFkeS4NCiAgICB5b3V0dWJlUGxheWxpc3RMb2FkTGltaXQ6IDYgIyBOdW1iZXIgb2YgcGFnZXMgYXQgMTAwIGVhY2gNCiAgICBwbGF5ZXJVcGRhdGVJbnRlcnZhbDogNSAjIEhvdyBmcmVxdWVudGx5IHRvIHNlbmQgcGxheWVyIHVwZGF0ZXMgdG8gY2xpZW50cywgaW4gc2Vjb25kcw0KICAgIHlvdXR1YmVTZWFyY2hFbmFibGVkOiB0cnVlDQogICAgc291bmRjbG91ZFNlYXJjaEVuYWJsZWQ6IHRydWUNCiAgICBnYy13YXJuaW5nczogdHJ1ZQ0KICAgICNyYXRlbGltaXQ6DQogICAgICAjaXBCbG9ja3M6IFsiMS4wLjAuMC84IiwgIi4uLiJdICMgbGlzdCBvZiBpcCBibG9ja3MNCiAgICAgICNleGNsdWRlZElwczogWyIuLi4iLCAiLi4uIl0gIyBpcHMgd2hpY2ggc2hvdWxkIGJlIGV4cGxpY2l0IGV4Y2x1ZGVkIGZyb20gdXNhZ2UgYnkgbGF2YWxpbmsNCiAgICAgICNzdHJhdGVneTogIlJvdGF0ZU9uQmFuIiAjIFJvdGF0ZU9uQmFuIHwgTG9hZEJhbGFuY2UgfCBOYW5vU3dpdGNoIHwgUm90YXRpbmdOYW5vU3dpdGNoDQogICAgICAjc2VhcmNoVHJpZ2dlcnNGYWlsOiB0cnVlICMgV2hldGhlciBhIHNlYXJjaCA0Mjkgc2hvdWxkIHRyaWdnZXIgbWFya2luZyB0aGUgaXAgYXMgZmFpbGluZw0KICAgICAgI3JldHJ5TGltaXQ6IC0xICMgLTEgPSB1c2UgZGVmYXVsdCBsYXZhcGxheWVyIHZhbHVlIHwgMCA9IGluZmluaXR5IHwgPjAgPSByZXRyeSB3aWxsIGhhcHBlbiB0aGlzIG51bWJlcnMgdGltZXMNCiAgICAjeW91dHViZUNvbmZpZzogIyBSZXF1aXJlZCBmb3IgYXZvaWRpbmcgYWxsIGFnZSByZXN0cmljdGlvbnMgYnkgWW91VHViZSwgc29tZSByZXN0cmljdGVkIHZpZGVvcyBzdGlsbCBjYW4gYmUgcGxheWVkIHdpdGhvdXQuDQogICAgICAjZW1haWw6ICIiICMgRW1haWwgb2YgR29vZ2xlIGFjY291bnQNCiAgICAgICNwYXNzd29yZDogIiIgIyBQYXNzd29yZCBvZiBHb29nbGUgYWNjb3VudA0KICAgICNodHRwQ29uZmlnOiAjIFVzZWZ1bCBmb3IgYmxvY2tpbmcgYmFkLWFjdG9ycyBmcm9tIGlwLWdyYWJiaW5nIHlvdXIgbXVzaWMgbm9kZSBhbmQgYXR0YWNraW5nIGl0LCB0aGlzIHdheSBvbmx5IHRoZSBodHRwIHByb3h5IHdpbGwgYmUgYXR0YWNrZWQNCiAgICAgICNwcm94eUhvc3Q6ICJsb2NhbGhvc3QiICMgSG9zdG5hbWUgb2YgdGhlIHByb3h5LCAoaXAgb3IgZG9tYWluKQ0KICAgICAgI3Byb3h5UG9ydDogMzEyOCAjIFByb3h5IHBvcnQsIDMxMjggaXMgdGhlIGRlZmF1bHQgZm9yIHNxdWlkUHJveHkNCiAgICAgICNwcm94eVVzZXI6ICIiICMgT3B0aW9uYWwgdXNlciBmb3IgYmFzaWMgYXV0aGVudGljYXRpb24gZmllbGRzLCBsZWF2ZSBibGFuayBpZiB5b3UgZG9uJ3QgdXNlIGJhc2ljIGF1dGgNCiAgICAgICNwcm94eVBhc3N3b3JkOiAiIiAjIFBhc3N3b3JkIGZvciBiYXNpYyBhdXRoZW50aWNhdGlvbg0KDQptZXRyaWNzOg0KICBwcm9tZXRoZXVzOg0KICAgIGVuYWJsZWQ6IGZhbHNlDQogICAgZW5kcG9pbnQ6IC9tZXRyaWNzDQoNCnNlbnRyeToNCiAgZHNuOiAiIg0KICBlbnZpcm9ubWVudDogIiINCiMgIHRhZ3M6DQojICAgIHNvbWVfa2V5OiBzb21lX3ZhbHVlDQojICAgIGFub3RoZXJfa2V5OiBhbm90aGVyX3ZhbHVlDQoNCmxvZ2dpbmc6DQogIGZpbGU6DQogICAgcGF0aDogLi9sb2dzLw0KDQogIGxldmVsOg0KICAgIHJvb3Q6IElORk8NCiAgICBsYXZhbGluazogSU5GTw0KDQogIHJlcXVlc3Q6DQogICAgZW5hYmxlZDogdHJ1ZQ0KICAgIGluY2x1ZGVDbGllbnRJbmZvOiB0cnVlDQogICAgaW5jbHVkZUhlYWRlcnM6IGZhbHNlDQogICAgaW5jbHVkZVF1ZXJ5U3RyaW5nOiB0cnVlDQogICAgaW5jbHVkZVBheWxvYWQ6IHRydWUNCiAgICBtYXhQYXlsb2FkTGVuZ3RoOiAxMDAwMA0KDQoNCiAgbG9nYmFjazoNCiAgICByb2xsaW5ncG9saWN5Og0KICAgICAgbWF4LWZpbGUtc2l6ZTogMUdCDQogICAgICBtYXgtaGlzdG9yeTogMzA="
69-
)
70-
f.write(config)
71-
72-
7363
async def download_lavalink():
7464
"""Download Lavalink.jar from the official repo."""
7565
LAVALINK_BIN.parent.mkdir(parents=True, exist_ok=True)
@@ -78,7 +68,6 @@ async def download_lavalink():
7868
) as resp:
7969
with open(LAVALINK_BIN, "wb") as f:
8070
f.write(await resp.read())
81-
await default_config() # Create a default configuration file
8271

8372

8473
async def main(loop: asyncio.AbstractEventLoop):

0 commit comments

Comments
 (0)