рдЖрдкрдХрд╛ рджрд┐рди рд╢реБрдн рд╣реЛ!
рддреЛ рдЪрд▓рд┐рдП рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВред рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ, рдореИрдВ рдПрдХ рдЫреЛрдЯреА
django рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХрд╛ рд╡рд░реНрдгрди рдХрд░реВрдВрдЧрд╛ рдЬреЛ рдЖрдкрдХреЗ YouTube рдЪреИрдирд▓ рдкрд░ рд╡реАрдбрд┐рдпреЛ рдХреЛ рд░реВрдкрд╛рдВрддрд░рд┐рдд / рдЕрдкрд▓реЛрдб рдХрд░рддреА рд╣реИред
рд╕рдорд╕реНрдпрд╛ рдХреЗ рдЗрддрд┐рд╣рд╛рд╕ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреБрдЫ рд╢рдмреНрдж ... рдореИрдВ рдПрдХ рдЫреЛрдЯреА рд╕реА рдХреНрд╖реЗрддреНрд░реАрдп рдЯреЗрд▓реАрд╡рд┐рдЬрди рдХрдВрдкрдиреА рдХреЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░рддрд╛ рд╣реВрдВ, рдЬреЛ рдПрдХ рдЕрджреНрднреБрдд рджрд┐рди рдЪрд╛рд╣рддрд╛ рдерд╛ рдХрд┐ рд▓реЛрдЧ рдЕрдкрдиреА рд╕рд╛рдордЧреНрд░реА рджреЗрдЦреЗрдВ, рди рдХреЗрд╡рд▓ рдиреАрд▓реЗ рдкрд░рджреЗ рдкрд░, рдмрд▓реНрдХрд┐
YouTube рдкрд░ рднреАред рдХреНрдпреЛрдВрдХрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдУрдордиреЗрди рд╕реЗ рдПрдХ рдкреНрд░рд╕рд╛рд░рдг рд╕рд░реНрд╡рд░ рд╣реИ, рд╣рдорд╛рд░реЗ рджреНрд╡рд╛рд░рд╛ рддреИрдпрд╛рд░ рдХреА рдЧрдИ рд╕рднреА рд╕рд╛рдордЧреНрд░рд┐рдпреЛрдВ рдХреЛ рдореВрд╡ рдлреЙрд░реНрдореЗрдЯ рдореЗрдВ рддреИрдпрд╛рд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдФрд░ 15 рдорд┐рдирдЯ рдХреЗ рдХрд╛рд░реНрдпрдХреНрд░рдо рдХрд╛ рдФрд╕рдд рд╡рдЬрди = 3.5 рдЬреАрдмреА рд╣реИред рдЗрд╕ рдЖрдХрд╛рд░ рдХреА рдлрд╝рд╛рдЗрд▓ рдЕрдкрд▓реЛрдб рдХрд░рдирд╛ рдердХрд╛рдК рдФрд░ рдореВрд░реНрдЦрддрд╛рдкреВрд░реНрдг рд╣реИ, рдХреНрд▓рд┐рдк рдХреЛ mp4 (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП) рдореЗрдВ рдХрдирд╡рд░реНрдЯ рдХрд░рдирд╛ рдФрд░ YouTube рдкрд░ рдЙрдиреНрд╣реЗрдВ рдкреНрд░рдХрд╛рд╢ рдореЗрдВ рдЕрдкрд▓реЛрдб рдХрд░рдирд╛ рдЕрдзрд┐рдХ рд╕рд╣реА рд╣реИ (рдХреНрдпреЛрдВрдХрд┐ рд╣рдо рдЗрд╕рд╕реЗ рдмрд╣реБрдд рдЕрдзрд┐рдХ рдЧреБрдгрд╡рддреНрддрд╛ рдирд╣реАрдВ рдЦреЛрддреЗ рд╣реИрдВ)ред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП: рд╕реНрд╡реАрдХрд╛рд░реНрдп рдЧреБрдгрд╡рддреНрддрд╛ рдХреЗ 100 рдПрдордмреА рдореЗрдВ 3.5 рдЬреАрдмреА рдХрд╣реАрдВ рд╕рдВрдХреБрдЪрд┐рдд рд╣реИрдВред
рд▓реЗрдЦ "рдЦреЛрдЬ" рдФрд░ "рд╡рд░реНрд╖ рдХреА рд╕рдлрд▓рддрд╛" рдХрд╛ рд╢реАрд░реНрд╖рдХ рд╣реЛрдиреЗ рдХрд╛ рджрд┐рдЦрд╛рд╡рд╛ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рдпрд╣ рдмрд╕ рдЬреНрдЮрд╛рдд рддрдереНрдпреЛрдВ рдХреЛ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдирд┐рд░реНрджреЗрд╢реЛрдВ рдореЗрдВ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд░рддрд╛ рд╣реИред1. рдПрд▓реНрдЧреЛрд░рд┐рджрдо
рд╕реНрд╡рдпрдВ рдХреЗ рд▓рд┐рдП, рдореБрдЭреЗ рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЗ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЕрдиреБрдХреНрд░рдо рджреНрд╡рд╛рд░рд╛ рдирд┐рд░реНрджреЗрд╢рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛:
- рд╣рдо рдЙрд╕ рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рджреЗрдЦрддреЗ рд╣реИрдВ рдЬрд╣рд╛рдВ рд╡реАрдбрд┐рдпреЛ рд░рд╣рддреЗ рд╣реИрдВ
- рд╕рд╣реА рдЪреБрдиреЗрдВ
- YT (рдирд╛рдо, рд╡рд┐рд╡рд░рдг, рдХреАрд╡рд░реНрдб) рдХреЗ рд▓рд┐рдП рдЬрд╛рдирдХрд╛рд░реА рджрд░реНрдЬ рдХрд░реЗрдВ
- рдлрд╝рд╛рдЗрд▓ рдХрддрд╛рд░
- рдХрддрд╛рд░ рдХреНрд░рдорд┐рдХ рд░реВрдк рд╕реЗ рдХреНрд▓рд┐рдк рдХреЛ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░ рд░рд╣реА рд╣реИ, рдлрд┐рд░ рдЙрдиреНрд╣реЗрдВ YT рдкрд░ рдЕрдкрд▓реЛрдб рдХрд░ рд░рд╣реА рд╣реИ
- рд╡реАрдбрд┐рдпреЛ рд▓реЛрдб рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж, рдореБрдЭреЗ "рдЕрдкрд▓реЛрдб" рдХрд╛ рджрд░реНрдЬрд╛ рдорд┐рд▓рд╛
рдореИрдВ рдХреБрдЫ рдкреНрд░рдХрд╛рд░ рдХреЗ рд▓реЙрдЧрд┐рдВрдЧ рдХреЛ рднреА рдЬреЛрдбрд╝рдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛, рдЕрд▓рд╛ "рдХреМрди / рдХрдм / рдХреНрдпрд╛ рдЕрдкрд▓реЛрдб рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред"
2. рдХреНрдпрд╛ рдЬрд░реВрд░рдд рд╣реИ?
рдореБрдЭреЗ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдЖрдкрдиреЗ django рдХреЛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░ рджрд┐рдпрд╛ рд╣реЛрдЧрд╛, рдЕрдиреНрдпрдерд╛ рдЖрдЧреЗ рдкрдврд╝рдиреЗ рдХрд╛ рдХреЛрдИ рдорддрд▓рдм рдирд╣реАрдВ рд╣реИред рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкреИрдХреЗрдЬреЛрдВ рдХреА рднреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА:
3. рдпрд╣ рд╕рдм рдПрдХ рд╕рд╛рде рд░рдЦрдирд╛
рдореИрдВ рдЦреБрдж рдЗрд╕реЗ рдкрд╕рдВрдж рдХрд░рддрд╛ рд╣реВрдВ рдЬрдм рдЖрдк рдпрд╣ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдЖрдВрдЦ рдХреЗ рдХрд┐рдирд╛рд░реЗ рд╕реЗ рдХрдо рд╕реЗ рдХрдо рдХреНрдпрд╛ рдХрд╣рд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣рд╛рдВ рдЕрдВрддрд┐рдо рд╕реНрдХреНрд░реАрдирд╢реЙрдЯ рд╣реИ:
рдореИрдВ рд╢реБрд░реВ рд╕реЗ рд╣реА рдмрд┐рдВрджреБрдУрдВ рдкрд░ рдмрд╛рдд рдХрд░реВрдВрдЧрд╛ред
рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдПрдХ рдирдпрд╛ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд╢реБрд░реВ рдХрд░реЗрдВ:
django-admin.py startproject YTuploadрдирдП рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ, рдЕрдкрдиреА рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рддреБрд░рдВрдд
рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреЛ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВ рдФрд░ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдлрд╝реАрд▓реНрдб рдЬреЛрдбрд╝реЗрдВ:
ENCODE_DIR_FROM = '/__________YT/' ENCODE_DIR_TO = os.path.join(ROOT,'file_out')
рдКрдкрд░, рдореИрдВ рд▓реЙрдЧрд┐рдВрдЧ рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ "рдЕрдЪреЗрдд" рдерд╛ред рдпрд╣рд╛рдВ рдЗрд╕рдХреЗ рд▓рд┐рдП рд╣рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдореЙрдбрд▓ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
django-admin.py startapp control рдПрдкреНрд▓реАрдХреЗрд╢рди рдмрдирд╛рдПрдВ
рдореЙрдбрд▓ рдореЙрдбрд▓ рдЦреЛрд▓реЗрдВ
рд╡рд┐рдЪрд╛рд░ рдХреЗ рд▓рд┐рдП рдЬрд╛рдУ
рдХреЛрдб рдЬрдЯрд┐рд▓ рдирд╣реАрдВ рд╣реИ (рдпрджрд┐ рдЖрд╡рд╢реНрдпрдХ рд╣реЛ, рддреЛ рдореИрдВ рдЖрдкрдХреЛ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рдмрддрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рд╣реВрдВ),
рдЗрдВрдбреЗрдХреНрд╕ рдлрд╝рдВрдХреНрд╢рди 2 рд╕реВрдЪрд┐рдпрд╛рдВ
рд▓реМрдЯрд╛рддрд╛ рд╣реИ : рдкрд╣рд▓реА - рдХреМрди рд╕реА рдлрд╛рдЗрд▓реЗрдВ рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рд╣реИрдВ, рджреВрд╕рд░реА - рдХреМрди рд╕реА рдлрд╛рдЗрд▓реЗрдВ рдкрд╣рд▓реЗ рд╕реЗ рд▓реЙрдЧ рдореЗрдВ рд▓рд┐рдЦреА рдЧрдИ рд╣реИрдВред рдЗрд╕ рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЖрдЙрдЯрдкреБрдЯ рдКрдкрд░ рд╕реНрдХреНрд░реАрдирд╢реЙрдЯ рдореЗрдВ рджрд┐рдЦрд╛рдИ рджреЗрддрд╛ рд╣реИ ...
рджрд░реНрдЬ рдХрд░реЗрдВ рдФрд░
рдмрд╛рд╣рд░ рдирд┐рдХрд▓реЗрдВ рд╕рдмрд╕реЗ рдЖрд╕рд╛рди рдкреНрд░рдорд╛рдгреАрдХрд░рдг рд╣реИред
рдЖрдЧреЗ рдмрдврд╝реЛ:
urls.py from django.conf.urls.defaults import * from django.contrib import admin admin.autodiscover() import views, settings urlpatterns = patterns('', (r'^admin/', include(admin.site.urls)), (r'^$', views.index, {'template': 'index.html'}), (r'^enter/$', views.enter, {'template': 'enter.html'}), (r'^exit/$', views.exit), (r'^media/(?P<path>.*)$', 'django.views.static.serve', {'document_root': settings.MEDIA_ROOT}), )
рдпрд╣рд╛рдВ рд╕рдм рдХреБрдЫ рд╕рд░рд▓ рд╣реИред рд▓реЙрдЧ рдЗрди рдХрд┐рдпрд╛, рд▓реЙрдЧ рдЗрди рдХрд┐рдпрд╛, рдЕрдкрд▓реЛрдб рдХрд┐рдпрд╛ рдЧрдпрд╛!
рдЕрдВрддрд┐рдо рдХреЙрд░реНрдб
рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░рдирд╛ рд╣реИ , рдЬреЛ рд╕рднреА рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред
рдЗрд╕ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдХреЛрдВрдЯреНрд░рд╛рдм рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд▓реЙрдиреНрдЪ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдЕрд░реНрде рд╕рд░рд▓ рд╣реИ: рд╕реНрдерд┐рддрд┐ рдХреЛ "рдХреНрд╡реЗрд░реА рдореЗрдВ" (рдХрддрд╛рд░ рдореЗрдВ) рдХреЗ рд╕рд╛рде рдкрд╣рд▓реА рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░реЗрдВ, рдХрдиреНрд╡рд░реНрдЯ (рд╕реНрдерд┐рддрд┐ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░реЗрдВ), рдЕрдкрд▓реЛрдб рдХрд░реЗрдВ (рдЕрдкрд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрдерд┐рддрд┐ рдмрджрд▓реЗрдВ), рдЕрдкрд▓реЛрдб рдХрд░реЗрдВ (рд╕реНрдерд┐рддрд┐ = рдЕрдкрд▓реЛрдб)ред
crontab:
*/1 * * * * python /var/www/YTupload/converting.py &> /dev/null
рдЦреИрд░, рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдореИрдВ рдЯреЗрдореНрдкрд▓реЗрдЯ рдХрд╛ html-code рджреЗрддрд╛ рд╣реВрдВ:
enter.html <!DOCTYPE HTML> <html> <head> <meta http-equiv="content-type" content="text/html; charset=utf-8" /> <title> | YTUpload | 1vank1n.habrahabr.ru</title> <style type="text/css"> html, body { font-size: 14px; font-family: Georgia, "Times New Roman", Times, serif; height: 100%; width: 100%; margin: 0; padding: 0; } #table-center { height: 100%; width: 100%; } #form-auth { margin-bottom: 0px; margin-top: 0px; margin-right: auto; margin-left: auto; height: 100px; width: 330px; } #form-auth table td { padding: 5px; } #form-auth input { background-color: white; border-color: #cccccc; border-style: solid; border-width: 1px; padding: 5px; display: block; margin: 0 auto; } </style> </head> <body> <table id="table-center"> <tr><td> <form id="form-auth" action="" method="POST">{% csrf_token %} <table > {{ authform.as_table }} <input type="hidden" name="formname" value="auth"> </table> <input type="submit" value=""> </form> </td></tr> </table> </body> </html>
index.html <!DOCTYPE HTML> <html> <head> <meta http-equiv="content-type" content="text/html; charset=utf-8" /> <title>YTUpload | 1vank1n.habrahabr.ru</title> <script type="text/javascript" src="/media/jquery-1.6.1.min.js"></script> <script type="text/javascript"> $(function(){ $('#choose_file a').click(function(){ $('#file_properties').fadeIn(); $('input[name="filename"]').attr('value', $(this).text()); $('input[name="filesize"]').attr('value', $(this).next('span').text()); }); }); </script> <style type="text/css"> body {width:1000px;margin:0 auto;position: relative;font-size:11pt;} #file_properties {display: none;} #choose_file {width: 490px; float: left; height: 500px; overflow-y: auto;} #loglist, #loglist table {width: 500px; float:right;} #loglist td {border: 1px solid #555;margin: 0;padding: 5px;} #exit {display: block; position: absolute; top:0; right:0; padding: 10px; background: #ddf; color: #000; text-decoration: none;} input, textarea, button {border: 1px solid #ccc; padding:5px;} </style> </head> <body> <a id="exit" href="/exit/"></a> <div id="loglist"> <h1></h1> <table cellpadding="0" cellspacing="0"> <tr> <td> </td> <td></td> <td></td> </tr> {% for l in loglist %} <tr> <td>{{ l.filename }}</td> <td>{{ l.filesize }}</td> <td>{{ l.status }}</td> </tr> {% endfor %} </table> </div> <div id="choose_file"> <h1>1. :</h1> <p> , (+,-,%,',",^,&)!!!</p> {% for d in dictdir %} <li>{% if not d.status %}<a value="{{ d.filename }}" href="#">{% endif %}{{ d.filename }}</a> | <span>{{ d.filesize|filesizeformat }}</span></li> {% endfor %} </div> <div style="height:10px;width:100%;clear:both;"></div> <div id="file_properties"> <h1>2. :</h1> <table> <form method="post" name="uploadform"> <tr><td>:</td><td><input type="text" name="filename" readonly /> <input type="text" name="filesize" hidden></td></tr> <tr><td>:</td><td><input type="text" name="title" /></td></tr> <tr><td>:</td><td><textarea name="description"></textarea></td></tr> <tr><td> :</td><td><input type="text" name="keywords" /></td></tr> <tr><td></td><td><input type="submit" value="3. YouTube" /></td></tr> </table> </form> </div> </body> </html>
4. рд╕рдорд╛рдкрди рдХреЗ рдмрдЬрд╛рдп
рдореБрдЭреЗ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдпрд╣ рдХрд┐рд╕реА рдХреЛ рдорджрдж рдХрд░рддрд╛ рд╣реИ / рд╕рдордп рдмрдЪрд╛рддрд╛ рд╣реИ рдпрд╛ рдмрд╕ рдордЬрд╝реЗ рдХрд░рддрд╛ рд╣реИред рдореЗрд░реЗ рджреНрд╡рд╛рд░рд╛ рдкреНрд░рд╕реНрддреБрдд рд╡рд┐рдХрд▓реНрдк рдХреЛ рдЕрдВрддрд┐рдо рд░реВрдк рджрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ (рдХреНрдпрд╛ рдореИрдВ рдЗрд╕реЗ рдЧреАрдереВрдм рдкрд░ рдкреЛрд╕реНрдЯ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ?), рдзрдиреНрдпрд╡рд╛рдж рднрдЧрд╡рд╛рди рдмрд╣реБрдд рд╕рд╛рд░реА рдЪреАрдЬреЗрдВ рдЕрднреА рднреА рддрдп рдХреА рдЬрд╛ рд╕рдХрддреА рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдореЗрд░реЗ рд╡рд┐рдХрд╛рд╕ рдХреЗ рд╡рд┐рдХрд▓реНрдк рдХреНрдпрд╛ рд╣реИрдВ:
- рдХрд┐рд╕ рд╡рд┐рдХрд▓реНрдк рдХреЛ рд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд▓реЗрд▓рд┐рд╕реНрдЯ рдореЗрдВ рдЬреЛрдбрд╝реЗрдВ
- рдкреНрд░рдЧрддрд┐ рдмрд╛рд░ рдбрд╛рдЙрдирд▓реЛрдб
- рд╕реВрдЪрдирд╛рдПрдВ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░реЗрдВ
- рд╡реАрдбрд┐рдпреЛ рдЕрдкрд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рд╕ рдЪреИрдирд▓ рдХреЛ рдЪреБрдирдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рд╣реИ
- рдЧреБрдгрд╡рддреНрддрд╛ рдХрд╛ рдЪрдпрди рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ (рдмрд┐рдЯрд░реЗрдЯ рд░реВрдкрд╛рдВрддрд░рдг)
- рдФрд░ рд╢рд╛рдпрдж рдХреБрдЫ рдФрд░ ...
рдЖрдкрдХрд╛ рдзреНрдпрд╛рди рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж!
рдкреАрдПрд╕ рдХреЛрдб рдПрдХрджрдо рд╕рд╣реА рд╣реИ, рдпрд╣ "рдкреЙрд▓рд┐рд╢" рд╣реЛрдЧрд╛ред рдЕрдиреБрдХреВрд▓рди рдпреБрдХреНрддрд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдПрд╡рдЧреЗрдиреА рдмреЗрд╕реНрдкрд▓реА рдХрд╛ рдзрдиреНрдпрд╡рд╛рдж, рдореИрдВ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реВрдВрдЧрд╛редUPD: github =
https://github.com/1vank1n/YTupload/ рдкрд░ рдкреНрд░реЛрдЬреЗрдХреНрдЯ, рдореБрдЭреЗ рд╣рд░ рдХрд┐рд╕реА рдХреЛ рдЦреБрд╢реА рд╣реЛрдЧреА рдЬреЛ рдЗрд╕реЗ рджрд┐рдорд╛рдЧ рдореЗрдВ рд▓рд╛рдиреЗ рдореЗрдВ рдорджрдж рдХрд░реЗрдЧрд╛!