|
Предыдущая тема :: Следующая тема |
Автор |
Сообщение |
slamwidth100@rambler.ru
Зарегистрирован: 13.03.2009 Сообщения: 8
|
Добавлено: 2009-03-19 23:23 pm Заголовок сообщения: |
|
|
помогите разобраться чайнику либо за спасибо, либо за денежку
дайте работоспособый скрипт по Win(для генерации только ДС++ по нетбиосу), с консольной программой для хэширования.
С тем что выше, что-то не получается, да и tthsum найти не могу |
|
Вернуться к началу |
|
Hiller
Зарегистрирован: 02.03.2008 Сообщения: 70
|
Добавлено: 2009-03-20 00:33 am Заголовок сообщения: |
|
|
PoisoN писал(а): | На здоровье
Если вдруг будут проблемы с отображением кирилицы в именах файлов - обращайтесь, расскажу что к чему. Сам промучался много с этим... |
Проблемы с русским таки остались
Браузинг расшаренных файлов отображает все корректно, а вот в поиске файл по TTH находится, но имя и путь у него находится в KOI8 (карякозябры). Клиент FlyLinkDC.
PoisoN, Вам не доводилось решать такую проблему?
Добавлено спустя 3 minutes 51 seconds:
slamwidth100@rambler.ru писал(а): | помогите разобраться чайнику либо за спасибо, либо за денежку
дайте работоспособый скрипт по Win(для генерации только ДС++ по нетбиосу), с консольной программой для хэширования.
С тем что выше, что-то не получается, да и tthsum найти не могу |
Искать надо tthsum.exe. Чтобы работал указанный выше скрипт (версия на perl), надо установить интерпретатор Perl и MySQL-Client, в скрипте указать параметры подключения к базе. Насчет Netbios - не знаю, файлы будут икаться по тем ссылкам, которые внутри базы каталога. Кроме двух приведенных в этой теме скриптов, других доступных публично я не видел. |
|
Вернуться к началу |
|
slamwidth100@rambler.ru
Зарегистрирован: 13.03.2009 Сообщения: 8
|
Добавлено: 2009-03-20 01:21 am Заголовок сообщения: |
|
|
Помогайте разобраться
Код: |
#!perl -w
use strict;
use warnings;
my $mysql = "mysql"; //Что надо писать тут?
my $tthsum = "tthsum"; //Что надо писать тут?
my $dbcharset = "cp1251";
my ($db, $user, $pass) = ('база','юзер','пароль');
foreach(`"$mysql" -u$user -p$pass $db -Ne "set names $dbcharset; select ID,Size,Path,Name from files where dcpplink='' and Path not like 'ftp%'"`){
my ($id, $size, $path, $name) = (split /\t/, $_);
chomp $name; s/\s+/_/g for $name;
my $hash = $1 if (`$tthsum "$path"`) =~ /(\S+)/;
my $dcpp="magnet:?xt=urn:tree:tiger:$hash&xl=$size&dn=$name";
system("$mysql -u$user -p$pass $db " . ' -e " set names ' . "$dbcharset; update files set dcppLink=\'$dcpp\' where ID=$id" . '"' ) ;
print "updating $name with dcpp link $dcpp\n" ;
}
|
Или напишите плиз, ктонить для примера. Есть база: mediateka, логин: admin pass: 123456
напишите что где вставить.
И ещё вопрос не по теме, но может конить ответит, при генерации скриншотов на фильмах hdtv(и походу не только на них, а на любых файлах больше 2 ГБ) видны только черные прямоугольники.[/code]
Добавлено спустя 3 minutes 36 seconds:
а tthsum нашел давно, просто не знал как ей пользоваться.
Чтобы другим не искать, прикрепил.
Добавлено спустя 2 minutes 23 seconds:
11 |
|
Вернуться к началу |
|
Hiller
Зарегистрирован: 02.03.2008 Сообщения: 70
|
Добавлено: 2009-03-20 06:51 am Заголовок сообщения: |
|
|
Пиши параметры подключения к базе в строчку:
Код: | my ($db, $user, $pass) = ('база','юзер','пароль'); |
Добавлено спустя 1 minute 35 seconds:
Черные прямоугольники. Хм... У меня только на битых файлах. Чем дергаешь кадры? |
|
Вернуться к началу |
|
PoisoN
Зарегистрирован: 22.04.2008 Сообщения: 48 Откуда: Чернигов
|
Добавлено: 2009-03-20 08:45 am Заголовок сообщения: |
|
|
Hiller писал(а): |
Проблемы с русским таки остались
Браузинг расшаренных файлов отображает все корректно, а вот в поиске файл по TTH находится, но имя и путь у него находится в KOI8 (карякозябры). Клиент FlyLinkDC.
PoisoN, Вам не доводилось решать такую проблему?
|
Именно с этой проблемой я и воевал несколько часов
Не буду сильно углубляться в подробности, перейду сразу к решению - нужно в исходниках, в файле main.c, найти такой блок
Цитата: |
set_main_charset("");
set_hub_charset("");
set_fs_charset("");
|
и тут дописать в первую строку кодировку.
Т.е. получится set_main_charset("koi8-r");
После этого все пересобрать и переустановить.
Вуаля |
|
Вернуться к началу |
|
Hiller
Зарегистрирован: 02.03.2008 Сообщения: 70
|
Добавлено: 2009-03-20 12:01 pm Заголовок сообщения: |
|
|
Ага, я уже тоже начал рыть исходники, тоже нашел этот самый main. Но еще не докапался до сути. Сейчас попробую твой - кратчайший путь. Огромное спасибо! |
|
Вернуться к началу |
|
PoisoN
Зарегистрирован: 22.04.2008 Сообщения: 48 Откуда: Чернигов
|
Добавлено: 2009-03-20 12:17 pm Заголовок сообщения: |
|
|
Hiller писал(а): | Ага, я уже тоже начал рыть исходники, тоже нашел этот самый main. Но еще не докапался до сути. Сейчас попробую твой - кратчайший путь. Огромное спасибо! |
Пожалуйста.
Я начинал рыть исходники с обратной стороны
Мейн - это была уже конечная точка |
|
Вернуться к началу |
|
slamwidth100@rambler.ru
Зарегистрирован: 13.03.2009 Сообщения: 8
|
Добавлено: 2009-03-20 19:03 pm Заголовок сообщения: |
|
|
при запуске выскакивает ошибка
выскакивает ошибка mysql не является внутренней или внешней командой. Походу надо чтобы он обращался к mysql.
my $mysql = "mysql";
тут надо указывать пусть к мускулу???
my $mysql = "mysql";
если вписать my $mysql = "пусть к файлу\mysql.exe";
то пишет unrecognized escape \S passed through at C:\script.pl line 5
то пишет unrecognized escape \S passed through at C:\script.pl line 5
то пишет unrecognized escape \M passed through at C:\script.pl line 5
то пишет unrecognized escape \m passed through at C:\script.pl line 5
тут походу что-то элементарное, но я не знаю что делать, помоги плиз |
|
Вернуться к началу |
|
Angel
Зарегистрирован: 29.02.2008 Сообщения: 79
|
Добавлено: 2009-03-20 20:47 pm Заголовок сообщения: |
|
|
Попробуй типа такого
$mysql = "C:/mysql/bin/mysql.exe"; |
|
Вернуться к началу |
|
slamwidth100@rambler.ru
Зарегистрирован: 13.03.2009 Сообщения: 8
|
Добавлено: 2009-03-20 20:56 pm Заголовок сообщения: |
|
|
тож самое выскакивает
то пишет unrecognized escape \S passed through at C:\script.pl line 5
то пишет unrecognized escape \S passed through at C:\script.pl line 5
то пишет unrecognized escape \M passed through at C:\script.pl line 5
то пишет unrecognized escape \m passed through at C:\script.pl line 5
Добавлено спустя 10 minutes 45 seconds:
ой, вру, сча буду тестировать, всё дело в слэшах, спс большое
Добавлено спустя 47 minutes 23 seconds:
вроде всё работает. спасибо.
ещё один вопросик не в тему(чтобы тему отдельную не создавать)
где можно убрать картинки для просмотра(всмысле на сайте будут только ссылки ДС++, и больше ничего, надо убрать картинки различных плееров. В каком файле это можно подкорректировать.
Добавлено спустя 1 hour 59 minutes 48 seconds:
ещё один вопрос назрел
при генерации ДС++ ссылок, почемуто в некоторых файлах хэш не сгенерировался, и ссылки получились без хэша и следовательно они нерабочие.
Из за чего это может быть, и как это можно исправить? перхэшировать можно автоматом(если перезапущу скрипт, всё перехэшируется?), т.к руками тяжеловато всё это буит делать. |
|
Вернуться к началу |
|
zzaraza
Зарегистрирован: 26.12.2008 Сообщения: 40
|
Добавлено: 2009-03-23 07:16 am Заголовок сообщения: |
|
|
slamwidth100@rambler.ru писал(а): |
при генерации ДС++ ссылок, почемуто в некоторых файлах хэш не сгенерировался, и ссылки получились без хэша и следовательно они нерабочие.
Из за чего это может быть, и как это можно исправить? перхэшировать можно автоматом(если перезапущу скрипт, всё перехэшируется?), т.к руками тяжеловато всё это буит делать. |
1. Кодировка
2. Недопустимые символы или пробелы в названии файла
3. Недоступность файла на момент работы скрипта |
|
Вернуться к началу |
|
Kinard
Зарегистрирован: 07.05.2009 Сообщения: 1
|
Добавлено: 2009-05-09 06:40 am Заголовок сообщения: |
|
|
Есть предложение не генерировать TTH, а выдирать его из файла DC клиента.
На примере StrongDC это файл HashIndex.xml в котором данные в таком виде:
<File Name="v:\films\300 спартанцев.avi" TimeStamp="1175028000" Root="CQQBGKDPS4KHNGEGVFCG223CSENHY4SGXPZ3TVY" />
Так как файл admin.php зазенден, могу я поинтересоваться, какие мне надо сделать действия, чтобы на вкладке "Редактор фильмов" поле "Ссылка DC++" заполнялось моим скриптом? Или проще в какой-нить header.php встроить функцию проверки БД видеокаталога на отсутствие ссылки DC++ и заполнения автоматически?
Сделал такой скрипт: dc++.php Код: | <?php
// Конфигурация скрипта
require_once "config.php";
$StrongDC = "c:\Program Files\StrongDC\Settings\HashIndex.xml";
// Функции
function Parsing_StrongDC($file,$Film_path)
{
$message = " Парсим файл StrongDC на наличие фильма $Film_path...";
Write_Message($message);
$currentTag = "";
$currentAttribs = "";
$xmlParser = xml_parser_create('UTF-8');
xml_set_element_handler($xmlParser, "startElement", "endElement");
if (!($fp = fopen($file, "r"))) {die("could not open XML input");}
while ($data = fgets($fp)) {
if (!xml_parse($xmlParser, $data, feof($fp))) {
echo "<br>XML Error: ";
echo xml_error_string(xml_get_error_code($xmlParser));
echo " at line ".xml_get_current_line_number($xmlParser);
break;
}
}
xml_parser_free($xmlParser);
}
function startElement($parser, $name, $attribs) {
global $currentTag, $currentAttribs, $Film_path, $TTH;
$currentTag = $name;
$currentAttribs = $attribs;
switch ($name)
{
case "FILE":
while (list ($key, $value) = each ($attribs))
{
if (str_replace("/", "\\", strtolower($Film_path)) == iconv('UTF-8', 'cp1251', $value))
{
echo (" Найден элемент $key : ".iconv('UTF-8', 'cp1251', $value)."<br>");
echo (" Найден элемент ROOT : $attribs[ROOT]<br>");
$TTH = $attribs[ROOT];
global $TTH;
}
}
break;
default:
break;
}
}
// Данная функция не используется, но должна быть определена.
function endElement($parser, $name)
{}
function Write_Message($message)
{echo "$message<br>";}
// Связываемся с базой данных
$idSQLConnection = mysql_connect($config['mysqlhost'], $config['mysqluser'], $config['mysqlpass']);
if ( !$idSQLConnection )
{
$message = "Критическая ошибка на сервере. Ошибка при подключении к базе данных.";
Write_Message($message);
exit;
}
$result = mysql_select_db( $config['mysqldb'], $idSQLConnection );
if ( !$result )
{
$message = "Критическая ошибка на сервере. Ошибка при выборе базы данных.";
Write_Message($message);
exit;
}
$result = mysql_query("SELECT * FROM `files` WHERE `dcppLink` = ''");
$row = mysql_fetch_array($result,MYSQL_ASSOC);
if (mysql_num_rows($result)==0)
{
$message = "Фильмов без ссылок DC++ не найдено.";
Write_Message($message);
exit;
}
else {
$message = "Найден фильм <b>$row[Name]</b> без ссылки DC++";
Write_Message($message);
$Film_path = $row[Path];
Parsing_StrongDC($StrongDC,$row[Path]);
$Link = "magnet:?xt=urn:tree:tiger:$TTH&xl=$row[Size]&dn=$row[Name]";
$message = " Создали ссылку DC++ : <b>$Link</b>";
Write_Message($message);
$result = mysql_query("UPDATE `files` SET `dcppLink` = '".$Link."' WHERE `ID` = ".$row[ID]);
$message = " Записали ссылку в базу";
Write_Message($message);
$result = mysql_query("UPDATE `films` SET `Hide` = 0 WHERE `ID` = ".$row[FilmID]);
$message = " Открыли фильм в каталоге";
Write_Message($message);
}
?> |
Данный скрипт ложится в корень скрипта видеокаталога.
ОС: Win
Фильмы: локально
Клиент DC++: локальный StrongDC++
Прошу сильно не пинать.
Последний раз редактировалось: Kinard (2009-05-12 12:31 pm), всего редактировалось 1 раз |
|
Вернуться к началу |
|
Hiller
Зарегистрирован: 02.03.2008 Сообщения: 70
|
Добавлено: 2009-05-11 04:09 am Заголовок сообщения: |
|
|
Далеко не у всех винда, поэтому способ не универсальный.
Заполнять TTH ты можешь не привязываясь к коду каталога, а писать его прямо в базу mysql, как это сделано в приведенном выше скрипте. |
|
Вернуться к началу |
|
Олег Травин
Зарегистрирован: 29.02.2008 Сообщения: 4
|
Добавлено: 2009-06-12 14:26 pm Заголовок сообщения: |
|
|
может есть у кого идеи как сделать генерацию магнет ссылки для bittorrent? |
|
Вернуться к началу |
|
Angel
Зарегистрирован: 29.02.2008 Сообщения: 79
|
Добавлено: 2009-11-30 17:50 pm Заголовок сообщения: |
|
|
Переделал скрипт для создания торрент-файлов и добавления их на сайт. Если кому то нужен, могу выложить |
|
Вернуться к началу |
|
|
|
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете голосовать в опросах Вы не можете вкладывать файлы Вы не можете скачивать файлы
|
|