
рдЕрдВрджрд░ рд╕реЗ рдЗрдВрдЯрд░рдиреЗрдЯ рдкреНрд░рд╕рд╛рд░рдг рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣рдм рдкрд░ рдХрд╛рдлреА рдХреБрдЫ рдХрд╣рд╛ рдЧрдпрд╛ рд╣реИред рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдЗрдВрдЯрд░рдиреЗрдЯ рдкреНрд░рд╕рд╛рд░рдг
рдХреА рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рд▓рд┐рдЦреА рдЧрдИ
рд╕реИрджреНрдзрд╛рдВрддрд┐рдХ рдиреАрдВрд╡ рд╣реИрдВ , рдЬреЛ рдореИрдВ рдЖрдкрдХреЛ рдкрдврд╝рдиреЗ рдХреА рд╕рд▓рд╛рд╣ рджреЗрддрд╛ рд╣реВрдВред рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ рдореИрдВ рдПрдХ рдЕрдиреНрдп рд╢реМрдХрд┐рдпрд╛ рдЗрдВрдЯрд░рдиреЗрдЯ рд░реЗрдбрд┐рдпреЛ рд╕реНрдЯреЗрд╢рди рдХреЗ рд╕рдВрдЧрдарди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░рдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛, рдЬреЛ
рдЕрд╡рд╛рдВрдЫрдиреАрдп рд░реВрдк рд╕реЗ
рдЕрд▓реНрдк -рдЬреНрдЮрд╛рдд
рд▓рд┐рдХреНрд╡рд┐рдбрд╕реИрдк 1.0.1 рдФрд░ рд╕рд░реНрд╡рд╡реНрдпрд╛рдкреА
рдЖрдЗрд╕рдХреИрд╕реНрдЯ 2.3.2 рдХреЗ рдПрдХ рд╕рдореВрд╣ рдкрд░ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИред рдпрд╣ рд▓реЗрдЦ рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рд╣реИ рдЬреЛ рдХрдо рд╕реЗ рдХрдо рд▓рдЧрднрдЧ рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рдСрдбрд┐рдпреЛ рд╕реНрдЯреНрд░реАрдо, рдЖрдЗрд╕рдХреИрд╕реНрдЯ, рд▓рд┐рдирдХреНрд╕ рдХрдВрд╕реЛрд▓ рдФрд░ рдпрд╣ рдЖрдо рддреМрд░ рдкрд░
рдХреНрдпрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдпрд╣ рдПрдХ рдиреМрд╕рд┐рдЦрд┐рдП рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рджреНрд╡рд╛рд░рд╛ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рдерд╛, рдЗрд╕рд▓рд┐рдП рдореЗрд░рд╛ рдирд┐рд░реНрдгрдп рдЗрд╖реНрдЯрддрдо рдХреЗ рд╢реАрд░реНрд╖рдХ рдХрд╛ рджрд╛рд╡рд╛ рднреА рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред
рдЖрд╡рд╢реНрдпрдХ рд╕рд╛рд░рд╛рдВрд╢ рдХрд╛рд░реНрдпрд╢реАрд▓рддрд╛
- рдордирдорд╛рдиреЗ рд╕рдордп рдХреЗ рд▓рд┐рдП рдЕрдкрдиреА рдкреНрд▓реЗрд▓рд┐рд╕реНрдЯ рдЕрд╕рд╛рдЗрди рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛
- рдСрдбрд┐рдпреЛ рд╕реНрдЯреНрд░реАрдо рдХреЗ рд▓рд┐рдП рд╕реНрд░реЛрдд рдХреЗ рд░реВрдк рдореЗрдВ OGG, MP3, FLAC рдкрд┐рдХрдЕрдк рдХрд╛ рд╕рдорд░реНрдерди
- рдЧрддрд┐рд╢реАрд▓ рд╡рд┐рдиреНрдпрд╛рд╕
- рд░реЗрдбрд┐рдпреЛ рдХреЗ рд▓рд┐рдП рд╕рдВрдкрд╛рджрди рд╕рд╛рдордЧреНрд░реА рдореЗрдВ рдЖрд╕рд╛рдиреА
- рд▓рд┐рдирдХреНрд╕ рдХреЗ рддрд╣рдд рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ
- рдиреМрд╕рд┐рдЦрд┐рдпрд╛ рд▓рд┐рдирдХреНрд╕ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рд▓рд┐рдП рдпрд╣ рд╕рдм рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдФрд░ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛
рдЗрд╕ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд╡рд┐рднрд┐рдиреНрди рддрд░реАрдХреЛрдВ рдХреЗ рд▓рдВрдмреЗ рдкрд░реАрдХреНрд╖рдг рдХреЗ рдмрд╛рдж, рдореИрдВ рд▓рд┐рдХреНрд╡рд┐рдбрд╕реИрдк + рдЖрдЗрд╕рдХрд╛рд╕реНрдЯ рдкрд░ рдмрд╕ рдЧрдпрд╛ред рдЙрддреНрддрд░рд╛рд░реНрджреНрдз рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдФрд░ рд╡реНрдпрд╛рдкрдХ рдЙрдкрдпреЛрдЧ рдХреЗ рдЕрдиреБрдкрд╛рд▓рди рдХреЗ рд▓рд┐рдП рд▓рд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ (рд╕рд┐рджреНрдзрд╛рдВрдд рд░реВрдк рдореЗрдВ, рдореИрдВрдиреЗ рдПрдирд╛рд▓реЙрдЧреНрд╕ рдХреА рддрд▓рд╛рд╢ рднреА рдирд╣реАрдВ рдХреА рдереА), рдФрд░ рд▓рд┐рдХреНрд╡рд┐рдбрд╕реИрдк рдЕрдкрдиреА рдХрд╛рд░реНрдпрд╛рддреНрдордХ рд╕реНрдХреНрд░рд┐рдкреНрдЯрд┐рдВрдЧ рднрд╛рд╖рд╛ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЙрдкрд▓рдмреНрдз рдЕрджреНрднреБрдд рдХреНрд╖рдорддрд╛рдУрдВ рдХреЗ рд▓рд┐рдПред рдЙрдирд╕реЗ рдкрд╣рд▓реЗ, рдореИрдВрдиреЗ ices, ices + ardj, AirTime рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд┐рдпрд╛, рдХреБрдЫ рдФрд░ рдЬреЛ рдореИрдВ рднреА рдЙрд▓реНрд▓реЗрдЦ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ рдерд╛, рд▓реЗрдХрд┐рди рдЙрди рд╕рднреА рдиреЗ рдХрд┐рд╕реА рднреА рддрд░рд╣ рдореБрдЭреЗ рд╕реВрдЯ рдирд╣реАрдВ рдХрд┐рдпрд╛ред рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдореИрдВрдиреЗ рд▓рд┐рдХреНрд╡рд┐рдбрд╕реИрдк рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ред рдХрдорд┐рдпреЛрдВ рдореЗрдВ рд╕реЗ, рдореИрдВрдиреЗ рдХреЗрд╡рд▓ рдЕрдЬреНрдЮрд╛рдд рдкрд░рд┐рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдХреЗ рддрд╣рдд рдПрдХ рдЦрд╛рд▓реА рд╕реНрдЯреНрд░реАрдо рдЬрд╛рд░реА рдХрд░рдиреЗ рдкрд░ рдзреНрдпрд╛рди рджрд┐рдпрд╛ (рдлрд┐рд░ рд╕реЗ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж) - рдпрд╣ рдПрдХ рд░рд┐рдмреВрдЯ рджреНрд╡рд╛рд░рд╛ рд╣рд▓ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рдореИрдВ рдЕрдкрдиреА рд╕рд╛рд░реА рд╢рдХреНрддрд┐ рдорд╣рд╕реВрд╕ рдирд╣реАрдВ рдХрд░ рдкрд╛ рд░рд╣рд╛ рд╣реВрдВ - рд╕рднреА рджрд╕реНрддрд╛рд╡реЗрдЬ рдЕрдВрдЧреНрд░реЗрдЬреА рдореЗрдВ рд▓рд┐рдЦреЗ рдЧрдП рд╣реИрдВ, рдФрд░ рдпрд╣ рдореЗрд░реЗ рд╕рд╛рде рдЖрд╕рд╛рдиреА рд╕реЗ рдирд╣реАрдВ рдЪрд▓ рд░рд╣рд╛ рд╣реИ - рд╣рд╛рд▓рд╛рдВрдХрд┐, рдореИрдВрдиреЗ рдХреБрдЫ рд╕реАрдЦрд╛ рд╣реИ рдФрд░ рд╣рд░ рдЙрд╕ рдЪреАрдЬ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реВрдВрдЧрд╛ рдЬрд┐рд╕реЗ рдореИрдВ рд╕рдВрднрд╛рд▓ рд╕рдХрддрд╛ рд╣реВрдВред
рд╕реНрдерд╛рдкрдирд╛
рдмрд┐рдирд╛ рдХрд┐рд╕реА рд╣рд┐рдЪрдХрд┐рдЪрд╛рд╣рдЯ рдХреЗ, рдореИрдВрдиреЗ рдЕрдкрдиреЗ рд▓реИрдкрдЯреЙрдк рдкрд░ рдЦреБрд▓реЗ 12.2 x64 рдХреЗ рддрд╣рдд рдпрд╣ рд╕рдм рдЪрдорддреНрдХрд╛рд░ рдЙрдард╛рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛, рддрд╛рдХрд┐ рд▓рд┐рдХреНрд╡рд┐рдбрд╕реИрдк рдХреА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХрд╛ рдЕрдзреНрдпрдпрди рдХрд░рдирд╛ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реЛ, рдФрд░ рдЙрд╕рдХреЗ рдмрд╛рдж рд╣реА рдЗрд╕реЗ рдПрдХ рдХрд╛рд░реНрдпрд╢реАрд▓ рдорд╢реАрди рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХреЗред рдХреЗрд╡рд▓ рдЖрдЗрд╕рдХреИрд╕реНрдЯ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдореЗрдВ рдореМрдЬреВрдж рдерд╛, рд▓рд┐рдХреНрд╡рд┐рдбрд╕реИрдк рдХреЛ рдПрдХрддреНрд░ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдерд╛ред рдбреЗрдмрд┐рдпрди / рдЙрдмрдВрдЯреВ, рд╡рд┐рдВрдбреЛрдЬ, рдореИрдХ рдУрдПрд╕ рдПрдХреНрд╕, рдлреНрд░реАрдмреАрдПрд╕рдбреА рдФрд░ рдЖрд░реНрдХрд▓рд┐рдирдХреНрд╕ рдХреЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛
рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рд╡реЗрдмрд╕рд╛рдЗрдЯ рдкрд░ рддреИрдпрд╛рд░ рдХрд┐рдП рдЧрдП рдкреИрдХреЗрдЬ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
Icecast
рдореИрдВрдиреЗ рдорд╛рдирдХ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рд╕реЗ рдЖрдЗрд╕рдХрд╛рд╕реНрдЯ рдХреА рд╕реНрдерд╛рдкрдирд╛ рдХреА:
рдореИрдВ рдЖрдЗрд╕рдХреИрд╕реНрдЯ рд╡рд┐рдиреНрдпрд╛рд╕ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рд╡рд░реНрдгрди рдирд╣реАрдВ рдХрд░реВрдВрдЧрд╛, рдореИрдВ рдХреЗрд╡рд▓ рдореЗрд░реЗ рд╕рд╛рде рдХрд╛рдо рдХрд░ рд░рд╣реЗ рдЙрджрд╛рд╣рд░рдг рдХрд╛ рдПрдХ рдХрд╛рд░реНрдпрдХрд╛рд░реА рдЙрджрд╛рд╣рд░рдг рджреВрдВрдЧрд╛:
/etc/icecast.xml
<icecast> <limits> <clients>100</clients> <sources>2</sources> <threadpool>5</threadpool> <queue-size>524288</queue-size> <client-timeout>30</client-timeout> <header-timeout>15</header-timeout> <source-timeout>10</source-timeout> <burst-on-connect>1</burst-on-connect> <burst-size>65535</burst-size> </limits> <authentication> <source-password>mypass</source-password> <relay-password>mysecondpass</relay-password> <admin-user>adminuser</admin-user> <admin-password>mythirdpass</admin-password> </authentication> <hostname>localhost</hostname> <listen-socket> <port>8000</port> </listen-socket> <fileserve>1</fileserve> #_____________________________________________________________ # . , , . ices secure. <mount> <mount-name>/secure</mount-name> <hidden>1</hidden> # - <charset>UTF8</charset> # </mount> # mount' <mount> <fallback-mount>/secure</fallback-mount> # , <fallback-override>1</fallback-override> # <fallback-when-full>1</fallback-when-full> # , <mount-name>/HabraRadio_192</mount-name> # mount'. <charset>UTF8</charset> # </mount> <mount> <fallback-mount>/secure</fallback-mount> <fallback-override>1</fallback-override> <fallback-when-full>1</fallback-when-full> <mount-name>/HabraRadio_320</mount-name> <charset>UTF8</charset> </mount> <mount> <fallback-mount>/secure</fallback-mount> <fallback-override>1</fallback-override> <fallback-when-full>1</fallback-when-full> <mount-name>/HabraRadio_vorbis_avg_128</mount-name> <charset>UTF8</charset> </mount> #_____________________________________________________________ <paths> <basedir>/usr/share/icecast</basedir> <logdir>/var/log/icecast</logdir> <webroot>/usr/share/icecast/web</webroot> <adminroot>/usr/share/icecast/admin</adminroot> <alias source="/" dest="/status.xsl"/> </paths> <logging> <accesslog>access.log</accesslog> <errorlog>error.log</errorlog> <loglevel>3</loglevel> <logsize>10000</logsize> </logging> <security> <chroot>0</chroot> <changeowner> <user>icecast</user> <group>icecast</group> </changeowner> </security> </icecast>
Liquidsoap
рдбрд╛рдЙрдирд▓реЛрдб, рддреИрдпрд╛рд░:
$ git clone https://github.com/savonet/liquidsoap-full.git liquidsoap $ cd liquidsoap $ make init $ cp PACKAGES.minimal PACKAGES
рдореЗрд░реЗ рд▓рд┐рдП, рдПрдХ рдиреНрдпреВрдирддрдо рд╕реЗрдЯ рдкрд░реНрдпрд╛рдкреНрдд рд╣реИ, рд▓реЗрдХрд┐рди рдЕрдЧрд░ рдХрд┐рд╕реА рдХреЛ рдХрд┐рд╕реА рдФрд░ рдЪреАрдЬ рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ рдЖрдкрдХреЛ рдкреИрдХреНрд╕реИрдЬ рдлрд╛рдЗрд▓ рдХреЛ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред
рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЗ рд╕рд╛рдорд╛рдиреНрдп рд╕рдВрдХрд▓рди рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкреИрдХреЗрдЬ рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдП:
рд╣рдо рдПрдХрддреНрд░рд┐рдд рдХрд░рддреЗ рд╣реИрдВ:
$ ./bootstrap $ ./configure
рд╡реИрд╕реЗ, "./configure ..." рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдпрд╣ рдЬрд╛рдБрдЪрдиреЗ рдпреЛрдЧреНрдп рд╣реИ рдХрд┐ рд╣рдореЗрдВ рдЬреЛ рднреА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рд╡рд╣ рд╕рднреА рдЕрд╕реЗрдВрдмрд▓реА рдкреНрд░реЛрдЧреНрд░рд╛рдо рдореЗрдВ рдЙрдкрд▓рдмреНрдз рд╣реЛрдЧреАред рдпрд╣ рдХреЗрд╡рд▓ "./configure ..." рдХреЗ рдЕрдВрдд рдореЗрдВ рдкреНрд░рджрд░реНрд╢рд┐рдд рддрд╛рд▓рд┐рдХрд╛ рдХреЛ рджреЗрдЦрдХрд░ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рдпрд╣реА рд╣реИ, рдЖрдк "рд▓рд┐рдХреНрд╡рд┐рдбрд╕реИрдк - рдПрд╡рд░реНрд╕рди" рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдХреЗ рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЗ рдкреНрд░рджрд░реНрд╢рди рдХреА рдЬрд╛рдВрдЪ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ - рдХреЛрдИ рддреНрд░реБрдЯрд┐ рдирд╣реАрдВ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдПред
рд╣рдо рд╣рд╡рд╛ рдХреА рдЕрдиреБрд╕реВрдЪреА рдХреЗ рд╕рд╛рде рдирд┐рд░реНрджреЗрд╢рд┐рдд рд╣реЛрдВрдЧреЗ
рдорд╛рди рд▓реЗрдВ рдХрд┐ рд╣рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:
- 02: 00-06: 00 - рд░рд╛рдд рдХреА рдкреНрд▓реЗрд▓рд┐рд╕реНрдЯ
- 06: 00-09: 00 - рд╕реБрдмрд╣ рдХреА рдкреНрд▓реЗрд▓рд┐рд╕реНрдЯ
- 09: 00-19: 00 - рджрд┐рди рдХреА рдкреНрд▓реЗрд▓рд┐рд╕реНрдЯ
- рд╢рд╛рдо 7 рдмрдЬреЗ - 2 рдмрдЬреЗ - рд╢рд╛рдо рдХреА рдкреНрд▓реЗрд▓рд┐рд╕реНрдЯ
- рд╕реЛрдо, рдмреБрдз, рд╢реБрдХреНрд░ - 21: 00-22: 00 - рдПрдХ рдХрд╛рд░реНрдпрдХреНрд░рдо
- рд╕реЛрдо, рдмреБрдз, рдЧреБрд░реБ, рд╢реБрдХреНрд░ - 18: 00-19: 00 - рджреВрд╕рд░рд╛ рдХрд╛рд░реНрдпрдХреНрд░рдо
рдлрд╝рд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рд╕реНрдерд╛рди:
radio тФЬтФАтФА collection | тФВ тФЬтФАтФА efir | тФВ тФВ тФЬтФАтФА daytime | тФВ тФВ тФВ тФЬтФАтФА jingles | , тФВ тФВ тФВ тФФтФАтФА music | , тФВ тФВ тФЬтФАтФА evening | , тФВ тФВ тФВ тФЬтФАтФА jingles тФВ тФВ тФВ тФФтФАтФА music тФВ тФВ тФЬтФАтФА morning | тФВ тФВ тФВ тФЬтФАтФА jingles тФВ тФВ тФВ тФФтФАтФА music тФВ тФВ тФФтФАтФА night | тФВ тФВ тФЬтФАтФА jingles тФВ тФВ тФФтФАтФА music тФВ тФЬтФАтФА programs тФВ тФВ тФЬтФАтФА 1_prog | 1 тФВ тФВ тФЬтФАтФА 2_prog | 2 тФВ тФЬтФАтФА promo | тФВ тФФтФАтФА security | тФЬтФАтФА technical | , тФФтФАтФА |
рд▓рд┐рдХреНрд╡рд┐рдбрд╕реИрдк рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди
рддреБрд░рдВрдд рддреИрдпрд╛рд░ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рд▓рд╛рдПрдБ:
./radio/technical/start_liquidsoap
рдХреБрдЫ рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ:
1) рдпреЗ рдкрдВрдХреНрддрд┐рдпрд╛рдБ:
wd = "/home/user/radio" pl = "#{wd}/collection" ef = "#{pl}/efir" ni = "#{ef}/night" mus_ni_dir = "#{ni}/music" mus_ni = playlist (reload = 360, "#{mus_ni_dir}")
рдХрд╛рдлреА рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рджреНрд╡рд╛рд░рд╛ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ
mus_ni = playlist (reload = 360, "/home/user/radio/collection/efir/night/music")
рдФрд░ рдЖрдкрдХреЗ рд▓рд┐рдП рдХреБрдЫ рднреА рдирд╣реАрдВ рд╣реЛрдЧрд╛ - рд▓рд┐рдХреНрд╡рд┐рдбрд╕реИрдк рдХреЗрд╡рд▓ # {wd} рдХреЗ рдмрдЬрд╛рдп wd рдХреЗ рдореВрд▓реНрдп рдХреЛ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдХрд░рддрд╛ рд╣реИред
2) рдЬрд┐рд╕ рд╕реНрдерд╛рди рдкрд░ рд╣рдордиреЗ рдЖрд╡реЗрд╖рдг рдХреЛ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдерд╛, рд╡рд╣рд╛рдВ рд▓рд╛рдЗрдиреЗрдВ рдереАрдВ:
ins_ni = rotate (weights = [2, 1], [jin_ni, promo]) ni = rotate (weights = [3, 1], [mus_ni, ins_ni])
rotate()
- рдЖрдкрдХреЛ рдХрддрд╛рд░ рдХреЛ рд╕рдорд╛рдпреЛрдЬрд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ
weights = [2, 1], [jin_ni, promo]
- jin_ni рд╕реЗ 2 рдЯреНрд░реИрдХ рд▓реЗрдиреЗ рдХрд╛ рд╕рдВрдХреЗрдд рджреЗрддрд╛ рд╣реИ, рдлрд┐рд░ рдкреНрд░реЛрдореЛ рд╕реЗ 1, рдмрд╛рд░-рдмрд╛рд░ 2 рдЯреНрд░реИрдХ рдХреЗ рдмрд╛рдж jin_ni рд╕реЗ рдФрд░ рдЗрддрдиреЗ рдкрд░ред
weights = [3, 1], [mus_ni, ins_ni]
- рдореБрд╕_рдиреА рд╕реЗ 3 рдЯреНрд░реИрдХ рд▓реЗрдиреЗ рдХрд╛ рд╕рдВрдХреЗрдд рджреЗрддрд╛ рд╣реИ, рдлрд┐рд░ рдкрд╣рд▓реЗ рд╕реЗ рдорд┐рд╢реНрд░рд┐рдд рдкреНрд▓реЗрд▓рд┐рд╕реНрдЯ рд╕реЗ 1 рдЯреНрд░реИрдХ рдЬреЛ рдкрд╣рд▓реЗ рдПрдХ рд▓рд╛рдЗрди (ins_ni) рдирд┐рдХрд▓рд╛ред
3) рдкреНрд░рд╕рд╛рд░рдг рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рддреЗ рд╕рдордп, рд╣рдордиреЗ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛:
radio = switch (track_sensitive = true, [ ({ (1w21h - 1w22h) or (3w21h - 3w22h) or (5w21h - 5w22h)}, 1_prog), ({ (1w18h - 1w19h) or (3w18h - 3w19h) or (4w18h - 4w19h) or (5w18h - 5w19h)}, 2_prog), ({ 2h - 6h }, ni), ({ 6h - 9h }, mo), ({ 9h - 19h }, da), ({ 19h - 2h }, ev) ])
switch()
- рдСрдбрд┐рдпреЛ рд╕реНрд░реЛрддреЛрдВ рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рд╕рдордп рдкрд░ рд╕реНрд╡рд┐рдЪ рдХрд░рддрд╛ рд╣реИред
track_sensitive = true
- рд╡рд░реНрддрдорд╛рди рдЯреНрд░реИрдХ рдХреЛ рдмрд╛рдзрд┐рдд рдирд╣реАрдВ рдХрд░рдиреЗ рджреЗрддрд╛ рд╣реИ, рднрд▓реЗ рд╣реА рд╕рдХреНрд░рд┐рдп рдкреНрд▓реЗрд▓рд┐рд╕реНрдЯ рд╕рдорд╛рдкреНрдд рд╣реЛ рдЧрдИ рд╣реЛред рдпрд╛рдиреА рдпрджрд┐ рд░рд╛рдд рдХрд╛ рдЯреНрд░реИрдХ 05:59 рд╕реЗ рд╢реБрд░реВ рд╣реБрдЖ, рддреЛ рдЬрдм рддрдХ рдпрд╣ рд╕рдорд╛рдкреНрдд рдирд╣реАрдВ рд╣реЛ рдЬрд╛рддрд╛, рддрдм рддрдХ рд╕реБрдмрд╣ рдХреА рдкреНрд▓реЗрд▓рд┐рд╕реНрдЯ рдкреНрд░рднрд╛рд╡реА рдирд╣реАрдВ рд╣реЛрдЧреАред
({ (1w21h - 1w22h) or (3w21h - 3w22h) or (5w21h - 5w22h)}, 1_prog),
- рд╕реЛрдорд╡рд╛рд░, рдмреБрдзрд╡рд╛рд░ рдФрд░ рд╢реБрдХреНрд░рд╡рд╛рд░ рдХреЛ 21 рд╕реЗ 22 рдШрдВрдЯреЗ рддрдХ рд╕реНрд░реЛрдд 1_prog рдЦреЗрд▓рддреЗ рд╣реИрдВред
рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВ рдЗрд╕реЗ рд╕рдордЭрддрд╛ рд╣реВрдВ, рд╕реНрд╡рд┐рдЪ рдореЗрдВ рдЙрди рдкрдВрдХреНрддрд┐рдпреЛрдВ () рдХреА рд╕реВрдЪреА рдЬреЛ рдКрдкрд░ рд╕реНрдерд┐рдд рд╣реИрдВ, рдЙрдирдХреА рд╕рд░реНрд╡реЛрдЪреНрдЪ рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рд╣реИред
рдПрдХ рд░реЗрдбрд┐рдпреЛ рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреА рдПрдХ рдкреНрд▓реЗрд▓рд┐рд╕реНрдЯ рдмрдирд╛рдирд╛
рд╕рд┐рджреНрдзрд╛рдВрдд рд╕рд░рд▓ рд╣реИ: prog_1 рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ "01_ProgName" рдлреЙрд░реНрдо рдХреА рд░реЗрдбрд┐рдпреЛ рдкреНрд░рд╕рд╛рд░рдг рдлрд╛рдЗрд▓реЗрдВ рд╣реИрдВ, рдЬрд╣рд╛рдВ рд░реЗрдбрд┐рдпреЛ рд╣реЛрд╕реНрдЯ рдХреА рдЖрд╡рд╛рдЬреЗрдВ рд░рд┐рдХреЙрд░реНрдб рдХреА рдЬрд╛рддреА рд╣реИрдВред рдкреНтАНрд▓реЗрд▓рд┐рд╕реНтАНрдЯ рдлреЙрд░реНрдо рдХрд╛ рд╣реЛрдЧрд╛:
01_ProgName
Music152
02_ProgName
Music241
03_ProgName
Music937
...рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдмреИрд╢ рдкрд░ рдЗрд╕ рддрд░рд╣ рдХреА рдкреНрд▓реЗрд▓рд┐рд╕реНрдЯ рдХреЗ рд▓рд┐рдП рдПрдХ рдЬрдирд░реЗрдЯрд░ рд▓рд┐рдЦрдирд╛ рдЕрдзрд┐рдХ рд╕рд╣реА рд╣реЛрдЧрд╛, рд▓реЗрдХрд┐рди рдореИрдВ рд╣рд╛рд▓ рд╣реА рдореЗрдВ рдкрд╛рдпрдерди рд╕реЗ рдорд┐рд▓рд╛, рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ рдЗрд╕ рдкрд░ рд╡реНрд╣рд┐рдк рдХрд┐рдпрд╛:
./radio/technical/generatorProg1.py
рдкрд░рд┐рдгрд╛рдо рдПрдХ рдкреНрд▓реЗрд▓рд┐рд╕реНрдЯ рд╣реИ рдЬреЛ рд░реЗрдбрд┐рдпреЛ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рдмрд┐рдирд╛ рднреА рдкреНрд░рд╕рд╛рд░рдг рдХреЗ рдХрдо рд╕реЗ рдХрдо рдПрдХ рдШрдВрдЯреЗ рдХреЛ рдХрд╡рд░ рдХрд░рддрд╛ рд╣реИред рдореБрдЦреНрдп рдмрд╛рдд рдЧреИрд░-рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рдореЛрдб рдореЗрдВ рдЗрд╕ рдкреНрд▓реЗрд▓рд┐рд╕реНрдЯ рдХреЛ рд▓реЗрдиреЗ рдХреЗ рд▓рд┐рдП рдирд╣реАрдВ рднреВрд▓рдирд╛ рд╣реИред рдЦреИрд░, рджреВрд╕рд░реЗ рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЗ рд▓рд┐рдП, рдпрд╣ рдПрдХ рдкреНрд▓реЗрд▓рд┐рд╕реНрдЯ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд╛рдпрдХ рднреА рд╣реИред
рдЕрдВрддрд┐рдо рд╕реНрдкрд░реНрд╢
Crontab рдкреНрд▓реЗрд▓рд┐рд╕реНрдЯ рдкреАрдврд╝реА рдбрд╛рд▓реЗрдВ:
Crontab -e
0 19 * * * /home/user/radio/technical/generatorProg1.py 0 16 * * * /home/user/radio/technical/generatorProg2.py
рдХреЗрдбреАрдИ рдСрдЯреЛрд░рди рдореЗрдВ рдХреБрдЫ рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХреЛ рдЬреЛрдбрд╝реЗрдВ:
/home/user/.kde4/Autostart/start_liquidsoap.sh
рдСрдЯреЛрд╕реНрдЯрд╛рд░реНрдЯ рдЖрдЗрд╕рдХреИрд╕реНрдЯ рднреА рдЪреЛрдЯ рдирд╣реАрдВ рдкрд╣реБрдВрдЪрд╛рдПрдЧрд╛
/etc/init.d/icecast start chkconfig --add icecast
рдФрд░, рдХреНрдпрд╛ рдорд╣рддреНрд╡рдкреВрд░реНрдг, рдЕрдВрддрд┐рдо рд▓реЗрдХрд┐рди рдХрдо рд╕реЗ рдХрдо NTP рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП - рдпрд╣рд╛рдВ рдмрд╣реБрдд рдХреБрдЫ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рд╕рдордп рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИред рдореИрдВрдиреЗ рдЗрд╕реЗ YaST рдХреЗ рддрд╣рдд рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдпрд╛ рд╣реИред
рдирд┐рд╖реНрдХрд░реНрд╖ рдореЗрдВ
рдЕрдм рдпрд╣ рд░реЗрдбрд┐рдпреЛ рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдлрд╝рд╛рдЗрд▓реЗрдВ рд╡рд┐рдВрдбреЛрдЬ рдХреЗ рдиреАрдЪреЗ рд╕реЗ рдПрдХ рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╡реНрдпрдХреНрддрд┐ рджреНрд╡рд╛рд░рд╛ рдЬреЛрдбрд╝ рджреА рдЬрд╛рддреА рд╣реИрдВ, рдЬрд┐рд╕реЗ рдУрдкрдирд╡реАрдкреАрдПрди + рд╕рд╛рдВрдмрд╛ рдмрдВрдбрд▓, рдкреНрд░реЛрдЧреНрд░рд╛рдо рдкреНрд▓реЗ, рд▓реЙрдЧреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕рдВрднрд╡ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рдерд╛ред рднрд╡рд┐рд╖реНрдп рдХреЗ рд▓рд┐рдП рдХреБрдЫ рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреА рдпреЛрдЬрдирд╛ рдмрдирд╛рдИ рдЧрдИ рд╣реИ, рдЬрд┐рдирдореЗрдВ рд╕реЗ рд╣реИрдВ: рдкреНрд░рддреНрдпреЗрдХ рдШрдВрдЯреЗ рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ рд╡рд┐рднрд┐рдиреНрди рдЖрд╡реЗрд╖рдг рдмрдЬрд╛рдирд╛, рдкреНрд▓реЗрд▓рд┐рд╕реНрдЯ рдХреЗ рдЕрдкрдиреЗ рдпрд╛рджреГрдЪреНрдЫрд┐рдХрдХрд░рдг рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдирд╛, рд░рд┐рдореЛрдЯ рдХреЙрдиреНрдлреНрд░реЗрдВрд╕ рдХреЙрд▓ рдСрди рдж рдПрдпрд░, рд╕рдм рдХреБрдЫ рдФрд░ рд╣рд░ рдЪреАрдЬ рд╕реЗ рдореБрдХрд╛рдмрд▓рд╛ рдХрд░рдирд╛, рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рджреЛрд╖ рд╕рд╣рд┐рд╖реНрдгреБ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдирд╛, рд╕рд╛рде рд╣реА рд╕рд╛рде рдиреБрдХрд╕рд╛рди рдХреЗ рд▓рд┐рдП рдЦреЛрдЬ рдХрд░рдирд╛ред рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рд▓рд┐рдХреНрд╡рд┐рдбрд╕реИрдк рд╕реЗ рдирд┐рдкрдЯрдирд╛ рдПрдХ рдЦреБрд╢реА рд╣реИред рд╕рднреА рдХреЛ рдЕрдЪреНрдЫрд╛ рд╕рдВрдЧреАрддред
UPD: рдорд┐рд▓рд░ рд╕реЗ
рдЕрдиреБрдкреВрд░рдХ ред
UPD 2: рдХреНрд░реЙрд╕рдлрд╝реЗрдб рдХреЗ рдмрд╛рдж рдореМрди рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП, рдХреНрд░реЙрд╕рдлрд╝реЗрдб рд╕реЗ рдкрд╣рд▓реЗ рд▓рд╛рдЗрди рдЬреЛрдбрд╝реЗрдВ:
radio = mksafe(radio)
рдЗрд╕ рд╕рдорд╛рдзрд╛рди рдХреЗ рд▓рд┐рдП
kvaps рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдзрдиреНрдпрд╡рд╛рджред