Ма­ло­по­нят­ный за­го­ло­вок, со­гла­сен, но поз­вольте мне объ­яс­нить­ся: когда-то в про­шлом, бу­ду­чи под воз­дей­стви­ем опи­а­тов или ка­ких-то дру­гих тя­же­лых нар­ко­ти­ков, поз­во­ля­ю­щих мне по­чув­ство­вать се­бя чу­точ­ку счаст­ли­вее, я сде­лал проигры­ва­тель ви­део­файлов, рас­про­стра­ня­е­мых по пи­рин­го­вым се­тям про­то­ко­ла torrent без необ­хо­ди­мо­сти их пол­ной за­груз­ки. В двух сло­вах, жде­те 10% под­груз­ки и по­том смот­ри­те се­бе ки­но­ш­ку без необ­хо­ди­мо­сти ожи­да­ния за­груз­ки осталь­но­го, впол­не удоб­но, осо­бен­но для вся­ких там се­ри­а­лов. Но, как и всё, что я де­лаю бес­плат­но и под воз­дей­стви­ем га­лю­ци­но­ге­нов и эй­фо­ре­ти­ков, ра­бо­та­ло это из рук вон хуй­о­во -  бы­ли пробле­мы с ли­ней­ным ал­го­рит­мом за­груз­ки, когда ми­ни­а­тюр­ные кус­ки по 1-5 ки­ло­байт вы­па­да­ли из piecepicking query, а де­ко­дер пле­е­ра на этом за­хле­бы­вал­ся за ми­лую ду­шу. Бы­ли пробле­мы с mplayer-ом, ко­то­рый очень не­хо­тя цеп­лял­ся че­рез hid windows forms компо­нен­та. Но, как ни стран­но, на­шлись и дор­чи­та­те­ли это­го бло­жи­ка, ко­то­рым очень да­же по­нра­ви­лось. И вот они на­ча­ли за­бра­сы­вать ме­ня ба­гре­пор­та­ми, мол не ра­бо­та­ют саб­тит­ры, не­льзя вы­брать звуко­вую до­рож­ку, не­льзя вы­брать, ка­кой имен­но файл из тор­рен­та смот­реть. На все это я от­ве­чал, что уди­ви­тель­но, что оно во­об­ще ра­бо­та­ет, лю­без­но предла­гая предо­ста­вить ис­ход­ни­ки. Но, увы, эн­ту­зи­а­стов, го­то­вых хоть сколь­ко-то по­мочь в раз­ра­ботке, в на­личии не ока­за­лось, а пись­ма все про­дол­жа­ли капать и капать - да­вать дель­ные со­ве­ты, как из­вест­но, это вам не меш­ки во­ро­чать. Ну те­перь мож­но все вы­ше­пере­чис­лен­ное, ко­ро­че го­во­ря. От­кры­ваю вам страш­ную тайну, для се­бя ме­ся­ца 2-3 то­му на­зад я на­пи­сал отдель­ную вер­сию, так ска­зать, ис­прав­лен­ное и об­лег­чен­ное из­да­ние, ли­шен­ное большинства недо­стат­ков ори­ги­на­ла. И да­же основ­но­го - ужас­ное GUI бы­ло на­чи­сто за­ме­не­но лам­по­вым чер­ным кон­соль­ным ок­ном. К то­му же, был пол­но­стью пере­пи­сан ал­го­ритм за­груз­ки, он ра­бо­та­ет чу­точ­ку медлен­нее по при­чи­не необ­хо­ди­мо­сти под­тя­ги­вать кус­ки по­сле­до­ва­тель­но, за­то файлы не ло­ма­ет и поз­во­ля­ет да­же ис­поль­зо­вать пере­мотку в пре­де­лах за­гру­жен­но­го от­рез­ка ви­део файла (все еще в экс­пе­ри­мен­таль­ном ре­жи­ме, как я не пы­тал­ся сде­лать byte by byte, все рав­но идет раз­бив­ка на кус­ки и па­рал­лель­ная за­груз­ка, в этом весь бит­тор­рент). На­зы­ва­ет­ся эта вер­сия GrandTorrino и, бил­да­ни я эту вер­сию го­ду так в 2007, всем мог бы го­во­рить, что фильм Клин­та Ист­ву­да на­зван имен­но в честь нее. Но, ка­жись, все нао­бо­рот. Исполь­зо­ва­ние очень про­стое - drag and drop torrent файл на exe-шник GrandTorrino, ждем 10% бу­фе­ри­за­ции и го­то­во. Если в тор­рен­те 1 файл - все прой­дет само со­бой, если больше 1го - вас спро­сят, ка­кой имен­но вы хо­те­ли бы по­смот­реть. Все хоткеи для mplayer мож­но узнать в при­ла­га­е­мом файле mplayer.html, они немного необыч­ные. Ска­чать по­след­нюю вер­сию мож­но тут. Для ра­бо­ты необ­хо­дим .net framework 3.5, и запас алч­но­сти, поз­во­ля­ю­щий вам во­ро­вать чеcт­но за­ра­бо­тан­ные день­ги из ды­ря­во­го кар­ма­на ни­щих пра­во­обла­да­телей. 

А те­перь, да­вайте по су­ти. Мне очень нра­вят­ся подоб­ная идея - на­ру­ше­ние ав­торских прав без ожи­да­ния и очень пе­ча­лит факт от­сут­ствия нор­маль­ной ре­а­ли­за­ции. Нет, ко­неч­но моя вер­сия ра­бо­та­ет и с по­став­лен­ной за­да­чей справ­ляет­ся, но хо­те­лось бы че­го-то больше­го, ин­ту­и­тив­но-удоб­но­го и при­ят­но­го, а у ме­ня для для та­ко­го не хва­та­ет ни зна­ний, ни вре­ме­ни, ни моти­ва­ции - ра­бо­та­ет же и сей­час, за­чем мне что-то большое? Так вот, я отдам все ис­ход­ни­ки по запро­су на email или в скайп, ука­зан­ный в за­го­лов­ке это­го бло­га. Вы смо­же­те де­лать с ни­ми все, что ду­ша по­же­ла­ет - про­да­вайте, во­руй­те, уби­вайте, де­лайте стар­тап, но я все­гда дол­жен бу­ду иметь до­ступ к ис­ход­ни­кам, при­род­ное лю­бо­пыт­ство и все де­ла. На­пи­са­но все на C#, код ко­неч­но не ах­ти ка­кой, но я по­ста­ра­юсь все при­ак­ку­ра­тить к пере­да­че, что­бы стыд­но не бы­ло мо­им ста­рень­ким учи­те­лям ин­фор­ма­ти­ки, ко­то­рых у ме­ня ко­неч­но же не бы­ло. В ка­че­стве про­верки, что вы не ка­кой-то хер с го­ры, вам нуж­но бу­дет показать технику гроула расска­зать, как мож­но рас­счи­тать необ­хо­ди­мый про­цент бу­фе­ри­за­ции, имея ско­рость за­груз­ки за по­след­ние 10 се­кунд, вес файла и его аудио-ви­део бит­рейт и как опре­де­лить, что проигры­ва­ние идет бы­стрее ска­чи­ва­ния файла с по­мо­щью стан­дарт­но­го mplayer вы­во­да. А во­об­ще, шу­чу ко­неч­но. Без проблем вы­шлю и так + мо­ди­фи­ци­ро­ван­ную биб­лио­те­ку MonoTorrent в до­ве­сок. Спа­си­бо­по­жа­луй­ста.