Тема: JS: Автокачалка сериалов с LostFilm.tv
С женой смотрим Хауса, и постоянно лазить на сайт надоело. Родился скрипт. Пока пашет. Будем ждать глюков. ![]()
//Скрипт для автоматической скачки сериалов с сайта lostfilm.tv
var WshShell = WScript.CreateObject("WScript.Shell");
var fso = new ActiveXObject("Scripting.FileSystemObject");
// Настройки ===============================================
// Это JScript, поэтому не забываем в путях дублировать \\
login = "user"; // логин
pass = "pass"; // пароль. хранить тут логин и пароль небезопасно
getCookies = false; // получать куки или нет
delCookies = false; // удялять ли куки после всех операций
urlAutorization = "http://lostfilm.tv/useri.php";
dirSaveTorrent = "i:\\scripts\\JS Проверка сериалов"; // на эту папку нужно натравить utorrent
dirWork = WScript.ScriptFullName.replace(WScript.ScriptName,"");
//dirWork = Можно указать путь вручную;
fileInfo = "info.txt"; // файл с текстом для samurize
filePics = "list.txt"; // файл с изображениями для samurize
fileLog = "history.log"; // файл лога
fileRSS = "tmpRSSfile.xml"; // файл полученной RSS ленты
fileCookies = "cookies.txt"; // название куки-файла
urlRSS = "http://www.lostfilm.tv/rssdd.xml";
films = ["Доктор ХаУс", "Обмани меня"];
//========================================================== c:\\Program Files\\Samurize\\Scripts\\
if (!dirWork.match(/\\$/)) dirWork+="\\";
fileRSSfull = dirWork + fileRSS;
fileCookiesfull = dirWork + fileCookies;
fileInfofull = dirWork + fileInfo;
filePicsfull = dirWork + filePics;
fileLogfull = dirWork + fileLog;
if (getCookies) WshShell.Run('wget -c ' + urlAutorization + ' --save-cookies="' + fileCookiesfull + '" --keep-session-cookies -O nul --post-data "FormLogin=' + login + '&FormPassword=' + pass + '&module=1&repage=user&act=login', 0, true);
WshShell.Run('wget -c -t 2 -w 10 ' + urlRSS + ' -O "' + fileRSSfull + '"', 0, true);
if (!fso.fileExists(fileRSSfull)) WScript.Quit() // Почему то не скачалось.
xmlParser = new ActiveXObject("Msxml2.DOMDocument");
xmlParser.async = false;
xmlParser.load (fileRSSfull);
if (xmlParser.parseError.errorCode)
{
//ShowError (xmlParser.parseError);
WScript.Quit();
}
items = new Array();
index=0;
colNodes = xmlParser.documentElement;
colNodes = new Enumerator(colNodes.getElementsByTagName("item"));
for (colNodes.moveFirst(); !colNodes.atEnd(); colNodes.moveNext())
{
e = colNodes.item().selectSingleNode("title").text;
for (i=0;i<films.length;i++)
{
if ((e.toLowerCase().match(films[i].toLowerCase())) && !e.toLowerCase().match("720p"))
{
items[index] = new Array(3);
items[index][0] = colNodes.item().selectSingleNode("title").text;
items[index][1] = colNodes.item().selectSingleNode("description").text.replace(/:/,":").replace(/./g,".").match(/http.*jpg/);
items[index][2] = colNodes.item().selectSingleNode("link").text;
index++;
}
}
}
xmlParser = "";
fso.DeleteFile(fileRSSfull, 1);
if (delCookies) fso.DeleteFile(fileCookiesfull, 1);
str="";img="";
if (items.length>0)
{
if (fso.FileExists(fileLogfull) && fso.GetFile(fileLogfull).Size>0)
{
txt = fso.GetFile(fileLogfull).OpenAsTextStream(1);
arr = txt.ReadAll().split("\r\n");
txt.Close();
}
else arr ="";
for (i=0;i<items.length;i++)
{
str += items[i][0] + '\r\n';
img += items[i][1] + '\r\n';
x = true;
if (arr.length>0)
{
for (j=0;j<arr.length;j++)
{
if (items[i][2]==arr[j]) {x = false; break;}
}
}
if (x)
{
SaveToFile (fileLogfull, items[i][2], 8);
WshShell.Run('wget -c ' + items[i][2] + ' --load-cookies="' + fileCookies + '" -P "' + dirSaveTorrent + '"', 0, true);
}
}
SaveToFile (fileInfofull, str, 2);
SaveToFile (filePicsfull, img, 2);
}
function SaveToFile (file, text, flag)
{
LogFile = fso.OpenTextFile(file, flag, true);
LogFile.WriteLine(text);
LogFile.Close();
}
function eh (text)
{
WScript.Echo(text)
}Требует
Менеджер закачек wget
Настроенный Торрент клиент utorrent
По желанию Samurize
Некоторые опции wget:
-P, --directory-prefix=PREFIX указание нашей папки слежения куда будет произведена загрузка файлов,
--keep-session-cookies ключ для сохранения и записи cookies
--load-cookies=FILE использовать cookies из файла FILE
--save-cookies=FILE сохранить cookies в файл FILE
-t, --tries=NUMBER количество попыток скачавания
-w, --wait=SECONDS пауза между попытками
Возмоожно так же не использовать файл с куками, а вставить значение полей в командную строку, вот так:
--header "Cookie: uid=xxxxxx; pass=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
wget использовал потому, что работать с куками посредством JScript не получается. Да и все равно я без wget-а никуда, он у меня всегда с собой. Torrent клиент писать на JS тоже не особо хочется.
Поэтому uTorrent
Я ко всему прочему использую еще программу Samurize, для вывода информации на рабочий стол. Она отлично настраивается и дружит со скриптами.
Вкраце:
wget-ом выкачивается лента новостей в формате xml, из него вытаскиваются фильмы с нужными названиями (массив films).
Информация о найденных фильмах идет по клочкам в разные файлы. Лог-файл для того, что бы не скачивать повторно (fileLog). Еще 2 файла для Samurize. В один файл идет текстовая информация для отображения, в другой файл ссылки на обложку фильма.
В скрипте можно прописать свои Логин и Пароль, но это небезопасно, поэтому лучше пользоваться файлом cookie. Его можно вытащить из браузера, либо получить с помощью wget, что и делается в этом скрипте. Можно единоразово прописать в скрипте свои регистрационные данные, получить cookies, а потом использовать.
В uTorrent нужно зайти в настройки и натравить слежение за папкой, куда будут складываться Torrent-файлы, и он будет отлично на автомате качать.
Вот так приблизительно это выглядит

