10.03.2019, 16:21 | #1 |
Главный Кинооператор
Любитель
|
АВТО-СИДИРОВАНИЕ РАЗДАЧ
В этой теме я буду пошагово создавать приложение-робот, который будет отслеживать появление сидов (желающих скачать) на моих раздачах и ставить их на раздачу в моём µTorrent. Каждые 15 минут он будет также определять торренты, на которых больше нет скачивающих и удалять торрент из µTorrent
Программа эта - для Кинозала, на языке AppleScript, для имеющих Mac OS X. Браузер будем использовать Safari Но вы можете использовать и другой. Потом покажу, как. После окончания проекта любой разработчик сможет переделать её на язык JavaScript, для имеющих Windows. ВАЖНО: Чтобы всё работало, вы должны дать право на управление вашим компьютером следующим программам Apple: 1) Script Editor 2)UI Element Server. Обе программы полностью безопасны и являются неоотъемлемой частью Mac OS X. После завершения скрипта мы превратим его в обычное приложение и тогда Script Editor будет не нужен Шаги будут комментироваться для ясности. Шаг 1. Открываем Редактор Скриптов и выбираем в меню "Создать новый скрипт". Тут всё итак ясно. Шаг 2. В новое пустое окно скрипта записываем следующую подпрограмму: on doWithTimeout(uiScript, timeoutSeconds) set endDate to (current date) + timeoutSeconds repeat try run script "tell application \"System Events\" " & uiScript & " end tell" exit repeat on error errorMessage if ((current date) > endDate) then error "Can not " & uiScript end if end try end repeat end doWithTimeout Цель подпрограммы - в отслеживании времени отклика команд. Я буду использовать 2 секунды. Если какая-то команда скрипта не сможет ответить в течении 2 секунд, то эта подпрограмма завершит скрипт, предупреждая зависание вашего скрипта. Скрипт будет прерван и будет показано сообщение об ошибке и о команде, потерпевшей неудачу. Итак, вам теперь должно быть понятно назначение этой подпрограммы. Использоваться она будет в нашем скрипте частенько. |
10.03.2019, 16:26 | #2 |
Главный Кинооператор
Любитель
|
Шаг 3. Создаём список нужных раздач и цикл повтора по его составляющим.
Продолжаем написание скрипта.
Оставляем пустую строку после подпрограммы выше и дописываем в наш скрипт следующий обрабочик (известный программистам как обработчик run): on run set timeoutSeconds to 2.0 set myPagesList to {"https://kinozal.guru/details.php?id=1534696", "https://kinozal.guru/details.php?id=1499615"} repeat with theItem in myPagesList set uiScript to "do shell script "open -a Safari '" & theItem & "'"" my doWithTimeout(uiScript, timeoutSeconds) end repeat end run 1-ое предложение - это начало, имя подпрогрммы (в данном случае, run). Так делается по шаблону определения любой подпрограммы (иначе говоря, обработчика команды). Но это имя особое: имя run указывает интерпретатору Applescript на то, что это главная подпрогррамма с которой всё и начинается. Хотя находиться она может и до и после других подпрограмм, исполнение скрипта всегда начинается только с неё 2-ое предложение - установка максимально допустимого отклика команд в 2 секунды. 3-е предложение - создание списка ссылок на раздачи. Для простоты я взял 2 моих. Этот список вы заполняете сами. Через запятую, количество раздач неограниченно). 4-ое по 7-ое предложения - это цикл повтора, который открывает поочередно страницы раздач, указанных вами в списке. 8-ое и последнее предложение - это шаблонное указание интерпретатору AppleScript на конец подпрограммы Теперь закройте браузер Safari, если он открыт. Проводим испытание кода - запустите скрипт в Редакторе Скриптов на исполнение. Если вы сделали всё правильно, то должны увидеть в Safari 2 указанныx мною страницы. Ссылки на страницы кинозальские, полностью безвредные. Но если опять же есть сомнения, вставьте свои - с соблюдением кавычек и запятых. Продолжу дальше после отклика кого-либо из вас. Это нужно для проверки скрипта на ошибки пошагово. Мне нужно знать, работает ли всё правильно и у вас. Изначально я залил тему а Разделе Кинооператоров, но там меньше народу имеют доступ, поэтому лучше сюда. Наболее полезно это приложение хранителям раздач, но там ещё меньше посетителей. Хранители сутками сидируют сотни и тысячи раздач. Это приложение сидировало бы умно. Не напрягая компьютер и сидируя то, что хотят скачать, а не всё подряд. Но она также полезна и кинооператорам (для поддержания своих раздач), и пользователям (для поддержания хорошего рейтинга скачиваемого/отдаваемого). Опять же, помогая торрент-клиенту экономить силы. Ну да, знаю, "не надо просто раздавать вообще", но эта тема касается добросовестных людей ресурса. Не все же заливалы и нехорошие человеки. Мир всё равно держится на добросовестных людях, которых больше. А остальные просто мажут себе душу грязью ради призрачных выгод. Конечно, и дураком быть не нужно Следующим шагом будет ОПРЕДЕЛЕНИЕ НАЛИЧИЯ СКАЧИВАЮЩИХ и РАЗДАЮЩИХ на кокретной раздаче из её HTML страницы. Назовём число это Peers (пиры). Затем мы зададим скрипту 1 условие для оптимизации процесса: если есть уже число Seeds (сиды) раздающих, то торрент-клиенту не брать раздачу на сидирование. Число Seeds задавать будете вы сами, для ещё большей гибкости. |
13.03.2019, 10:13 | #3 |
Разработчик
Любитель
|
Вроде бы понятно что вы делаете, но не ясно зачем это нужно. Хорошо бы написать об этом пару строчек.
Кажется, вы не учитываете, что раздачи на кинозале сетевые, следовательно клиенты могут найти вас через DHT или PEX и активно скачивать. Трекер ничего не знает о таких соединениях, и возможно, вернет вам 0 качающих, после чего скрипт остановит раздачу оборвав скачивание. |
15.03.2019, 20:49 | #4 |
Главный Кинооператор
Любитель
|
1) Чтобы не сидировать зря раздачи, на которых ничего не можешь отдать (отдают другие). 2) Чтобы хранители раздач раздавали меньше раздач, но реально. А так, они многие сидируют 500 и более раздач, а подключиться к ним невозможно. 3) Чтобы научить интересующихся программированием этому хобби. Хотя энтузиазма пока не видать. Я тут встречал в жизни много молодых людей, часами копающихся в HTML и подумал, что найдутся любители и среди пользователей Кинозала. Насчёт сетевых раздач вы правы отчасти, так как DHT пиры Кинозалом фиксируются |
16.03.2019, 11:25 | #5 |
Зритель
Новичок
|
Я, в общем, не специалист по файлообмену, но тут какое-то недопонимание. "Чистый" пир, пришедший к сиду по DHT и знать не знает ни о каком кинозале.тв, потому что у него нет торрент-файла от кинозала и его клиент не анонсит в кинозал. Соответственно, кинозал тоже не знает о таком пире. А вот если это клиент кинозала - то-есть скачал торрент-файл, но у него включен DHT, то такой клиент, вероятно, может прийти к сиду по DHT, и будет виден на трекере. |
17.03.2019, 05:32 | #6 |
Зритель
Завсегдатай
|
Сиду по DHT без разницы с какого трекера качают с его клиента, так как вся его отдача учтется на трекере, на котором он зарегистрирован, т.е. в его отдаче может быть отданное и "своим", и "чужим". На трекере нет учета типа: 1) отданное "своим"; 2) скачанное от "своих"; 3) отданное "чужим"; 4) скачанное от "чужих". Есть только: 1) скачанное от "своих" + скачанное от "чужих" без разделения от "своих" и от "чужих"; 2) отданное "своим" + отданное "чужим" без разделения на "своим" и "чужим". |
17.03.2019, 19:23 | #7 |
Зритель
Новичок
|
Тема обсуждения вообще-то была не про трафик, а про "видимость" в веб-интерфейсе DHT-пиров...
|
28.03.2019, 08:13 | #8 |
Зритель
Завсегдатай
|
Cкрытый текст - Да и текущее сообщение не лучше предыдущего, т.е. неизвестно о том, что Вы хотели сказать вашими: "про "видимость" в веб-интерфейсе DHT-пиров...". Изучите тему "Как правильно задавать вопросы и давать ответы" ( //forum.kinozal.me/showthread.php?t=132709 ), объедините сообщения //forum.kinozal.me/showpost.php...36&postcount=5 и //forum.kinozal.me/showpost.php...72&postcount=7 и изложите в такой форме, чтобы читающий или отвечающий не задумывался над смыслом написанного. Если некоторые места текста словесно не сможете передать, то в тексте сообщения используйте и скриншоты со стрелками, чтобы читающие или отвечающие видели наглядно вашу цель. На ...lab.net мне даже приходилось отвечать с последовательными скриншотами вообще без слов в сообщениях пользователям трекера из других стран из-за того, что не уверен был, что google-перевод правильно переведет написанное. Не делайте попыток "огрызаться" до завершения диспута. После завершения диспута можете послать хоть на "край света". Не часто, но попадаются пользователи трекера, которые думают, что им написанное должны понимать все, например: Cкрытый текст - Естественно, написанное им никуда не перенесли, так как никто не знает о том, что он хотел сказать своим написанным. Узнать о том, кто мог выставить, возможно, поможет: Cкрытый текст - Если не сможете понять, то отвечу подробней. |