* [Comm] Как понизить битрейт mp3?
@ 2008-10-04 16:57 Ilis
2008-10-04 17:00 ` Andrey Rahmatullin
2008-10-05 7:18 ` Vladimir A. Svyatoshenko
0 siblings, 2 replies; 10+ messages in thread
From: Ilis @ 2008-10-04 16:57 UTC (permalink / raw)
To: ALT Linux Community general discussions
Как понизить битрейт mp3?
Музыка хранится в 320 kbps, но в одногиговый плейер такой вмещается
маловато, а качество излишнее...
Пока воображение подсказывает mpg123 - | lame -
но так потеряются теги.
Ни разу с кодирование аудио не сталкивался, поэтому прошу подсказать
какой-нибудь рабочий пример, а потом детали я доковыряю...
Заранее спасибо!
--
Кругликов Илья
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [Comm] Как понизить битрейт mp3?
2008-10-04 16:57 [Comm] Как понизить битрейт mp3? Ilis
@ 2008-10-04 17:00 ` Andrey Rahmatullin
2008-10-04 17:55 ` Ilis
2008-10-05 7:18 ` Vladimir A. Svyatoshenko
1 sibling, 1 reply; 10+ messages in thread
From: Andrey Rahmatullin @ 2008-10-04 17:00 UTC (permalink / raw)
To: community
[-- Attachment #1: Type: text/plain, Size: 284 bytes --]
On Sat, Oct 04, 2008 at 10:57:53PM +0600, Ilis wrote:
> Как понизить битрейт mp3?
lame
--
WBR, wRAR (ALT Linux Team)
Powered by the ALT Linux fortune(8):
> rpm должен работать при любой погоде...
... при условии, что эта погода хорошая и не меняется.
-- ldv in devel@
[-- Attachment #2: Digital signature --]
[-- Type: application/pgp-signature, Size: 197 bytes --]
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [Comm] Как понизить битрейт mp3?
2008-10-04 17:00 ` Andrey Rahmatullin
@ 2008-10-04 17:55 ` Ilis
2008-10-04 19:04 ` Kharitonov A. Dmitry
0 siblings, 1 reply; 10+ messages in thread
From: Ilis @ 2008-10-04 17:55 UTC (permalink / raw)
To: ALT Linux Community general discussions
4 октября 2008 г. 23:00 пользователь Andrey Rahmatullin
<wrar@altlinux.ru> написал:
> On Sat, Oct 04, 2008 at 10:57:53PM +0600, Ilis wrote:
>> Как понизить битрейт mp3?
> lame
>
Спасибо, очень помогло! Очень...
>> Пока воображение подсказывает mpg123 - | lame -
>> но так потеряются теги.
С понижением битрейта разобрался, достаточно просто lame... С ходу
подумал, глядя на примеры, что он енкодит только wav и raw, оказалось,
и mp3 тоже.
Теперь теги
По поводу тегов, думаю, услышу волшебное слово mp3info
--
Кругликов Илья
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [Comm] Как понизить битрейт mp3?
2008-10-04 17:55 ` Ilis
@ 2008-10-04 19:04 ` Kharitonov A. Dmitry
2008-10-05 4:51 ` Ilis
0 siblings, 1 reply; 10+ messages in thread
From: Kharitonov A. Dmitry @ 2008-10-04 19:04 UTC (permalink / raw)
To: ALT Linux Community general discussions
[-- Attachment #1: Type: text/plain, Size: 292 bytes --]
> С понижением битрейта разобрался, достаточно просто lame... С ходу
> подумал, глядя на примеры, что он енкодит только wav и raw, оказалось,
> и mp3 тоже.
>
> Теперь теги
> По поводу тегов, думаю, услышу волшебное слово mp3info
>
>
>
Ну с тегами всё совсем не просто...
Гляньте скрипт
[-- Attachment #2: encoder.sh --]
[-- Type: text/plain, Size: 7748 bytes --]
#!/bin/bash
# ðÒÏ×ÅÒËÁ ÎÁÌÉÞÉÑ ÎÅÏÂÈÏÄÉÍÙÈ ÐÒÏÇÒÁÍÍ
ex=0;
if ! which madplay &> /dev/null; then echo "${0##*/}: madplay is not found"; ex=1; fi
if ! which id3v2 &> /dev/null; then echo "${0##*/}: id3v2 is not found"; ex=1; fi
if ! which normalize &> /dev/null; then echo "${0##*/}: normalize is not found"; ex=1; fi
if ! which mp3info &> /dev/null; then echo "${0##*/}: mp3info is not found"; ex=1; fi
if ! which lame &> /dev/null; then echo "${0##*/}: lame is not found"; ex=1; fi
if ((ex)); then exit 1; fi
# ðÏÌÕÞÅÎÉÅ ËÏÌÉÞÅÓÔ×Á ÐÒÏÃÅÓÓÏÒÏ× ÄÌÑ ÏÒÇÁÎÉÚÁÃÉÉ ÐÁÒÁÌÌÅÊÎÙÈ ×ÙÞÉÓÌÅÎÉÊ
NPROCS=`egrep -cs ^cpu[0-9]+ /proc/stat`
[ "$NPROCS" -gt 1 ] 2>/dev/null || NPROCS=1
((NPROCS=NPROCS*2))
n=1
PROCFILE="/tmp/${0##*/}-$n.proc"
while [ -f "$PROCFILE" ]; do ((n++)); PROCFILE="/tmp/${0##*/}-$n.proc"; done
r=$(echo -ne "\r")
OUTPUT=
INPUT=
MAXBITRATE=128
AVRBITRATE=112
RESAMPLE=
CRESAMPLE=
BOOK=
TAG3=
VALID_BITRATE=( 32 40 48 56 64 80 96 112 128 160 192 224 256 320 )
if (($#>=1)); then
for opt in "$@"; do
case "$opt" in
--book=*)
MAXBITRATE="$(echo "$opt" | cut -d '=' -f 2)"
i=1; while ((${VALID_BITRATE[i]}<MAXBITRATE)); do ((i++));
if((${VALID_BITRATE[i]}==320)); then break; fi
done
MAXBITRATE=${VALID_BITRATE[i]}
if ((MAXBITRATE!=320)); then MAXBITRATE=${VALID_BITRATE[i+1]}; fi
AVRBITRATE=${VALID_BITRATE[i-1]}
BOOK="$opt"
;;
--resample=*)
RESAMPLE="$(echo "$opt" | cut -d '=' -f 2)"
CRESAMPLE="--resample $RESAMPLE"
;;
--proc=*)
PROCFILE="$(echo "$opt" | cut -d '=' -f 2)"
;;
--base=*)
BASE="$(echo "$opt" | cut -d '=' -f 2)"
;;
*)
if [ -z "$INPUT" ]; then INPUT="$opt"; continue; fi
if [ -z "$OUTPUT" ]; then OUTPUT="$opt"; continue; fi
;;
esac
done
fi
echo "$PROCFILE"
[ -f "$PROCFILE" ] || :>"$PROCFILE"
# exit 0
if [ -z "$BASE" ]; then BASE="$INPUT"; fi
if [ -z "$OUTPUT" ]; then OUTPUT="$INPUT"; fi
while [ "${OUTPUT:((${#OUTPUT}-1))}" == "/" ]; do OUTPUT="${OUTPUT:0:((${#OUTPUT}-1))}"; done
if [ -d "$INPUT" ]; then
cd "$INPUT";
nest=1
while [ "$INPUT" != "$(echo "$INPUT" | cut -d '/' -f -$nest)" ]; do
diroutput=$(echo "$INPUT" | cut -d '/' -f -$nest)
if [ "${diroutput:0:${#BASE}}" == "$BASE" ]; then
diroutput=${diroutput/#$BASE}
if ! [ -d "$OUTPUT/$diroutput" ]; then mkdir "$OUTPUT/$diroutput" || exit 1; fi
fi
((nest++))
done
diroutput="$(echo "$INPUT" | cut -d '/' -f -$nest)"
diroutput="${diroutput/#$BASE}"
while [ "${diroutput:0:1}" == "/" ]; do diroutput="${diroutput:1}"; done
if ! [ -d "$OUTPUT/$diroutput" ]; then mkdir -p "$OUTPUT/$diroutput" || exit 1; fi
MASK='*';
fi
if [ -f "$INPUT" ]; then MASK="${INPUT##*/}"; INPUT="${INPUT%$MASK}"; fi
cd "$INPUT";
if [ -z "$MASK" ]; then exit 1; fi
[ "$MASK" == '*' ] && MASK=
ls -1b $MASK | {
while read file; do
if [ -d "$file" ]; then
"$0" "$INPUT/$file" "$OUTPUT" "--base=$BASE" "$BOOK" "$CRESAMPLE" "--proc=$PROCFILE";
fi
if [ -f "$file" ]; then
case $(echo ${file##*\.} | tr A-Z a-z) in
mp3)
OUTFILE="$OUTPUT/$diroutput/$file"; OUTFILE="${OUTFILE%.*}"
# rm -f "$OUTPUT/tmp.id3"
# ðÏÌÕÞÅÎÉÅ ÉÎÆÏÒÍÁÃÉÉ É ÕÄÁÌÅÎÉÅ ÓÉÍ×ÏÌÁ ×ÏÚ×ÒÁÔ ËÁÒÅÔËÉ
:>"$OUTFILE.mp3"
id3v2 -l "$file" | sed -e "s/$r//g" | {
while read sfield; do
case ${sfield:0:4} in
id3v | AENC | APIC | COMM | COMR | ENCR | EQUA | ETCO | \
GEOB | GRID | IPLS | LINK | MCDI | MLLT | OWNE | PRIV | \
PCNT | POPM | POSS | RBUF | RVAD | RVRB | SYLT | SYTC | \
TALB | TBPM | TCOM | TCON | TCOP | TDAT | TDLY | TENC | \
TEXT | TFLT | TIME | TIT1 | TIT2 | TIT3 | TKEY | TLAN | \
TLEN | TMED | TOAL | TOFN | TOLY | TOPE | TORY | TOWN | \
TPE1 | TPE2 | TPE3 | TPE4 | TPOS | TPUB | TRCK | TRDA | \
TRSN | TRSO | TSIZ | TSRC | TSSE | TXXX | TYER | UFID | \
USER | USLT | WCOM | WCOP | WOAF | WOAR | WOAS | WORS | \
WPAY | WPUB | WXXX)
echo -ne "\\n$sfield">>"$OUTFILE.mp3"
;;
*)
echo -n "\\\\r\\\\n$sfield">>"$OUTFILE.mp3"
;;
esac
done
}
TAG3="$(cat "$OUTFILE.mp3")"
# id3v2 -l "$TEMPFILE";
# cat "$OUTPUT/tmp.id3"
if echo "$TAG3" | grep "id3v1 tag info for"> /dev/null; then
Track=$(mp3info -p "%n" "$INPUT/$file")
Artist=$(mp3info -p "%a" "$INPUT/$file")
Comment=$(mp3info -p "%c" "$INPUT/$file")
Genre=$(mp3info -p "%G" "$INPUT/$file")
Album=$(mp3info -p "%l" "$INPUT/$file")
Title=$(mp3info -p "%t" "$INPUT/$file")
Year=$(mp3info -p "%y" "$INPUT/$file")
fi
# ïÖÉÄÁÎÉÅ ÏÓ×ÏÂÏÖÄÅÎÉÑ ÓÌÏÔÁ ÐÒÏÃÅÓÓÏÒÁ
NSLOT=
while [ -z "$NSLOT" ]; do
NSLOT=$(cat "$PROCFILE" | { while read proc; do
if [ "${proc:0:4}" == "SLOT" ]; then
proc=${proc:4};
((NSLOT=${proc%%=*}+0))
((proc=${proc##*=}+0))
if ((NSLOT>0)) & ((NSLOT<=NPROCS)) & ( ! ps -p "$proc"> /dev/null 2>&1 ); then
echo $NSLOT;
break;
fi
fi
done
[ -z "$NSLOT" ] && echo 0
})
sleep 2
done
((NSLOT<1)) && NSLOT=1
echo "$(date) SLOT#$NSLOT=$file"
{
madplay -o "wave:$OUTFILE.wav" "$INPUT/$file" > /dev/null 2>&1 # && echo -e "\nDecoding DONE"
normalize --peak "$OUTFILE.wav" > /dev/null 2>&1
lame $CRESAMPLE --abr $AVRBITRATE -B $MAXBITRATE -q 0 "$OUTFILE.wav" "$OUTFILE.mp3" > /dev/null 2>&1
if echo "$TAG3" | grep "id3v1 tag info for"> /dev/null; then
mp3info -a "$Artist" "$OUTFILE.mp3" > /dev/null 2>&1
mp3info -c "$Comment" "$OUTFILE.mp3" > /dev/null 2>&1
mp3info -g "$Genre" "$OUTFILE.mp3" > /dev/null 2>&1
mp3info -l "$Album" "$OUTFILE.mp3" > /dev/null 2>&1
mp3info -n "$Track" "$OUTFILE.mp3" > /dev/null 2>&1
mp3info -y "$Year" "$OUTFILE.mp3" > /dev/null 2>&1
mp3info -t "$Title" "$OUTFILE.mp3" > /dev/null 2>&1
fi
id3v2=1
echo "$TAG3" | {
while read sfield; do
if (( id3v2 )); then
if echo "$TAG3" | grep "id3v2 tag info for"> /dev/null; then id3v2=0; fi
continue
fi
fieldname=${sfield:0:4}
case $fieldname in
TCON) fieldcont=" "$(echo "$sfield" | cut -d ':' -f 2- | cut -d '(' -f 2 | cut -d ')' -f 1) ;;
WXXX | COMM) fieldcont=$(echo "$sfield" | cut -d ':' -f 3-) ;;
*) fieldcont=$(echo "$sfield" | cut -d ':' -f 2-) ;;
esac
while [ "${fieldcont:0:1}" == " " ]; do fieldcont=${fieldcont:1}; done
[ -n "$fieldcont" ] && id3v2 --id3v2-only "--$fieldname" "$(echo -e "$fieldcont")" "$OUTFILE.mp3" > /dev/null 2>&1
done
}
rm -f "$OUTFILE.wav" > /dev/null 2>&1
echo "$(date) Stop#$NSLOT=$file"
} &
proc=$!
:>"$PROCFILE.proc"
for ((SLOT=1; SLOT<=NPROCS; SLOT++)); do
SLOTproc=$(cat "$PROCFILE" | { while read proc; do
if [ "${proc:0:4}" == "SLOT" ]; then
proc=${proc:4};
((NSLOT=${proc%%=*}+0))
((proc=${proc##*=}+0))
if ((NSLOT==SLOT)); then
echo $proc;
break;
fi
fi
done })
(( SLOTproc=SLOTproc+0 ))
if ((NSLOT==SLOT)); then
echo "SLOT$SLOT=$proc" >> "$PROCFILE.proc"
else
echo "SLOT$SLOT=$SLOTproc" >> "$PROCFILE.proc"
fi
done
mv "$PROCFILE.proc" "$PROCFILE"
;;
*) cp -v "$INPUT/$file" "$OUTPUT/$diroutput/$file" ;;
esac
fi
done
}
if ! echo "$@" | grep -e "--proc="> /dev/null 2>&1; then
# ïÖÉÄÁÎÉÅ ÏÓ×ÏÂÏÖÄÅÎÉÑ ÐÒÏÃÅÓÓÏÒÁ
echo "Ending..."
SLOTWAIT=1
while [ -n "$SLOTWAIT" ]; do
SLOTWAIT=$(cat "$PROCFILE" | { while read proc; do
if [ "${proc:0:4}" == "SLOT" ]; then
proc=${proc:4};
((SLOT[${proc%%=*}]=${proc##*=}+0))
fi
done
for ((NSLOT=1; NSLOT<=NPROCS; NSLOT++)); do
# echo "SLOT[$NSLOT]=${SLOT[NSLOT]}"
if ((${SLOT[NSLOT]})) && ps -p "${SLOT[NSLOT]}"> /dev/null 2>&1; then
echo -n 1;
fi
done
})
[ -n "$SLOTWAIT" ] && sleep 2
done
rm -f "$PROCFILE"
fi
echo "Process fineshed at "`date`
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [Comm] Как понизить битрейт mp3?
2008-10-04 19:04 ` Kharitonov A. Dmitry
@ 2008-10-05 4:51 ` Ilis
2008-10-05 6:34 ` Kharitonov A. Dmitry
0 siblings, 1 reply; 10+ messages in thread
From: Ilis @ 2008-10-05 4:51 UTC (permalink / raw)
To: ALT Linux Community general discussions
5 октября 2008 г. 1:04 пользователь Kharitonov A. Dmitry
<kharpost@rambler.ru> написал:
>
> Ну с тегами всё совсем не просто...
> Гляньте скрипт
>
Глянул... Так и думал, что придётся читать и по очереди их сохранять.
Не нашёл в бранче id3v2, но его вроде легко заменяет mp3info
--
Кругликов Илья
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [Comm] Как понизить битрейт mp3?
2008-10-05 4:51 ` Ilis
@ 2008-10-05 6:34 ` Kharitonov A. Dmitry
2008-10-05 18:11 ` Ilis
0 siblings, 1 reply; 10+ messages in thread
From: Kharitonov A. Dmitry @ 2008-10-05 6:34 UTC (permalink / raw)
To: ALT Linux Community general discussions
> Глянул... Так и думал, что придётся читать и по очереди их сохранять.
>
> Не нашёл в бранче id3v2, но его вроде легко заменяет mp3info
>
>
Если посмотреть еще внимательней, то можно увидеть, что mp3info там тоже
используется. mp3info работает только с тегами id3v1. id3v2 криво
работает с тегами id3v1.
Алексей Авдеев по моей просьбе реанимировал id3v2. Этот пакет должен
быть в сизифе.
Еще вам стоит глянуть на eyeD3.
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [Comm] Как понизить битрейт mp3?
2008-10-04 16:57 [Comm] Как понизить битрейт mp3? Ilis
2008-10-04 17:00 ` Andrey Rahmatullin
@ 2008-10-05 7:18 ` Vladimir A. Svyatoshenko
1 sibling, 0 replies; 10+ messages in thread
From: Vladimir A. Svyatoshenko @ 2008-10-05 7:18 UTC (permalink / raw)
To: community
On Sat, 4 Oct 2008 22:57:53 +0600
Ilis wrote:
> Как понизить битрейт mp3?
> Музыка хранится в 320 kbps, но в одногиговый плейер такой вмещается
> маловато, а качество излишнее...
>
> Пока воображение подсказывает mpg123 - | lame -
> но так потеряются теги.
>
> Ни разу с кодирование аудио не сталкивался, поэтому прошу подсказать
> какой-нибудь рабочий пример, а потом детали я доковыряю...
>
> Заранее спасибо!
>
Я уже давно пользуюсь для перекодировки gnormalize (есть в Sisyphus),
отключаеш нормализацию и все.
Недавно еще появился soundKonverter (есть в branch).
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [Comm] Как понизить битрейт mp3?
2008-10-05 6:34 ` Kharitonov A. Dmitry
@ 2008-10-05 18:11 ` Ilis
2008-10-05 18:13 ` Mikhail Gusarov
2008-10-06 19:43 ` Kharitonov A. Dmitry
0 siblings, 2 replies; 10+ messages in thread
From: Ilis @ 2008-10-05 18:11 UTC (permalink / raw)
To: ALT Linux Community general discussions
5 октября 2008 г. 12:34 пользователь Kharitonov A. Dmitry
<kharpost@rambler.ru> написал:
>
>> Глянул... Так и думал, что придётся читать и по очереди их сохранять.
>>
>> Не нашёл в бранче id3v2, но его вроде легко заменяет mp3info
>>
>>
>
> Если посмотреть еще внимательней, то можно увидеть, что mp3info там тоже
> используется. mp3info работает только с тегами id3v1. id3v2 криво работает
> с тегами id3v1.
Конечно, я посмотрел внимательно, по крайней мере на то, что используется...
> Алексей Авдеев по моей просьбе реанимировал id3v2. Этот пакет должен быть в
> сизифе.
В сизиф не полезу пока :)
> Еще вам стоит глянуть на eyeD3.
>
Глянул... Тэги в вин-1251 он привёл к какой-то западноевропейской
кодировке, так что iconv-ом я их не смог в русские конвертнуть...
Ни одна (из двух) утилит не показывает, в какой кодировке записаны
теги... Вообще, в них хранится эта информация?
--
Кругликов Илья
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [Comm] Как понизить битрейт mp3?
2008-10-05 18:11 ` Ilis
@ 2008-10-05 18:13 ` Mikhail Gusarov
2008-10-06 19:43 ` Kharitonov A. Dmitry
1 sibling, 0 replies; 10+ messages in thread
From: Mikhail Gusarov @ 2008-10-05 18:13 UTC (permalink / raw)
To: ALT Linux Community general discussions
[-- Attachment #1: Type: text/plain, Size: 367 bytes --]
Twas brillig at 00:11:37 06.10.2008 UTC+06 when ilis.krou@gmail.com did gyre and gimble:
I> Ни одна (из двух) утилит не показывает, в какой кодировке записаны
I> теги... Вообще, в них хранится эта информация?
Нет.
http://www.freesource.info/wiki/TZ/IDTags
--
[-- Attachment #2: Type: application/pgp-signature, Size: 196 bytes --]
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [Comm] Как понизить битрейт mp3?
2008-10-05 18:11 ` Ilis
2008-10-05 18:13 ` Mikhail Gusarov
@ 2008-10-06 19:43 ` Kharitonov A. Dmitry
1 sibling, 0 replies; 10+ messages in thread
From: Kharitonov A. Dmitry @ 2008-10-06 19:43 UTC (permalink / raw)
To: ALT Linux Community general discussions
Ilis пишет:
> 5 октября 2008 г. 12:34 пользователь Kharitonov A. Dmitry
> <kharpost@rambler.ru> написал:
>
>>> Глянул... Так и думал, что придётся читать и по очереди их сохранять.
>>>
>>> Не нашёл в бранче id3v2, но его вроде легко заменяет mp3info
>>>
>>>
>>>
>> Если посмотреть еще внимательней, то можно увидеть, что mp3info там тоже
>> используется. mp3info работает только с тегами id3v1. id3v2 криво работает
>> с тегами id3v1.
>>
>
> Конечно, я посмотрел внимательно, по крайней мере на то, что используется...
>
>
>> Алексей Авдеев по моей просьбе реанимировал id3v2. Этот пакет должен быть в
>> сизифе.
>>
>
> В сизиф не полезу пока :)
>
>
>> Еще вам стоит глянуть на eyeD3.
>>
>>
>
> Глянул... Тэги в вин-1251 он привёл к какой-то западноевропейской
> кодировке, так что iconv-ом я их не смог в русские конвертнуть...
>
> Ни одна (из двух) утилит не показывает, в какой кодировке записаны
> теги... Вообще, в них хранится эта информация?
>
>
Если тег записан с указанием кодировки, то id3v2 показывает
^ permalink raw reply [flat|nested] 10+ messages in thread
end of thread, other threads:[~2008-10-06 19:43 UTC | newest]
Thread overview: 10+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2008-10-04 16:57 [Comm] Как понизить битрейт mp3? Ilis
2008-10-04 17:00 ` Andrey Rahmatullin
2008-10-04 17:55 ` Ilis
2008-10-04 19:04 ` Kharitonov A. Dmitry
2008-10-05 4:51 ` Ilis
2008-10-05 6:34 ` Kharitonov A. Dmitry
2008-10-05 18:11 ` Ilis
2008-10-05 18:13 ` Mikhail Gusarov
2008-10-06 19:43 ` Kharitonov A. Dmitry
2008-10-05 7:18 ` Vladimir A. Svyatoshenko
ALT Linux Community general discussions
This inbox may be cloned and mirrored by anyone:
git clone --mirror http://lore.altlinux.org/community/0 community/git/0.git
# If you have public-inbox 1.1+ installed, you may
# initialize and index your mirror using the following commands:
public-inbox-init -V2 community community/ http://lore.altlinux.org/community \
mandrake-russian@linuxteam.iplabs.ru community@lists.altlinux.org community@lists.altlinux.ru community@lists.altlinux.com
public-inbox-index community
Example config snippet for mirrors.
Newsgroup available over NNTP:
nntp://lore.altlinux.org/org.altlinux.lists.community
AGPL code for this site: git clone https://public-inbox.org/public-inbox.git