рдореИрдВ рдЖрдкрдХреЛ рд╕реНрд╡рд╛рд╕реНрдереНрдп рдХреА рдХрд╛рдордирд╛ рдХрд░рддрд╛ рд╣реВрдВ, рд╣реЗрдмреНрд░!
рдЖрд░рдПрд╕рдПрд╕ рдлрд╝реАрдб рдХреЗ рдкрд╛рд░реНрд╕рд░ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкрд┐рдЫрд▓реЗ рд╡рд┐рд╖рдп рдХреЗ рдЬрд╡рд╛рдм рдореЗрдВ рд▓реЙрд╕реНрдЯрдлрд┐рд▓реНрдо.рдЯреАрд╡реА рдореИрдВ рдЕрдкрдирд╛ рд╕рдВрд╕реНрдХрд░рдг рд░рдЦрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдЬреЛ рд▓рдЧрднрдЧ 4 рдорд╣реАрдиреЗ рд╕реЗ рдмрд┐рдирд╛ рдХрд┐рд╕реА рддреНрд░реБрдЯрд┐ рдХреЗ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реИред
рд╡рд┐рдЪрд╛рд░ рдХрд╛ рд╕рд╛рд░ рдпрд╣ рд╣реИ рдХрд┐ рд╕рд░реНрд╡рд░ рд╢реНрд░реГрдВрдЦрд▓рд╛ рдХреЛ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЙрдиреНрд╣реЗрдВ рдлрд╝реЛрд▓реНрдбрд░реНрд╕ рдореЗрдВ рдбрд╛рд▓рддрд╛ рд╣реИ, рдлрд╛рдЗрд▓реЛрдВ рдХреЛ рдХрд╡рд░ рдФрд░ рд╕рд╛рдорд╛рдиреНрдп рд╣реЗрдбрд░ рд╕реЗ рднрд░рддрд╛ рд╣реИред
рд╣рд╛рд▓рд╛рдВрдХрд┐, рдкреВрд░реЗ рд╕рд┐рд╕реНрдЯрдо рдХреЗ рдХрд╛рдо рдореЗрдВ рдХреЗрд╡рд▓ рдПрдХ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╢рд╛рдорд┐рд▓ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛ рдПрдХ рдкреВрд░рд╛ рд╕реЗрдЯред рдРрд╕реА рдкреНрд░рдгрд╛рд▓реА рдореЗрдВ, рд▓рд┐рдкрд┐рдпреЛрдВ рдХреЛ рдкреВрд░реНрд╡-рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдФрд░ рдмрд╛рдж рдХреЗ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдФрд░, рдЬрд╝рд╛рд╣рд┐рд░ рд╣реИ, рд╕реМрдВрджрд░реНрдпрд╢рд╛рд╕реНрддреНрд░ рдХреЗ рд▓рд┐рдП: рдкреНрд░рддреНрдпреЗрдХ рд╢реНрд░реГрдВрдЦрд▓рд╛ рдХреА рдлрд╛рдЗрд▓реЗрдВ рд╕реБрдВрджрд░ рджрд┐рдЦрдиреА рдЪрд╛рд╣рд┐рдП рдФрд░ рдлрд╝реЛрд▓реНрдбрд░реЛрдВ рдореЗрдВ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдПред
рдкреВрд░реНрд╡ рдкреНрд░реЛрд╕реЗрд╕рд░
рдкрд╛рд░реНрд╕рд░ рдСрдкрд░реЗрд╢рди рдПрд▓реНрдЧреЛрд░рд┐рдердо
тАв рдЖрд░рдПрд╕рдПрд╕ рдлрд╝реАрдб рдкрдврд╝реЗрдВ
тАв рд╡реНрдпрдХреНрддрд┐рдЧрдд рддрддреНрд╡реЛрдВ рдореЗрдВ рдкрд╛рд░реНрд╕
тАв рдкреБрд░рд╛рдиреЗ рд╕рд╛рдорд╛рдиреЛрдВ рдХреА рдирд┐рд░рд╛рдИ рдХрд░реЗрдВ
тАв рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рдирдП рддрддреНрд╡ рдЬреЛрдбрд╝реЗрдВ рдФрд░ рдЯреНрд░рд╛рдВрд╕рдорд┐рд╢рди рдбрд╛рдЙрдирд▓реЛрдб рдХрддрд╛рд░
рдкрд╛рд░реНрд╕рд░ рдХреЛрдб
#!/bin/bash export PRFX="/var/lib/transmission-daemon" export SELF=$(basename $(readlink -f $0)) # . $PRFX/.$SELF/config # . $PRFX/.funcs/sqlite . $PRFX/.funcs/transmission # check_last() { if [ ! -f $LFW_RSS_LAST ] || [ $1 -gt $(cat $LFW_RSS_LAST) ]; then printf "$1" > $LFW_RSS_LAST return 0 else return 1 fi } # parse_title() { echo "$1" | sed -r 's/^([^(]+)[. ]+\((.+)\)[. ]+([^(]+)[. ]+\((.+)\)[. ]*(\[720p\]){0,1}[. ]*\(S0*([0-9]+)E0*([0-9]+).*\)$/\1|\2|\3|\4|\5|\6|\7/' } logger -t $SELF -- ' RSS/Atom' # RSS- rsstail -1NHlp -n 30 -u "$LFW_RSS_URL" | # iconv -f cp1251 | sed -r '/^\s*$/d; s/^\s+//; s/\s+$//' | sed -r '$!N; s/\n/|/; $!N; s/\n/|/' | # UNIXTIME (IFS='|'; while read item_title item_link item_date; do printf '%s|%s|%s\n' $(date -d "$item_date" +%s) "$item_title" "$item_link" done) | sort | # (IFS='|'; while read item_date item_title item_link; do if check_last $item_date; then printf '%s|%s|%s\n' $item_date "$(parse_title "$item_title")" "$item_link" fi done) | # (IFS='|'; while read date name_ru name_en title_ru title_en hd season episode link; do # id=$(printf 'SELECT id FROM series WHERE title_en = "%s";' "$name_en" | db_query $LFW_DB) # , if [ -n "$id" ]; then # - tr_file="/tmp/lostfilm_$(uuidgen).torrent" if wget -nv -q --header "$LFW_WGET_AUTH" "$link" -O "$tr_file"; then # , if [ -z $(printf 'SELECT id FROM episodes WHERE series = %d AND season = %d AND episode = %d;' $id $season $episode | db_query $LFW_DB) ]; then printf 'INSERT INTO episodes (series, season, episode, title_en, title_ru) VALUES (%d, %d, %d, "%s", "%s");' \ $id $season $episode $title_en $title_ru | db_query $LFW_DB fi # HD SD if [ -z "$hd" ]; then file=$(transmission-show "$tr_file" | sed -r '/^Name:/!d; s/^Name:\s*(.+)\s*$/\1/') #' printf 'INSERT INTO files (id, date, filename) VALUES ((SELECT id FROM episodes WHERE series = %d AND season = %d AND episode = %d), %d, "%s");' \ $id $season $episode $date $file | db_query $LFW_DB if [ $(printf 'SELECT tracked FROM series WHERE id = %d;' $id | db_query $LFW_DB) -ne 0 ]; then transmission --add "$tr_file" --start > /dev/null fi logger -t $SELF -- $(printf ' SD ┬л%s┬╗ ( %s, %s) тАФ ┬л%s┬╗' "$name_ru" "$season" "$episode" "$title_ru") #' else file=$(transmission-show "$tr_file" | sed -r '/^Name:/!d; s/^Name:\s*(.+)\s*$/\1/') #' printf 'INSERT INTO files_hd (id, date, filename) VALUES ((SELECT id FROM episodes WHERE series = %d AND season = %d AND episode = %d), %d, "%s");' \ $id $season $episode $date $file | db_query $LFW_DB if [ $(printf 'SELECT tracked_hd FROM series WHERE id = %d;' $id | db_query $LFW_DB) -ne 0 ]; then transmission --add "$tr_file" --start > /dev/null fi logger -t $SELF -- $(printf ' HD ┬л%s┬╗ ( %s, %s) тАФ ┬л%s┬╗' "$name_ru" "$season" "$episode" "$title_ru") #' fi fi [ -f "$tr_file" ] && rm -f "$tr_file" fi done) logger -t $SELF -- ''
рдкреЛрд╕реНрдЯ рд╣реИрдВрдбрд▓рд░
рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЬрдм рдлрд╝рд╛рдЗрд▓ рдбрд╛рдЙрдирд▓реЛрдб рдХреА рдЬрд╛рддреА рд╣реИ, рддреЛ рдЗрд╕реЗ рдПрдХ рд╕реМрдВрджрд░реНрдп рдЙрдкрд╕реНрдерд┐рддрд┐ рдореЗрдВ рд▓рд╛рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП (рдореЗрд░реА рдкрддреНрдиреА рд╢реНрд░реГрдВрдЦрд▓рд╛ рдХреЗ рдирд╛рдо рдХреЗ рд╕рд╛рде рдлрд╝реЛрд▓реНрдбрд░реНрд╕ рдореЗрдВ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рд╕рднреА рд╢реНрд░реГрдВрдЦрд▓рд╛рдУрдВ рдХреЛ рджреЗрдЦрдирд╛ рдкрд╕рдВрдж рдХрд░рддреА рд╣реИ рдФрд░ рдПрдХ рдлрд╝рд╛рдЗрд▓ рдирд╛рдо рдЬрд┐рд╕рдореЗрдВ рд╕реАрдЬрд╝рди / рдПрдкрд┐рд╕реЛрдб рдирдВрдмрд░ рдФрд░ рд╢реНрд░реГрдВрдЦрд▓рд╛ рдХрд╛ рдирд╛рдо рд╣реИ, рд╕рд╛рде рд╣реА рд╢реНрд░реГрдВрдЦрд▓рд╛ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕реБрдВрджрд░ рдХрд╡рд░-рдЖрдЗрдХрди рднреА рд╣реИ)ред
рд╢реНрд░реГрдВрдЦрд▓рд╛ рдХреЛ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдХрдИ рдкреНрд░рдХрд╛рд░ рдХреА рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рдЙрджреНрджреЗрд╢реНрдп рд╕реЗ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреА рдПрдХ рд╢реНрд░реГрдВрдЦрд▓рд╛ рд▓реЙрдиреНрдЪ рдХреА рдЬрд╛рддреА рд╣реИ, рдЬрд┐рд╕рдореЗрдВ Lostfilm.tv рд╢рд╛рдорд┐рд▓ рд╣реИред
рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ рдХреЗ рдмрд╛рдж рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛
тАв рдбреЗрдореЙрди рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдлрд╝рд╛рдЗрд▓ рдирд╛рдо рдХреЗ рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рдЙрдкрд╕реНрдерд┐рддрд┐ рдХреЗ рд▓рд┐рдП рдЬрд╛рдБрдЪ рдХрд░реЗрдВ, рдЕрдиреНрдпрдерд╛ рдмрдВрдж рдХрд░реЗрдВ
тАв рдЖрдзрд╛рд░ рд╕реЗ рдЕрдирд▓реЛрдб рдХрд╡рд░
тАв mkvtools рд▓рд╛рдЧреВ рдХрд░реЗрдВ (рдЕрдВрдЧреНрд░реЗрдЬреА рдкрдЯрд░рд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдлрд┐рд▓реНрдЯрд░, рдХрд╡рд░ рд╕рдореНрдорд┐рд▓рд┐рдд рдХрд░реЗрдВ, рд░рд┐рдХреЙрд░реНрдб рд╢реАрд░реНрд╖рдХ)
тАв рд╢реНрд░реГрдВрдЦрд▓рд╛ рдХреЗ рдирд╛рдо рд╕реЗ рдПрдХ рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рд░рдЦреЛ (рдмрдирд╛рдПрдВ, рдпрджрд┐ рдирд╣реАрдВ)
тАв рдореЗрд▓ рдФрд░ рдПрд╕рдПрдордПрд╕ рджреНрд╡рд╛рд░рд╛ рд╣рд╕реНрддрд╛рдХреНрд╖рд░рдХрд░реНрддрд╛рдУрдВ рдХреЛ рд╕реВрдЪрд┐рдд рдХрд░реЗрдВ (рдореЗрд░реЗ рдлреЛрди рдкрд░, рдореЗрд▓ рджреНрд╡рд╛рд░рд╛ рдореЗрд░реА рдкрддреНрдиреА рдХреЛ)
рдкреЛрд╕реНрдЯ-рдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ рд╕реНрдХреНрд░рд┐рдкреНрдЯ
#!/bin/bash export SELF= # . $PRFX/.$SELF/config # . $PRFX/.funcs/sqlite . $PRFX/.funcs/transmission . $PRFX/.funcs/mkv_tools . $PRFX/.funcs/mail_notify . $PRFX/.funcs/utils . $PRFX/.funcs/sms_notify MAIL_LIST_HD= # data=%s$TR_TORRENT_NAME # , if [ -n ]; then # name=$(echo $data | cut -d'|' -f1) s=$(echo $data | cut -d'|' -f2) e=$(echo $data | cut -d'|' -f3) part=$(echo $data | cut -d'|' -f4) id=$(echo $data | cut -d'|' -f5) # mkv_file=$(printf '/mnt/videos/Series.HD/%s [%s.%s] тАФ %s.mkv' ) # - mkv_title=$(printf '┬л%s┬╗ тАв %s, %s тАв ┬л%s┬╗' ) # mkv_poster= printf 'SELECT data FROM posters WHERE series = %d ORDER BY date DESC LIMIT 1;' $id | db_query $LFW_DB | base64 -d - > $mkv_poster logger -t $SELF -- $(printf ' HD ┬л%s┬╗ ( %s, %s) тАФ ┬л%s┬╗' ) #' # - if to_mkv "/mnt/torrent/$TR_TORRENT_NAME" "$mkv_file" "$mkv_title" "$mkv_poster"; then logger -t $SELF -- $(printf ' HD ┬л%s┬╗ ( %s, %s) тАФ ┬л%s┬╗' "$name" "$s" "$e" "$part") #' # , , , transmission -t $TR_TORRENT_ID --remove-and-delete > /dev/null logger -t $SELF -- $(printf ' HD ┬л%s┬╗ ( %s, %s) тАФ ┬л%s┬╗' ) #' # mail_notify "$MAIL_LIST_HD" "$(printf ' ┬л%s┬╗ ( %s, %s) тАФ ┬л%s┬╗' "$name" "$s" "$e" "$part")" \ "$(printf '<h3>┬л%s┬╗ ( %s, %s) тАФ ┬л%s┬╗</h3><br/><i>: HD</i>' "$name" "$s" "$e" "$part")" # sms_notify a***n "$(printf ' ┬л%s┬╗ ( %s, %s) тАФ ┬л%s┬╗ \n[%s]' "$name" "$s" "$e" "$part" "$(disk_info)")" else logger -t $SELF -- $(printf ' HD ┬л%s┬╗ ( %s, %s) тАФ ┬л%s┬╗' "$name" "$s" "$e" "$part") #' fi rm -f $mkv_poster fi
рдбреЗрдЯрд╛рдмреЗрд╕
рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕реЗ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдХрд╛рдо рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рд╕рд╛рде рд╣реИ, рдореЗрд░реЗ рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ SQLite3 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ
рдбреЗрдЯрд╛рдмреЗрд╕ рд╕рдВрд░рдЪрдирд╛
CREATE TABLE episodes ( id INTEGER PRIMARY KEY AUTOINCREMENT, series INTEGER REFERENCES series(id) ON UPDATE CASCADE ON DELETE CASCADE, season INTEGER NOT NULL, episode INTEGER NOT NULL, title_en TEXT NOT NULL, title_ru TEXT NOT NULL, UNIQUE(series, season, episode) ); CREATE TABLE files ( id INTEGER PRIMARY KEY REFERENCES episodes(id) ON UPDATE CASCADE ON DELETE CASCADE, date INTEGER NOT NULL, filename TEXT NOT NULL ); CREATE TABLE files_hd ( id INTEGER PRIMARY KEY REFERENCES episodes(id) ON UPDATE CASCADE ON DELETE CASCADE, date INTEGER NOT NULL, filename TEXT NOT NULL ); CREATE TABLE posters ( id INTEGER PRIMARY KEY AUTOINCREMENT, series INTEGER REFERENCES series(id) ON UPDATE CASCADE ON DELETE CASCADE, date INTEGER NOT NULL, data TEXT NOT NULL ); CREATE TABLE series ( id INTEGER PRIMARY KEY AUTOINCREMENT, title_en TEXT NOT NULL, title_ru TEXT NOT NULL, tracked INTEGER DEFAULT 0 , tracked_hd integer default 1);
рдмреЗрд╕ 64 рдХреЗ рд░реВрдк рдореЗрдВ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рдЕрдВрджрд░ рдХрд╡рд░ рдХрд┐рдП рдЧрдП рд╣реИрдВ, рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд╣реИ рдХрд┐ рдпрд╣ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЛ рдЧрдбрд╝рдмрдбрд╝ рдХрд░ рджреЗрдЧрд╛, рд▓реЗрдХрд┐рди рдлрд┐рд░ рднреА рдореИрдВрдиреЗ рдПрдХ рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рд╢реНрд░реГрдВрдЦрд▓рд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕рдм рдХреБрдЫ рд╕реНрдЯреЛрд░ рдХрд░рдирд╛ рдкрд╕рдВрдж рдХрд┐рдпрд╛ред
TODO рдФрд░ PS
рдпрд╣ рдЙрди рдЪреАрдЬреЛрдВ рдХреЛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд░рд╣рддрд╛ рд╣реИ рдЬреЛ рдореЗрд░реЗ рд▓рд┐рдП рдмрд╣реБрдд рдорд╣рддреНрд╡рдкреВрд░реНрдг рдирд╣реАрдВ рд╣реИрдВ рдФрд░ рдХреБрдЫ рд╕рдордп рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
1. рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЛ MySQL / PostgreSQL рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░реЗрдВ
2. рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рд▓рд┐рдП рдПрдХ рд╡реЗрдм рдЗрдВрдЯрд░рдлреЗрд╕ рдмрдирд╛рдУ
3. рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рд▓рд┐рдП рдПрдХ рдирдИ рд╢реНрд░реГрдВрдЦрд▓рд╛ рдХрд╛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдЬреЛрдбрд╝ (рдХрд╡рд░ рдХреЗ рд╕рд╛рде) рдХрд░реЗрдВ
рдПрдиред рднрд╡рд┐рд╖реНрдп RSS рдлрд╝реАрдб рдорд╛рдиреНрдпрддрд╛ рдХреЛ рдареАрдХ рдХрд░рддрд╛ рд╣реИ
рдмрд╛рдХреА рдЬрдирддрд╛ рдХреЛ рд╕реНрдкрд╖реНрдЯ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдХреЛрдб рдореЗрдВ рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдВ рд╣реИрдВред
рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдмрд┐рдирд╛ рдЕрд╕рдлрд▓рддрд╛рдУрдВ рдФрд░ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЗ 4 рдорд╣реАрдиреЗ рд╕реЗ рдЪрд▓ рд░рд╣реА рд╣реИ (рд╣рд╛рд▓рд╛рдВрдХрд┐ рдЖрдЬ рд╕реАрдЬрди рдирдВрдмрд░ 0 рдХреЗ рд╕рд╛рде рдпреВрд░реЗрдХрд╛ рдерд╛, рд▓реЗрдХрд┐рди рдпрд╣ рд╕рд╛рдЗрдЯ рдкрд░ рд╣реА рдПрдХ рдХреИрдВрдЯ рдерд╛)ред рдореИрдВ рдЦреБрдж рдПрдХ рд╕реЗрд╡рд╛рджрд╛рд░ рд╣реВрдВ рдФрд░ рд╣рд░ 1-2 рд╕рдкреНрддрд╛рд╣ рдореЗрдВ рдПрдХ рдмрд╛рд░ рдШрд░ рдЖрддрд╛ рд╣реВрдВ, рдЗрд╕рд▓рд┐рдП рд╕рдм рдХреБрдЫ рджреБрд░реНрд▓рдн рдирд┐рдпрдВрддреНрд░рдг рдХреЗ рд╕рд╛рде рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдореИрдВ рдмрд╕ рдпреВрдирд┐рдЯ рдореЗрдВ рдХреБрдЫ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрдХреНрд░реВ рдкрд░ рдирдП рдПрдкрд┐рд╕реЛрдб рдбрд╛рд▓рддрд╛ рд╣реВрдВредрдЖрдкрдХрд╛ рдзреНрдпрд╛рди рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж!