liquidsoap-prettier 1.8.2 → 1.8.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.github/workflows/check-formatting.yml +32 -0
- package/README.md +31 -5
- package/package.json +1 -1
- package/src/cli.js +104 -9
- package/tests/liq/audio.liq +460 -0
- package/tests/liq/autocue.liq +1081 -0
- package/tests/liq/clock.liq +14 -0
- package/tests/liq/cron.liq +74 -0
- package/tests/liq/error.liq +48 -0
- package/tests/liq/extra/audio.liq +677 -0
- package/tests/liq/extra/audioscrobbler.liq +482 -0
- package/tests/liq/extra/deprecations.liq +976 -0
- package/tests/liq/extra/externals.liq +196 -0
- package/tests/liq/extra/fades.liq +260 -0
- package/tests/liq/extra/file.liq +66 -0
- package/tests/liq/extra/http.liq +160 -0
- package/tests/liq/extra/interactive.liq +917 -0
- package/tests/liq/extra/metadata.liq +75 -0
- package/tests/liq/extra/native.liq +201 -0
- package/tests/liq/extra/openai.liq +150 -0
- package/tests/liq/extra/server.liq +177 -0
- package/tests/liq/extra/source.liq +476 -0
- package/tests/liq/extra/spinitron.liq +272 -0
- package/tests/liq/extra/telnet.liq +266 -0
- package/tests/liq/extra/video.liq +59 -0
- package/tests/liq/extra/visualization.liq +68 -0
- package/tests/liq/fades.liq +941 -0
- package/tests/liq/ffmpeg.liq +605 -0
- package/tests/liq/file.liq +387 -0
- package/tests/liq/getter.liq +74 -0
- package/tests/liq/hls.liq +329 -0
- package/tests/liq/http.liq +1048 -0
- package/tests/liq/http_codes.liq +447 -0
- package/tests/liq/icecast.liq +58 -0
- package/tests/liq/io.liq +106 -0
- package/tests/liq/liquidsoap.liq +31 -0
- package/tests/liq/list.liq +440 -0
- package/tests/liq/log.liq +47 -0
- package/tests/liq/lufs.liq +295 -0
- package/tests/liq/math.liq +23 -0
- package/tests/liq/medialib.liq +752 -0
- package/tests/liq/metadata.liq +253 -0
- package/tests/liq/nfo.liq +258 -0
- package/tests/liq/null.liq +71 -0
- package/tests/liq/playlist.liq +1347 -0
- package/tests/liq/predicate.liq +106 -0
- package/tests/liq/process.liq +93 -0
- package/tests/liq/profiler.liq +5 -0
- package/tests/liq/protocols.liq +1139 -0
- package/tests/liq/ref.liq +28 -0
- package/tests/liq/replaygain.liq +135 -0
- package/tests/liq/request.liq +467 -0
- package/tests/liq/resolvers.liq +33 -0
- package/tests/liq/runtime.liq +70 -0
- package/tests/liq/server.liq +99 -0
- package/tests/liq/settings.liq +41 -0
- package/tests/liq/socket.liq +33 -0
- package/tests/liq/source.liq +362 -0
- package/tests/liq/sqlite.liq +161 -0
- package/tests/liq/stdlib.liq +172 -0
- package/tests/liq/string.liq +476 -0
- package/tests/liq/switches.liq +197 -0
- package/tests/liq/testing.liq +37 -0
- package/tests/liq/thread.liq +161 -0
- package/tests/liq/tracks.liq +100 -0
- package/tests/liq/utils.liq +81 -0
- package/tests/liq/video.liq +918 -0
|
@@ -0,0 +1,976 @@
|
|
|
1
|
+
# Deprecated APIs.
|
|
2
|
+
|
|
3
|
+
# Mark a function as deprecated.
|
|
4
|
+
# @flag deprecated
|
|
5
|
+
# @category Liquidsoap
|
|
6
|
+
# @param old Old function name.
|
|
7
|
+
# @param new New function name.
|
|
8
|
+
def deprecated(old, new) =
|
|
9
|
+
new =
|
|
10
|
+
if
|
|
11
|
+
new == ""
|
|
12
|
+
then
|
|
13
|
+
""
|
|
14
|
+
else
|
|
15
|
+
" Please use \"#{new}\" instead."
|
|
16
|
+
end
|
|
17
|
+
log.severe(
|
|
18
|
+
label="lang.deprecated",
|
|
19
|
+
"WARNING: \"#{old}\" is deprecated and will be removed in future version.#{
|
|
20
|
+
new
|
|
21
|
+
}"
|
|
22
|
+
)
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
%ifdef input.external.rawaudio
|
|
26
|
+
# Deprecated: this function has been replaced by `input.external.rawaudio`.
|
|
27
|
+
# @flag deprecated
|
|
28
|
+
def replaces input.external(%argsof(input.external.rawaudio), cmd) =
|
|
29
|
+
deprecated("input.external", "input.external.rawaudio")
|
|
30
|
+
input.external.rawaudio(%argsof(input.external.rawaudio), cmd)
|
|
31
|
+
end
|
|
32
|
+
%endif
|
|
33
|
+
|
|
34
|
+
# Deprecated: this function has been replaced by `string.quote`.
|
|
35
|
+
# @flag deprecated
|
|
36
|
+
def quote(s) =
|
|
37
|
+
deprecated("quote", "string.quote")
|
|
38
|
+
string.quote(s)
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
let string.utf8 = ()
|
|
42
|
+
|
|
43
|
+
# Deprecated: this function has been replaced by `string.escape`.
|
|
44
|
+
# @flag deprecated
|
|
45
|
+
def string.utf8.escape(s) =
|
|
46
|
+
deprecated("string.utf8.escape", "string.escape")
|
|
47
|
+
string.escape(s)
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
# Deprecated: use mksafe and playlist instead.
|
|
51
|
+
# @flag deprecated
|
|
52
|
+
def playlist.safe(
|
|
53
|
+
~id=null,
|
|
54
|
+
~mime_type="",
|
|
55
|
+
~mode="randomize",
|
|
56
|
+
~on_track={()},
|
|
57
|
+
~prefix="",
|
|
58
|
+
~reload=0,
|
|
59
|
+
~reload_mode="seconds",
|
|
60
|
+
uri
|
|
61
|
+
) =
|
|
62
|
+
deprecated("playlist.safe", "")
|
|
63
|
+
ignore(on_track)
|
|
64
|
+
mksafe(
|
|
65
|
+
playlist(
|
|
66
|
+
id=id,
|
|
67
|
+
mime_type=mime_type,
|
|
68
|
+
mode=mode,
|
|
69
|
+
prefix=prefix,
|
|
70
|
+
reload=reload,
|
|
71
|
+
reload_mode=reload_mode,
|
|
72
|
+
uri
|
|
73
|
+
)
|
|
74
|
+
)
|
|
75
|
+
end
|
|
76
|
+
|
|
77
|
+
# Deprecated: this function has been replaced by `thread.run.recurrent`.
|
|
78
|
+
# @flag deprecated
|
|
79
|
+
def add_timeout(~fast=true, delay, f) =
|
|
80
|
+
deprecated("add_timeout", "thread.run.recurrent")
|
|
81
|
+
thread.run.recurrent(fast=fast, delay=delay, f)
|
|
82
|
+
end
|
|
83
|
+
|
|
84
|
+
# Deprecated: this function has been replaced by `thread.when`.
|
|
85
|
+
# @flag deprecated
|
|
86
|
+
def exec_at(~freq=1., ~pred, f) =
|
|
87
|
+
deprecated("exec_at", "thread.when")
|
|
88
|
+
thread.when(every=freq, pred, f)
|
|
89
|
+
end
|
|
90
|
+
|
|
91
|
+
# Deprecated: this function has been replaced by `file.which`.
|
|
92
|
+
# @flag deprecated
|
|
93
|
+
def which(f) =
|
|
94
|
+
deprecated("which", "file.which")
|
|
95
|
+
file.which(f) ?? ""
|
|
96
|
+
end
|
|
97
|
+
|
|
98
|
+
base64 = ()
|
|
99
|
+
|
|
100
|
+
# Deprecated: this function has been replaced by `string.base64.decode`.
|
|
101
|
+
# @flag deprecated
|
|
102
|
+
def base64.decode(s) =
|
|
103
|
+
deprecated("base64.decode", "string.base64.decode")
|
|
104
|
+
string.base64.decode(s)
|
|
105
|
+
end
|
|
106
|
+
|
|
107
|
+
# Deprecated: this function has been replaced by `string.base64.encode`.
|
|
108
|
+
# @flag deprecated
|
|
109
|
+
def base64.encode(s) =
|
|
110
|
+
deprecated("base64.encode", "string.base64.encode")
|
|
111
|
+
string.base64.encode(s)
|
|
112
|
+
end
|
|
113
|
+
|
|
114
|
+
# Deprecated: this function has been replaced with `playlist`, setting
|
|
115
|
+
# `reload_mode` argument to `"never"` and `loop` to `false`.
|
|
116
|
+
# @flag deprecated
|
|
117
|
+
def playlist.once(
|
|
118
|
+
~id=null,
|
|
119
|
+
~random=false,
|
|
120
|
+
~reload_mode="",
|
|
121
|
+
~prefetch=1,
|
|
122
|
+
~filter=fun (_) -> true,
|
|
123
|
+
uri
|
|
124
|
+
) =
|
|
125
|
+
deprecated("playlist.once", "playlist")
|
|
126
|
+
mode = if random then "randomize" else "normal" end
|
|
127
|
+
reload_mode = if reload_mode == "" then "never" else reload_mode end
|
|
128
|
+
playlist(
|
|
129
|
+
reload_mode=reload_mode,
|
|
130
|
+
loop=false,
|
|
131
|
+
id=id,
|
|
132
|
+
mode=mode,
|
|
133
|
+
prefetch=prefetch,
|
|
134
|
+
check_next=filter,
|
|
135
|
+
uri
|
|
136
|
+
)
|
|
137
|
+
end
|
|
138
|
+
|
|
139
|
+
# Deprecated: use metadata.map
|
|
140
|
+
# @flag deprecated
|
|
141
|
+
def map_metadata(%argsof(metadata.map), fn, s) =
|
|
142
|
+
deprecated("map_metadata", "metadata.map")
|
|
143
|
+
metadata.map(%argsof(metadata.map), fn, s)
|
|
144
|
+
end
|
|
145
|
+
|
|
146
|
+
# Deprecated: this function has been replaced by `metadata.map`.
|
|
147
|
+
# @flag deprecated
|
|
148
|
+
def rewrite_metadata(l, ~insert_missing=true, ~update=true, ~strip=false, s) =
|
|
149
|
+
deprecated("rewrite_metadata", "metadata.map")
|
|
150
|
+
|
|
151
|
+
def map(m) =
|
|
152
|
+
def apply(x) =
|
|
153
|
+
label = fst(x)
|
|
154
|
+
value = snd(x)
|
|
155
|
+
(label, value % m)
|
|
156
|
+
end
|
|
157
|
+
|
|
158
|
+
list.map(apply, l)
|
|
159
|
+
end
|
|
160
|
+
|
|
161
|
+
metadata.map(
|
|
162
|
+
map,
|
|
163
|
+
insert_missing=insert_missing,
|
|
164
|
+
update=update,
|
|
165
|
+
strip=strip,
|
|
166
|
+
s
|
|
167
|
+
)
|
|
168
|
+
end
|
|
169
|
+
|
|
170
|
+
# Deprecated: this function will be removed in a future release
|
|
171
|
+
# @flag deprecated
|
|
172
|
+
def id(~id=null, s) =
|
|
173
|
+
deprecated("id", "")
|
|
174
|
+
ignore(id)
|
|
175
|
+
s
|
|
176
|
+
end
|
|
177
|
+
|
|
178
|
+
# Deprecated: flow is no longer maintained
|
|
179
|
+
# Register a radio on Liquidsoap Flows.
|
|
180
|
+
# @category Liquidsoap
|
|
181
|
+
# @flag deprecated
|
|
182
|
+
# @param ~radio Name of the radio.
|
|
183
|
+
# @param ~website URL of the website of the radio.
|
|
184
|
+
# @param ~description Description of the radio.
|
|
185
|
+
# @param ~genre Genre of the radio (rock or rap or etc.).
|
|
186
|
+
# @param ~streams List of streams for the radio described by \
|
|
187
|
+
# a pair of strings consisting of the format of the stream \
|
|
188
|
+
# and the url of the stream. The format should be \
|
|
189
|
+
# of the form "ogg/128k" consisting of the codec and \
|
|
190
|
+
# the bitrate, separated by "/".
|
|
191
|
+
def register_flow(
|
|
192
|
+
~server="",
|
|
193
|
+
~user="default",
|
|
194
|
+
~password="default",
|
|
195
|
+
~email="",
|
|
196
|
+
~radio,
|
|
197
|
+
~website,
|
|
198
|
+
~description,
|
|
199
|
+
~genre,
|
|
200
|
+
~streams,
|
|
201
|
+
s
|
|
202
|
+
) =
|
|
203
|
+
deprecated("register_flow", "")
|
|
204
|
+
|
|
205
|
+
# If the server is "", we get the server from sf.net
|
|
206
|
+
server =
|
|
207
|
+
if
|
|
208
|
+
server == ""
|
|
209
|
+
then
|
|
210
|
+
let data = http.get("http://liquidsoap.info/flows_server")
|
|
211
|
+
if
|
|
212
|
+
data.status_code == 200
|
|
213
|
+
then
|
|
214
|
+
data
|
|
215
|
+
else
|
|
216
|
+
# If sf is down, we use the hardcoded server
|
|
217
|
+
"http://savonet.rastageeks.org/liqflows.py"
|
|
218
|
+
end
|
|
219
|
+
else
|
|
220
|
+
server
|
|
221
|
+
end
|
|
222
|
+
|
|
223
|
+
log(
|
|
224
|
+
level=4,
|
|
225
|
+
"Flows server: #{server}"
|
|
226
|
+
)
|
|
227
|
+
|
|
228
|
+
# Initial variables
|
|
229
|
+
ping_period = 600.
|
|
230
|
+
|
|
231
|
+
# Pinging period in seconds
|
|
232
|
+
|
|
233
|
+
# Fix default parameters
|
|
234
|
+
# and set request function.
|
|
235
|
+
base_params =
|
|
236
|
+
[
|
|
237
|
+
("v", "0.0"),
|
|
238
|
+
("user", user),
|
|
239
|
+
("password", password),
|
|
240
|
+
("email", email),
|
|
241
|
+
("radio", radio)
|
|
242
|
+
]
|
|
243
|
+
|
|
244
|
+
def request(~cmd, ~params) =
|
|
245
|
+
def log(~level, x) =
|
|
246
|
+
log(label=radio, level=level, x)
|
|
247
|
+
end
|
|
248
|
+
|
|
249
|
+
log(
|
|
250
|
+
level=4,
|
|
251
|
+
"Processing command #{cmd} with arguments:"
|
|
252
|
+
)
|
|
253
|
+
|
|
254
|
+
def log_arg(x) =
|
|
255
|
+
let (label, value) = x
|
|
256
|
+
log(
|
|
257
|
+
level=4,
|
|
258
|
+
" #{label}: #{value}"
|
|
259
|
+
)
|
|
260
|
+
end
|
|
261
|
+
|
|
262
|
+
list.iter(log_arg, params)
|
|
263
|
+
cmd = url.encode(cmd)
|
|
264
|
+
params = list.append(base_params, params)
|
|
265
|
+
|
|
266
|
+
def f(z) =
|
|
267
|
+
let (x, y) = z
|
|
268
|
+
y = url.encode(y)
|
|
269
|
+
"#{x}=#{y}"
|
|
270
|
+
end
|
|
271
|
+
|
|
272
|
+
params = string.concat(separator="&", list.map(f, params))
|
|
273
|
+
url = "#{server}?cmd=#{cmd}&#{params}"
|
|
274
|
+
|
|
275
|
+
# TODO: do something with errors!
|
|
276
|
+
answer = http.get(url)
|
|
277
|
+
log(
|
|
278
|
+
level=4,
|
|
279
|
+
"Response status: #{answer.http_version} #{answer.status_code} #{
|
|
280
|
+
answer.status_message
|
|
281
|
+
}"
|
|
282
|
+
)
|
|
283
|
+
|
|
284
|
+
log(
|
|
285
|
+
level=4,
|
|
286
|
+
"Response headers:"
|
|
287
|
+
)
|
|
288
|
+
list.iter(log_arg, answer.headers)
|
|
289
|
+
log(
|
|
290
|
+
level=4,
|
|
291
|
+
"Response content: #{answer}"
|
|
292
|
+
)
|
|
293
|
+
end
|
|
294
|
+
|
|
295
|
+
# Register radio
|
|
296
|
+
params =
|
|
297
|
+
[
|
|
298
|
+
("radio_website", website),
|
|
299
|
+
("radio_description", description),
|
|
300
|
+
("radio_genre", genre)
|
|
301
|
+
]
|
|
302
|
+
|
|
303
|
+
request(
|
|
304
|
+
cmd="add radio",
|
|
305
|
+
params=params
|
|
306
|
+
)
|
|
307
|
+
|
|
308
|
+
# Ping
|
|
309
|
+
def ping() =
|
|
310
|
+
ignore(
|
|
311
|
+
request(
|
|
312
|
+
cmd="ping radio",
|
|
313
|
+
params=[]
|
|
314
|
+
)
|
|
315
|
+
)
|
|
316
|
+
ping_period
|
|
317
|
+
end
|
|
318
|
+
|
|
319
|
+
thread.run.recurrent(fast=false, delay=ping_period, ping)
|
|
320
|
+
|
|
321
|
+
# Register streams
|
|
322
|
+
def register_stream(format_url) =
|
|
323
|
+
let (format, url) = format_url
|
|
324
|
+
params = [("stream_format", format), ("stream_url", url)]
|
|
325
|
+
request(
|
|
326
|
+
cmd="add stream",
|
|
327
|
+
params=params
|
|
328
|
+
)
|
|
329
|
+
end
|
|
330
|
+
|
|
331
|
+
request(
|
|
332
|
+
cmd="clear streams",
|
|
333
|
+
params=[]
|
|
334
|
+
)
|
|
335
|
+
list.iter(register_stream, streams)
|
|
336
|
+
|
|
337
|
+
# Metadata update
|
|
338
|
+
def metadata(m) =
|
|
339
|
+
artist = m["artist"]
|
|
340
|
+
title = m["title"]
|
|
341
|
+
params = [("m_title", title), ("m_artist", artist)]
|
|
342
|
+
request(cmd="metadata", params=params)
|
|
343
|
+
end
|
|
344
|
+
|
|
345
|
+
s.on_metadata(metadata)
|
|
346
|
+
end
|
|
347
|
+
|
|
348
|
+
# Deprecated: this function has been replaced by `source.fail`.
|
|
349
|
+
# @flag deprecated
|
|
350
|
+
def empty(~id=null) =
|
|
351
|
+
deprecated("empty", "source.fail")
|
|
352
|
+
source.fail(id=id)
|
|
353
|
+
end
|
|
354
|
+
|
|
355
|
+
# Deprecated: use `request.create` instead.
|
|
356
|
+
# @flag deprecated
|
|
357
|
+
def request.create.raw(%argsof(request.create), uri) =
|
|
358
|
+
deprecated("request.create.raw", "request.create")
|
|
359
|
+
request.create(%argsof(request.create), uri)
|
|
360
|
+
end
|
|
361
|
+
|
|
362
|
+
# Deprecated: use `file.remove` instead.
|
|
363
|
+
# @flag deprecated
|
|
364
|
+
def file.unlink(filename) =
|
|
365
|
+
deprecated("file.unlink", "file.remove")
|
|
366
|
+
file.remove(filename)
|
|
367
|
+
end
|
|
368
|
+
|
|
369
|
+
# Deprecated: was designed for transitions only and is not
|
|
370
|
+
# needed anymore. Use `file.out` instead.
|
|
371
|
+
# @flag deprecated
|
|
372
|
+
def fade.final(~id="fade.final", ~duration=3., ~type="lin", s) =
|
|
373
|
+
deprecated("fade.final", "fade.out")
|
|
374
|
+
fn = mkfade(start=1., stop=0., type=type, duration=duration, s)
|
|
375
|
+
should_play = ref(true)
|
|
376
|
+
|
|
377
|
+
def fn() =
|
|
378
|
+
v = fn()
|
|
379
|
+
if v == 0. then should_play := false end
|
|
380
|
+
v
|
|
381
|
+
end
|
|
382
|
+
|
|
383
|
+
s = fade.scale(id=id, fn, s)
|
|
384
|
+
switch([(should_play, s)])
|
|
385
|
+
end
|
|
386
|
+
|
|
387
|
+
# Deprecated: was designed for transitions only and is not
|
|
388
|
+
# needed anymore. Use `fade.in` instead.
|
|
389
|
+
# @flag deprecated
|
|
390
|
+
def fade.initial(~id="fade.initial", ~duration=3., ~type="lin", s) =
|
|
391
|
+
deprecated("fade.initial", "fade.in")
|
|
392
|
+
fn = mkfade(start=0., stop=1., type=type, duration=duration, s)
|
|
393
|
+
fade.scale(id=id, fn, s)
|
|
394
|
+
end
|
|
395
|
+
|
|
396
|
+
# Deprecated: use `process.read` instead.
|
|
397
|
+
# @flag deprecated
|
|
398
|
+
def get_process_output(%argsof(process.read), cmd) =
|
|
399
|
+
deprecated("get_process_output", "process.read")
|
|
400
|
+
process.read(%argsof(process.read), cmd)
|
|
401
|
+
end
|
|
402
|
+
|
|
403
|
+
# Deprecated: use `process.read.lines` instead.
|
|
404
|
+
# @flag deprecated
|
|
405
|
+
def get_process_lines(%argsof(process.read.lines), cmd) =
|
|
406
|
+
deprecated("get_process_lines", "process.read.lines")
|
|
407
|
+
process.read.lines(%argsof(process.read.lines), cmd)
|
|
408
|
+
end
|
|
409
|
+
|
|
410
|
+
# Deprecated: use `process.test` instead.
|
|
411
|
+
# @flag deprecated
|
|
412
|
+
def test_process(%argsof(process.test), cmd) =
|
|
413
|
+
deprecated("test_process", "process.test")
|
|
414
|
+
process.test(%argsof(process.test), cmd)
|
|
415
|
+
end
|
|
416
|
+
|
|
417
|
+
# Deprecated: use `process.run` instead.
|
|
418
|
+
# @flag deprecated
|
|
419
|
+
def system(command) =
|
|
420
|
+
deprecated("system", "process.run")
|
|
421
|
+
process.run(command)
|
|
422
|
+
end
|
|
423
|
+
|
|
424
|
+
# Deprecated: use `blank.detect` instead
|
|
425
|
+
# @flag deprecated
|
|
426
|
+
def on_blank(%argsof(blank.detect), f, s) =
|
|
427
|
+
deprecated("on_blank", "blank.detect")
|
|
428
|
+
s = blank.detect(%argsof(blank.detect), s)
|
|
429
|
+
s.on_blank(synchronous=true, f)
|
|
430
|
+
s
|
|
431
|
+
end
|
|
432
|
+
|
|
433
|
+
# Deprecated: use `blank.skip` instead
|
|
434
|
+
# @flag deprecated
|
|
435
|
+
def skip_blank(%argsof(blank.skip), s) =
|
|
436
|
+
deprecated("skip_blank", "blank.skip")
|
|
437
|
+
blank.skip(%argsof(blank.skip), s)
|
|
438
|
+
end
|
|
439
|
+
|
|
440
|
+
# Deprecated: use `blank.eat` instead
|
|
441
|
+
# @flag deprecated
|
|
442
|
+
def eat_blank(%argsof(blank.eat), s) =
|
|
443
|
+
deprecated("eat_blank", "blank.eat")
|
|
444
|
+
blank.eat(%argsof(blank.eat), s)
|
|
445
|
+
end
|
|
446
|
+
|
|
447
|
+
# Deprecated: use `blank.strip` instead
|
|
448
|
+
# @flag deprecated
|
|
449
|
+
def strip_blank(%argsof(blank.strip), s) =
|
|
450
|
+
deprecated("strip_blank", "blank.strip")
|
|
451
|
+
blank.strip(%argsof(blank.strip), s)
|
|
452
|
+
end
|
|
453
|
+
|
|
454
|
+
# Deprecated: use `time.local` instead
|
|
455
|
+
# @flag deprecated
|
|
456
|
+
def localtime(t) =
|
|
457
|
+
deprecated("localtime", "time.local")
|
|
458
|
+
time.local(t)
|
|
459
|
+
end
|
|
460
|
+
|
|
461
|
+
# Deprecated: use `time.utc` instead
|
|
462
|
+
# @flag deprecated
|
|
463
|
+
def gmtime(t) =
|
|
464
|
+
deprecated("gmtime", "time.utc")
|
|
465
|
+
time.utc(t)
|
|
466
|
+
end
|
|
467
|
+
|
|
468
|
+
# Deprecated: use `time` instead
|
|
469
|
+
# @flag deprecated
|
|
470
|
+
def gettimeofday() =
|
|
471
|
+
deprecated("gettimeofday", "time")
|
|
472
|
+
time()
|
|
473
|
+
end
|
|
474
|
+
|
|
475
|
+
# @flag deprecated
|
|
476
|
+
def output.preferred(~id=null, ~fallible=false, ~start=true, s) =
|
|
477
|
+
deprecated("output.preferred", "output")
|
|
478
|
+
output(id=id, fallible=fallible, start=start, s)
|
|
479
|
+
end
|
|
480
|
+
|
|
481
|
+
# Deprecated: use `output` instead.
|
|
482
|
+
# @flag deprecated
|
|
483
|
+
def out(s) =
|
|
484
|
+
deprecated("out", "output")
|
|
485
|
+
output(mksafe(s))
|
|
486
|
+
end
|
|
487
|
+
|
|
488
|
+
# Deprecated: use `input` instead.
|
|
489
|
+
# @flag deprecated
|
|
490
|
+
def in(~id=null, ~start=true, ~fallible=false) =
|
|
491
|
+
deprecated("in", "input")
|
|
492
|
+
input(id=id, start=start, fallible=fallible)
|
|
493
|
+
end
|
|
494
|
+
|
|
495
|
+
# Deprecated: use `source.available` instead.
|
|
496
|
+
# @flag deprecated
|
|
497
|
+
def mkavailable(
|
|
498
|
+
~id="mkavailable",
|
|
499
|
+
~active=getter(false),
|
|
500
|
+
~available=getter(true),
|
|
501
|
+
s
|
|
502
|
+
) =
|
|
503
|
+
deprecated("mkavailable", "source.available")
|
|
504
|
+
output.dummy(switch([(getter.function(active), s)]), fallible=true)
|
|
505
|
+
switch(id=id, [(getter.function(available), s)])
|
|
506
|
+
end
|
|
507
|
+
|
|
508
|
+
# Deprecated: use `at` instead.
|
|
509
|
+
# @flag deprecated
|
|
510
|
+
def at(pred, s) =
|
|
511
|
+
deprecated("at", "source.available")
|
|
512
|
+
source.available(s, pred)
|
|
513
|
+
end
|
|
514
|
+
|
|
515
|
+
https = ()
|
|
516
|
+
|
|
517
|
+
# Deprecated: use `http.get` instead.
|
|
518
|
+
# @flag deprecated
|
|
519
|
+
def https.get(%argsof(http.get), url) =
|
|
520
|
+
deprecated("https.get", "http.get")
|
|
521
|
+
http.get(%argsof(http.get), url)
|
|
522
|
+
end
|
|
523
|
+
|
|
524
|
+
# Deprecated: use `http.put` instead.
|
|
525
|
+
# @flag deprecated
|
|
526
|
+
def https.put(%argsof(http.put), url) =
|
|
527
|
+
deprecated("https.put", "http.put")
|
|
528
|
+
http.put(%argsof(http.put), url)
|
|
529
|
+
end
|
|
530
|
+
|
|
531
|
+
# Deprecated: use `http.post` instead.
|
|
532
|
+
# @flag deprecated
|
|
533
|
+
def https.post(%argsof(http.post), url) =
|
|
534
|
+
deprecated("https.post", "http.post")
|
|
535
|
+
http.post(%argsof(http.post), url)
|
|
536
|
+
end
|
|
537
|
+
|
|
538
|
+
# Deprecated: use `http.head` instead.
|
|
539
|
+
# @flag deprecated
|
|
540
|
+
def https.head(%argsof(http.head), url) =
|
|
541
|
+
deprecated("https.head", "http.head")
|
|
542
|
+
http.head(%argsof(http.head), url)
|
|
543
|
+
end
|
|
544
|
+
|
|
545
|
+
# Deprecated: use `http.delete` instead.
|
|
546
|
+
# @flag deprecated
|
|
547
|
+
def https.delete(%argsof(http.delete), url) =
|
|
548
|
+
deprecated("https.delete", "http.delete")
|
|
549
|
+
http.delete(%argsof(http.delete), url)
|
|
550
|
+
end
|
|
551
|
+
|
|
552
|
+
%ifdef input.http
|
|
553
|
+
# Deprecated: use `input.http` instead
|
|
554
|
+
# @flag deprecated
|
|
555
|
+
def input.https(%argsof(input.http), url) =
|
|
556
|
+
deprecated("input.https", "input.http")
|
|
557
|
+
input.http(%argsof(input.http), url)
|
|
558
|
+
end
|
|
559
|
+
%endif
|
|
560
|
+
|
|
561
|
+
%ifdef source.say_metadata
|
|
562
|
+
# Deprecated: use `source.say_metadata` instead
|
|
563
|
+
# @flag deprecated
|
|
564
|
+
def say_metadata(s, ~pattern) =
|
|
565
|
+
def pattern(m) =
|
|
566
|
+
pattern % m
|
|
567
|
+
end
|
|
568
|
+
|
|
569
|
+
source.say_metadata(pattern=pattern, s)
|
|
570
|
+
end
|
|
571
|
+
%endif
|
|
572
|
+
|
|
573
|
+
# Deprecated: use `playlist.parse.register` instead
|
|
574
|
+
# @flag deprecated
|
|
575
|
+
def add_playlist_parser(%argsof(playlist.parse.register), s) =
|
|
576
|
+
deprecated("add_playlist_parser", "playlist.parse.register")
|
|
577
|
+
playlist.parse.register(%argsof(playlist.parse.register), s)
|
|
578
|
+
end
|
|
579
|
+
|
|
580
|
+
# Deprecated: use `json.stringify` instead
|
|
581
|
+
# @flag deprecated
|
|
582
|
+
# @argsof json.stringify
|
|
583
|
+
def json_of(%argsof(json.stringify), v) =
|
|
584
|
+
deprecated("json_of", "json.stringify")
|
|
585
|
+
json.stringify(%argsof(json.stringify), v)
|
|
586
|
+
end
|
|
587
|
+
|
|
588
|
+
# Deprecated: use `json.parse` instead
|
|
589
|
+
# @flag deprecated
|
|
590
|
+
# @argsof json.parse
|
|
591
|
+
def of_json(%argsof(json.parse), v) =
|
|
592
|
+
deprecated("of_json", "json.parse")
|
|
593
|
+
json.parse(%argsof(json.parse), v)
|
|
594
|
+
end
|
|
595
|
+
|
|
596
|
+
# Deprecated: use `playlist` instead
|
|
597
|
+
# @flag deprecated
|
|
598
|
+
def playlist.reloadable(
|
|
599
|
+
~id=null,
|
|
600
|
+
~mime_type="",
|
|
601
|
+
~mode="randomize",
|
|
602
|
+
~on_track={()},
|
|
603
|
+
~prefix="",
|
|
604
|
+
~reload=0,
|
|
605
|
+
~reload_mode="seconds",
|
|
606
|
+
uri
|
|
607
|
+
) =
|
|
608
|
+
deprecated("playlist.reloadable", "playlist")
|
|
609
|
+
ignore(on_track)
|
|
610
|
+
playlist(
|
|
611
|
+
id=id,
|
|
612
|
+
mime_type=mime_type,
|
|
613
|
+
mode=mode,
|
|
614
|
+
prefix=prefix,
|
|
615
|
+
reload=reload,
|
|
616
|
+
reload_mode=reload_mode,
|
|
617
|
+
uri
|
|
618
|
+
)
|
|
619
|
+
end
|
|
620
|
+
|
|
621
|
+
# Deprecated: use `request.dynamic` instead
|
|
622
|
+
# @flag deprecated
|
|
623
|
+
def request.dynamic.list(%argsof(request.dynamic), f) =
|
|
624
|
+
deprecated("request.dynamic.list", "request.dynamic")
|
|
625
|
+
add = ref(fun (_) -> ())
|
|
626
|
+
|
|
627
|
+
def f() =
|
|
628
|
+
l = f()
|
|
629
|
+
if
|
|
630
|
+
l != []
|
|
631
|
+
then
|
|
632
|
+
let [r, ...q] = list.rev(l)
|
|
633
|
+
r = (r : request)
|
|
634
|
+
list.iter(add(), list.rev(q))
|
|
635
|
+
r
|
|
636
|
+
else
|
|
637
|
+
null
|
|
638
|
+
end
|
|
639
|
+
end
|
|
640
|
+
|
|
641
|
+
s = request.dynamic(%argsof(request.dynamic), f)
|
|
642
|
+
add := fun (r) -> ignore(s.add(r))
|
|
643
|
+
s
|
|
644
|
+
end
|
|
645
|
+
|
|
646
|
+
# Deprecated: use `process.run` instead
|
|
647
|
+
# @flag deprecated
|
|
648
|
+
def run_process(%argsof(process.run), p) =
|
|
649
|
+
deprecated("run_process", "process.run")
|
|
650
|
+
x = process.run(%argsof(process.run), p)
|
|
651
|
+
(x.stdout, x.stderr, ("#{x.status}", x.status.description))
|
|
652
|
+
end
|
|
653
|
+
|
|
654
|
+
# Deprecated: use `list.assoc.mem` instead
|
|
655
|
+
# @flag deprecated
|
|
656
|
+
def list.mem_assoc(x, y) =
|
|
657
|
+
deprecated("list.mem_assoc", "list.assoc.mem")
|
|
658
|
+
list.assoc.mem(x, y)
|
|
659
|
+
end
|
|
660
|
+
|
|
661
|
+
# Deprecated: use `runtime.gc.full_major` instead
|
|
662
|
+
# @flag deprecated
|
|
663
|
+
def garbage_collect() =
|
|
664
|
+
deprecated("garbage_collect", "runtime.gc.full_major")
|
|
665
|
+
runtime.gc.full_major()
|
|
666
|
+
end
|
|
667
|
+
|
|
668
|
+
# Deprecated: use `video.alpha.of_color`
|
|
669
|
+
# @flag deprecated
|
|
670
|
+
def video.transparent(%argsof(video.alpha.of_color), s) =
|
|
671
|
+
deprecated("video.transparent", "video.alpha.of_color")
|
|
672
|
+
video.alpha.of_color(%argsof(video.alpha.of_color), s)
|
|
673
|
+
end
|
|
674
|
+
|
|
675
|
+
# Deprecated: use `request.resolved`
|
|
676
|
+
# @flag deprecated
|
|
677
|
+
def request.ready(r) =
|
|
678
|
+
deprecated("request.ready", "request.resolved")
|
|
679
|
+
request.resolved(r)
|
|
680
|
+
end
|
|
681
|
+
|
|
682
|
+
# Deprecated: use `environment.get`
|
|
683
|
+
# @flag deprecated
|
|
684
|
+
def getenv(default="", v) =
|
|
685
|
+
deprecated("getenv", "environment.get")
|
|
686
|
+
environment.get(default=default, v)
|
|
687
|
+
end
|
|
688
|
+
|
|
689
|
+
# Deprecated: use `environment.set`
|
|
690
|
+
# @flag deprecated
|
|
691
|
+
def setenv(k, v) =
|
|
692
|
+
deprecated("setenv", "environment.set")
|
|
693
|
+
environment.set(k, v)
|
|
694
|
+
end
|
|
695
|
+
|
|
696
|
+
# Deprecated: use `getpid`
|
|
697
|
+
# @flag deprecated
|
|
698
|
+
def getpid() =
|
|
699
|
+
deprecated("getpid", "process.pid")
|
|
700
|
+
process.pid()
|
|
701
|
+
end
|
|
702
|
+
|
|
703
|
+
# Deprecated: use `file.mime`
|
|
704
|
+
# @flag deprecated
|
|
705
|
+
def get_mime(fname) =
|
|
706
|
+
deprecated("get_mime", "file.mime")
|
|
707
|
+
file.mime(fname) ?? ""
|
|
708
|
+
end
|
|
709
|
+
|
|
710
|
+
# Deprecated: use `string`.
|
|
711
|
+
# @flag deprecated
|
|
712
|
+
def string_of(s) =
|
|
713
|
+
deprecated("string_of", "string")
|
|
714
|
+
string(s)
|
|
715
|
+
end
|
|
716
|
+
|
|
717
|
+
# Deprecated: use `string.float`.
|
|
718
|
+
# @flag deprecated
|
|
719
|
+
def string_of_float(x) =
|
|
720
|
+
deprecated("string_of_float", "string.float")
|
|
721
|
+
string.float(x)
|
|
722
|
+
end
|
|
723
|
+
|
|
724
|
+
# Deprecated: use `protocol.add`.
|
|
725
|
+
# @flag deprecated
|
|
726
|
+
def add_protocol(%argsof(protocol.add), name, fn) =
|
|
727
|
+
deprecated("add_protocol", "protocol.add")
|
|
728
|
+
protocol.add(%argsof(protocol.add), name, fn)
|
|
729
|
+
end
|
|
730
|
+
|
|
731
|
+
# Deprecated: use `decoder.metadata.add`.
|
|
732
|
+
# @flag deprecated
|
|
733
|
+
def add_metadata_resolver(name, fn) =
|
|
734
|
+
deprecated("add_metadata_resolver", "decoder.metadata.add")
|
|
735
|
+
decoder.metadata.add(name, fn)
|
|
736
|
+
end
|
|
737
|
+
|
|
738
|
+
# Deprecated: use `source.mux.audio`.
|
|
739
|
+
# @flag deprecated
|
|
740
|
+
def mux_audio(%argsof(source.mux.audio), s) =
|
|
741
|
+
deprecated("mux_audio", "source.mux.audio")
|
|
742
|
+
source.mux.audio(%argsof(source.mux.audio), s)
|
|
743
|
+
end
|
|
744
|
+
|
|
745
|
+
# Deprecated: use `source.mux.video`.
|
|
746
|
+
# @flag deprecated
|
|
747
|
+
def mux_video(%argsof(source.mux.video), s) =
|
|
748
|
+
deprecated("mux_video", "source.mux.video")
|
|
749
|
+
source.mux.video(%argsof(source.mux.video), s)
|
|
750
|
+
end
|
|
751
|
+
|
|
752
|
+
# Deprecated: use `source.mux.midi`
|
|
753
|
+
# @flag deprecated
|
|
754
|
+
def mux_midi(%argsof(source.mux.midi), s) =
|
|
755
|
+
deprecated("mux_midi", "source.mux.midi")
|
|
756
|
+
source.mux.midi(%argsof(source.mux.midi), s)
|
|
757
|
+
end
|
|
758
|
+
|
|
759
|
+
# Deprecated: use `source.drop.audio`
|
|
760
|
+
# @flag deprecated
|
|
761
|
+
def drop_audio(%argsof(source.drop.audio), s) =
|
|
762
|
+
deprecated("drop_audio", "source.drop.audio")
|
|
763
|
+
source.drop.audio(%argsof(source.drop.audio), s)
|
|
764
|
+
end
|
|
765
|
+
|
|
766
|
+
# Deprecated: use `source.drop.video`
|
|
767
|
+
# @flag deprecated
|
|
768
|
+
def drop_video(%argsof(source.drop.video), s) =
|
|
769
|
+
deprecated("drop_video", "source.drop.video")
|
|
770
|
+
source.drop.video(%argsof(source.drop.video), s)
|
|
771
|
+
end
|
|
772
|
+
|
|
773
|
+
# Deprecated: use `source.drop.midi`
|
|
774
|
+
# @flag deprecated
|
|
775
|
+
def drop_midi(%argsof(source.drop.midi), s) =
|
|
776
|
+
deprecated("drop_midi", "source.drop.midi")
|
|
777
|
+
source.drop.midi(%argsof(source.drop.midi), s)
|
|
778
|
+
end
|
|
779
|
+
|
|
780
|
+
# Deprecated: use `source.drop.metadata`
|
|
781
|
+
# @flag deprecated
|
|
782
|
+
def drop_metadata(%argsof(source.drop.metadata), s) =
|
|
783
|
+
deprecated("drop_metadata", "source.drop.metadata")
|
|
784
|
+
source.drop.metadata(%argsof(source.drop.metadata), s)
|
|
785
|
+
end
|
|
786
|
+
|
|
787
|
+
# Deprecated: use `source.stereo`
|
|
788
|
+
# @flag deprecated
|
|
789
|
+
def audio_to_stereo(~id=null, s) =
|
|
790
|
+
deprecated("audio_to_stereo", "stereo")
|
|
791
|
+
stereo(id=id, s)
|
|
792
|
+
end
|
|
793
|
+
|
|
794
|
+
# Deprecated: use `source.tracks` and `source`
|
|
795
|
+
# @flag deprecated
|
|
796
|
+
def merge_tracks(~id=null, s) =
|
|
797
|
+
deprecated("merge_tracks", "source")
|
|
798
|
+
let {track_marks = _, ...tracks} = source.tracks(s)
|
|
799
|
+
source(id=id, tracks)
|
|
800
|
+
end
|
|
801
|
+
|
|
802
|
+
%ifdef compress
|
|
803
|
+
# Deprecated: use `compress`
|
|
804
|
+
# @flag deprecated
|
|
805
|
+
def compress.old(~id=null, s) =
|
|
806
|
+
deprecated("compress.old", "compress")
|
|
807
|
+
compress(id=id, s)
|
|
808
|
+
end
|
|
809
|
+
%endif
|
|
810
|
+
|
|
811
|
+
# Deprecated: use `thread.pause`
|
|
812
|
+
# @flag deprecated
|
|
813
|
+
def sleep(s) =
|
|
814
|
+
deprecated("sleep", "thread.pause")
|
|
815
|
+
thread.pause(s)
|
|
816
|
+
end
|
|
817
|
+
|
|
818
|
+
# Deprecated: use `video.add_rectangle`.
|
|
819
|
+
# @flag deprecated
|
|
820
|
+
def video.rectangle(%argsof(video.add_rectangle), s) =
|
|
821
|
+
video.add_rectangle(%argsof(video.add_rectangle), s)
|
|
822
|
+
end
|
|
823
|
+
|
|
824
|
+
# Deprecated: use `video.add_line`.
|
|
825
|
+
# @flag deprecated
|
|
826
|
+
def video.line(%argsof(video.add_line), src, tgt, s) =
|
|
827
|
+
video.add_line(%argsof(video.add_line), src, tgt, s)
|
|
828
|
+
end
|
|
829
|
+
|
|
830
|
+
# Deprecated: integrated into requests resolution.
|
|
831
|
+
# @flag deprecated
|
|
832
|
+
def cue_cut(
|
|
833
|
+
~id=null(""),
|
|
834
|
+
~cue_in_metadata="",
|
|
835
|
+
~cue_out_metadata="",
|
|
836
|
+
~on_cue_in=(fun () -> ()),
|
|
837
|
+
~on_cue_out=(fun () -> ()),
|
|
838
|
+
s
|
|
839
|
+
) =
|
|
840
|
+
ignore(id)
|
|
841
|
+
ignore(cue_in_metadata)
|
|
842
|
+
ignore(cue_out_metadata)
|
|
843
|
+
ignore(on_cue_in)
|
|
844
|
+
ignore(on_cue_out)
|
|
845
|
+
log.severe(
|
|
846
|
+
label="lang.deprecated",
|
|
847
|
+
"WARNING: cue_cut has been removed and integrated directly into requests \
|
|
848
|
+
resolution! This operator can be safely removed from your script now."
|
|
849
|
+
)
|
|
850
|
+
s
|
|
851
|
+
end
|
|
852
|
+
|
|
853
|
+
# Deprecated: use the on_metadata source method
|
|
854
|
+
# @flag deprecated
|
|
855
|
+
def on_metadata(~id:_, s, fn) =
|
|
856
|
+
log.severe(
|
|
857
|
+
label="lang.deprecated",
|
|
858
|
+
"Use the on_metadata source method!"
|
|
859
|
+
)
|
|
860
|
+
source.methods(s).on_metadata(synchronous=true, fn)
|
|
861
|
+
s
|
|
862
|
+
end
|
|
863
|
+
|
|
864
|
+
# Deprecated: use the on_track source method
|
|
865
|
+
# @flag deprecated
|
|
866
|
+
def on_track(~id:_, s, fn) =
|
|
867
|
+
log.severe(
|
|
868
|
+
label="lang.deprecated",
|
|
869
|
+
"Use the on_track source method!"
|
|
870
|
+
)
|
|
871
|
+
source.methods(s).on_track(synchronous=true, fn)
|
|
872
|
+
s
|
|
873
|
+
end
|
|
874
|
+
|
|
875
|
+
# Deprecated: use the last_metadata source method
|
|
876
|
+
# @flag deprecated
|
|
877
|
+
def source.last_metadata(~id:_, s) =
|
|
878
|
+
log.severe(
|
|
879
|
+
label="lang.deprecated",
|
|
880
|
+
"Use the last_metadata source method!"
|
|
881
|
+
)
|
|
882
|
+
source.methods(s).last_metadata()
|
|
883
|
+
end
|
|
884
|
+
|
|
885
|
+
# Deprecated: use the on_frame source method
|
|
886
|
+
# @flag deprecated
|
|
887
|
+
def source.on_frame(~id:_, ~before=true, s, fn) =
|
|
888
|
+
log.severe(
|
|
889
|
+
label="lang.deprecated",
|
|
890
|
+
"Use the on_frame source method!"
|
|
891
|
+
)
|
|
892
|
+
source.methods(s).on_frame(synchronous=true, before=before, fn)
|
|
893
|
+
end
|
|
894
|
+
|
|
895
|
+
# Deprecated: use the on_position source method
|
|
896
|
+
# @flag deprecated
|
|
897
|
+
def source.on_offset(
|
|
898
|
+
~id:_,
|
|
899
|
+
~force:allow_partial=false,
|
|
900
|
+
~offset:position,
|
|
901
|
+
fn,
|
|
902
|
+
s
|
|
903
|
+
) =
|
|
904
|
+
log.severe(
|
|
905
|
+
label="lang.deprecated",
|
|
906
|
+
"Use the on_position source method!"
|
|
907
|
+
)
|
|
908
|
+
source.methods(s).on_position(
|
|
909
|
+
synchronous=true,
|
|
910
|
+
remaining=false,
|
|
911
|
+
allow_partial=allow_partial,
|
|
912
|
+
position=position,
|
|
913
|
+
fn
|
|
914
|
+
)
|
|
915
|
+
end
|
|
916
|
+
|
|
917
|
+
# Deprecated: use the on_position source method
|
|
918
|
+
# @flag deprecated
|
|
919
|
+
def source.on_end(~id:_, ~delay:position, s, fn) =
|
|
920
|
+
log.severe(
|
|
921
|
+
label="lang.deprecated",
|
|
922
|
+
"Use the on_position source method!"
|
|
923
|
+
)
|
|
924
|
+
source.methods(s).on_position(
|
|
925
|
+
synchronous=true,
|
|
926
|
+
remaining=true,
|
|
927
|
+
allow_partial=false,
|
|
928
|
+
position=position,
|
|
929
|
+
fn
|
|
930
|
+
)
|
|
931
|
+
end
|
|
932
|
+
|
|
933
|
+
# Deprecated: use the insert_metadata source method
|
|
934
|
+
# @flag deprecated
|
|
935
|
+
def insert_metadata(~id:_=null, s) =
|
|
936
|
+
log.severe(
|
|
937
|
+
label="lang.deprecated",
|
|
938
|
+
"WARNING: `insert_metadata` operator is deprecated. Please use the \
|
|
939
|
+
`insert_metadata` source method!"
|
|
940
|
+
)
|
|
941
|
+
source.methods(s)
|
|
942
|
+
end
|
|
943
|
+
|
|
944
|
+
# Deprecated: use `normalize_track_gain`
|
|
945
|
+
# @flag deprecated
|
|
946
|
+
def replaygain(~id=null, s) =
|
|
947
|
+
log.severe(
|
|
948
|
+
label="lang.deprecated",
|
|
949
|
+
"Use the normalize_track_gain operator!"
|
|
950
|
+
)
|
|
951
|
+
|
|
952
|
+
def add_legacy_meta(m) =
|
|
953
|
+
if
|
|
954
|
+
m["replaygain_track_gain"] != ""
|
|
955
|
+
and m[settings.normalize_track_gain_metadata()] == ""
|
|
956
|
+
then
|
|
957
|
+
[(settings.normalize_track_gain_metadata(), m["replaygain_track_gain"])]
|
|
958
|
+
else
|
|
959
|
+
[]
|
|
960
|
+
end
|
|
961
|
+
end
|
|
962
|
+
|
|
963
|
+
s = metadata.map(add_legacy_meta, s)
|
|
964
|
+
|
|
965
|
+
amplify(id=id, override=settings.normalize_track_gain_metadata(), 1., s)
|
|
966
|
+
end
|
|
967
|
+
|
|
968
|
+
# Deprecated: use json.object
|
|
969
|
+
# @flag deprecated
|
|
970
|
+
def replaces json() =
|
|
971
|
+
log.severe(
|
|
972
|
+
label="lang.deprecated",
|
|
973
|
+
"Use `json.object`"
|
|
974
|
+
)
|
|
975
|
+
json.object()
|
|
976
|
+
end
|