Вернуться   Форум > Помощь Зрителям > Как скачивать и раздавать
Регистрация Справка Пользователи Календарь Поиск Сообщения за день Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме
Старый 10.03.2019, 16:21   #1
KniazidisR
Главный Кинооператор
Медаль пользователю. ЗОЛОТО Любитель
Регистрация: 13.08.2016
Адрес: Греция
Сообщения: 199
Репутация: 24
АВТО-СИДИРОВАНИЕ РАЗДАЧ

В этой теме я буду пошагово создавать приложение-робот, который будет отслеживать появление сидов (желающих скачать) на моих раздачах и ставить их на раздачу в моём µ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
KniazidisR
Главный Кинооператор
Медаль пользователю. ЗОЛОТО Любитель
Регистрация: 13.08.2016
Адрес: Греция
Сообщения: 199
Репутация: 24
Шаг 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
Sapwood
Разработчик
Медаль пользователю. ЗОЛОТО Любитель
Аватар для Sapwood
Регистрация: 13.11.2015
Сообщения: 176
Репутация: 37
Вроде бы понятно что вы делаете, но не ясно зачем это нужно. Хорошо бы написать об этом пару строчек.

Кажется, вы не учитываете, что раздачи на кинозале сетевые, следовательно клиенты могут найти вас через DHT или PEX и активно скачивать. Трекер ничего не знает о таких соединениях, и возможно, вернет вам 0 качающих, после чего скрипт остановит раздачу оборвав скачивание.
  Ответить с цитированием
Старый 15.03.2019, 20:49   #4
KniazidisR
Главный Кинооператор
Медаль пользователю. ЗОЛОТО Любитель
Регистрация: 13.08.2016
Адрес: Греция
Сообщения: 199
Репутация: 24
Sapwood сказал(a):
Вроде бы понятно что вы делаете, но не ясно зачем это нужно. Хорошо бы написать об этом пару строчек.

Кажется, вы не учитываете, что раздачи на кинозале сетевые, следовательно клиенты могут найти вас через DHT или PEX и активно скачивать. Трекер ничего не знает о таких соединениях, и возможно, вернет вам 0 качающих, после чего скрипт остановит раздачу оборвав скачивание.

1) Чтобы не сидировать зря раздачи, на которых ничего не можешь отдать (отдают другие).
2) Чтобы хранители раздач раздавали меньше раздач, но реально. А так, они многие сидируют 500 и более раздач, а подключиться к ним невозможно.
3) Чтобы научить интересующихся программированием этому хобби. Хотя энтузиазма пока не видать. Я тут встречал в жизни много молодых людей, часами копающихся в HTML и подумал, что найдутся любители и среди пользователей Кинозала.

Насчёт сетевых раздач вы правы отчасти, так как DHT пиры Кинозалом фиксируются
  Ответить с цитированием
Старый 16.03.2019, 11:25   #5
freshmeat
Зритель
Новичок
Регистрация: 12.11.2018
Сообщения: 71
Репутация: 7
KniazidisR сказал(a):
Насчёт сетевых раздач вы правы отчасти, так как DHT пиры Кинозалом фиксируются


Я, в общем, не специалист по файлообмену, но тут какое-то недопонимание. "Чистый" пир, пришедший к сиду по DHT и знать не знает ни о каком кинозале.тв, потому что у него нет торрент-файла от кинозала и его клиент не анонсит в кинозал. Соответственно, кинозал тоже не знает о таком пире.

А вот если это клиент кинозала - то-есть скачал торрент-файл, но у него включен DHT, то такой клиент, вероятно, может прийти к сиду по DHT, и будет виден на трекере.
  Ответить с цитированием
Старый 17.03.2019, 05:32   #6
anyanskkztvsss
Зритель
Медаль пользователю. ЗОЛОТО Завсегдатай
Регистрация: 22.01.2017
Сообщения: 419
Репутация: 25
freshmeat сказал(a):
Я, в общем, не специалист по файлообмену, но тут какое-то недопонимание. "Чистый" пир, пришедший к сиду по DHT и знать не знает ни о каком кинозале.тв, потому что у него нет торрент-файла от кинозала и его клиент не анонсит в кинозал. Соответственно, кинозал тоже не знает о таком пире.
"Чистому" пиру (пиру этого трекера) пришедшему к Сиду по DHT нет необходимости распознавать его как "свой" или "чужой", т.е. скачанное полностью учтется, если даже "чистый" пир этого трекера полностью скачает все части файла с Сида по DHT.
Сиду по DHT без разницы с какого трекера качают с его клиента, так как вся его отдача учтется на трекере, на котором он зарегистрирован, т.е. в его отдаче может быть отданное и "своим", и "чужим".


freshmeat сказал(a):
А вот если это клиент кинозала - то-есть скачал торрент-файл, но у него включен DHT, то такой клиент, вероятно, может прийти к сиду по DHT, и будет виден на трекере.
На трекере видны Пиры и Сиды с passkey этого трекера, т.е. пользователи интернета, зарегистрированные на этом трекере и их объём трафика файлообмена не зависит от типа Пиров (Сидов и Личеров).
На трекере нет учета типа:
1) отданное "своим";
2) скачанное от "своих";
3) отданное "чужим";
4) скачанное от "чужих".
Есть только:
1) скачанное от "своих" + скачанное от "чужих" без разделения от "своих" и от "чужих";
2) отданное "своим" + отданное "чужим" без разделения на "своим" и "чужим".
  Ответить с цитированием
Старый 17.03.2019, 19:23   #7
freshmeat
Зритель
Новичок
Регистрация: 12.11.2018
Сообщения: 71
Репутация: 7
Тема обсуждения вообще-то была не про трафик, а про "видимость" в веб-интерфейсе DHT-пиров...
  Ответить с цитированием
Старый 28.03.2019, 08:13   #8
anyanskkztvsss
Зритель
Медаль пользователю. ЗОЛОТО Завсегдатай
Регистрация: 22.01.2017
Сообщения: 419
Репутация: 25
freshmeat сказал(a):
Тема обсуждения вообще-то была не про трафик, а про "видимость" в веб-интерфейсе DHT-пиров...
Да, Вы своё сообщение //forum.kinozal.me/showpost.php...36&postcount=5 изложили в той форме, что без "бутылки" не разберешься:

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крытый текст -
 

Естественно, написанное им никуда не перенесли, так как никто не знает о том, что он хотел сказать своим написанным.

freshmeat сказал(a):
Вот у вас в минипрофиле написано что вы "разработчик". Это соответствует действительности? Если да, то в какой области, если не секрет?
Если прямо ответить, то: "Спросите у того, кто выставил этот статус?".
Узнать о том, кто мог выставить, возможно, поможет:

Cкрытый текст -
Если не сможете понять, то отвечу подробней.
  Ответить с цитированием
Ответ


Здесь присутствуют: 11 (пользователей - 0 , гостей - 11)
 
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск



Часовой пояс GMT +3, время: 04:19.