Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

MyDC.ru _ Запросы скриптов для PtokaX _ Релизы с phpbb3 форума/трекера..

Автор: serrrios 13.6.2009, 19:38

Собсно вот, имею трекер на двжике ppkbb3cker, он в свою очередь построен на форуме phpbb3, хотелось бы организовать вывод релизов в дц.
Птока 0.4.1.1 API2.

Помойму само гуманное будет сделать сбор данных с базы данных мускл.

Примерный алгоритм: Лезем в таблицу "topics", сортируем записи по столбцу `topic_time`(DESC(вроде по убыванию)). Берем запись, из неё столбцы: 'topic_title' для названия, 'topic_id' для построения ссылки, 'topic_first_poster_name' для ника релизера...

Что нужно от скрипта:
1 Вывод на главную по времени, вывод в пм при входе
2 Настройка префиск таблиц для базы данных.
3 Возможность задать кол-во отображаемых релизов.
4 Возможность задать адресс сайта из которого формировать ссылки.. (пример: "http://game-forum.g-service.ru/tracker/viewtopic.php?t=")

Примерный вывод как в скрипте FreshStuff:

Код
--------- Последние 3 релиза/тем с трекера--------

1     'topic_title' <<  'адресс сайта для ссылы на темы''topic_id' >> (Добавил 'topic_first_poster_name')
2     Half-Quake: Amen (2009) [ENG] {L} (Sadism / Horror / Action / Indie) <<  http://game-forum.g-service.ru/tracker/viewtopic.php?t=228 >> (Добавил serrrios)
3     Supernatural.S04E21+E22.rus.vanogroup.ru (Детектив/Драма/Сериал/Ужасы/Фэнтези) <<  http://game-forum.g-service.ru/tracker/viewtopic.php?t=230&f=15 >> (Добавил serrrios)

Автор: Otshelnik-Fm 14.6.2009, 3:20

А RSS - неа?

Автор: serrrios 14.6.2009, 6:07

Цитата(Otshelnik-Fm @ 14.6.2009, 4:20) *
А RSS - неа?

Во первых, для рсс нужны извраты с движком..
Во вторых, я не видел на птоку нормального скрипта рсс..

Автор: Jaska 14.6.2009, 12:38

Юзайте  ppkBB3.lua ( 2.17 килобайт ) : 58

Автор: serrrios 14.6.2009, 16:17

Огромное спасибо за скрипт.
К сожелению не все работает корректно.
1. Релизы брались не последнии, а первые. Решил добавлением одной команды в скл запрос:

Цитата
cur = conn:execute("SELECT "..dbprefix.."topic_id, "..dbprefix.."forum_id, "..dbprefix.."topic_title, "..dbprefix.."topic_first_poster_name FROM topics ORDER BY "..dbprefix.."topic_time DESC")

2. Не работает вывод релизов в пм при входе на хаб. Исправить не смог.
3. Забыл сказать что базы в UTF-8, надо наверно сделать выбор между кодировками в скрипте. Исправить тоже не смог, попробывал функ-ию "utf8towinru" из http://mydc.ru/topic111.html?view=findpost&p=9593 , но из-за скромных познаний луа прикрепить тоже не смог =((
4. Еще мелкий баг, даже скорее просто придирка =) Сообщение о релизах в чате писалось не от бота, т.е. было так:
Код
[20:49:53] Последни(й/е) 1 релиз(а/ов) с трекера

А надо было:
Код
[20:59:55]<[BOT]Злюка> Последни(й/е) 1 релиз(а/ов) с трекера

Поправил так:
Цитата
local sMsg = "<"..sBot.."> Последни(й/е) "..tostring(nReleases).." релиз(а/ов) с трекера\n"

Автор: Jaska 14.6.2009, 18:11

Честно - не знаю, получится или нет, но попробуй ..

Для начала добавь этот код

CODE
local utf8_decode={
[128]={[147]='\150',[148]='\151',[152]='\145',[153]='\146',[154]='\130',[156]='\147',[157]='\148',[158]='\132',[160]='\134',[161]='\135',[162]='\149',[166]='\133',[176]='\137',[185]='\139',[186]='\155'},
[130]={[172]='\136'},
[132]={[150]='\185',[162]='\153'},
[194]={[152]='\152',[160]='\160',[164]='\164',[166]='\166',[167]='\167',[169]='\169',[171]='\171',[172]='\172',[173]='\173',[174]='\174',[176]='\176',[177]='\177',[181]='\181',[182]='\182',[183]='\183',[187]='\187'},
[208]={[129]='\168',[130]='\128',[131]='\129',[132]='\170',[133]='\189',[134]='\178',[135]='\175',[136]='\163',[137]='\138',[138]='\140',[139]='\142',[140]='\141',[143]='\143',[144]='\192',[145]='\193',[146]='\194',[147]='\195',[148]='\196',
[149]='\197',[150]='\198',[151]='\199',[152]='\200',[153]='\201',[154]='\202',[155]='\203',[156]='\204',[157]='\205',[158]='\206',[159]='\207',[160]='\208',[161]='\209',[162]='\210',[163]='\211',[164]='\212',[165]='\213',[166]='\214',
[167]='\215',[168]='\216',[169]='\217',[170]='\218',[171]='\219',[172]='\220',[173]='\221',[174]='\222',[175]='\223',[176]='\224',[177]='\225',[178]='\226',[179]='\227',[180]='\228',[181]='\229',[182]='\230',[183]='\231',[184]='\232',
[185]='\233',[186]='\234',[187]='\235',[188]='\236',[189]='\237',[190]='\238',[191]='\239'},
[209]={[128]='\240',[129]='\241',[130]='\242',[131]='\243',[132]='\244',[133]='\245',[134]='\246',[135]='\247',[136]='\248',[137]='\249',[138]='\250',[139]='\251',[140]='\252',[141]='\253',[142]='\254',[143]='\255',[144]='\161',[145]='\184',
[146]='\144',[147]='\131',[148]='\186',[149]='\190',[150]='\179',[151]='\191',[152]='\188',[153]='\154',[154]='\156',[155]='\158',[156]='\157',[158]='\162',[159]='\159'},[210]={[144]='\165',[145]='\180'}
}

local nmdc = {
[36] = '$',
[124] = '|'
}

function Utf8ToAnsi(s)
local a, j, r, b = 0, 0, ''
for i = 1, s and s:len() or 0 do
b = s:byte(i)
if b < 128 then
if nmdc[b] then
r = r..nmdc[b]
else
r = r..string.char(b)
end
elseif a == 2 then
a, j = a - 1, b
elseif a == 1 then
a, r = a - 1, r..utf8_decode[j][b]
elseif b == 226 then
a = 2
elseif b == 194 or b == 208 or b == 209 or b == 210 then
j, a = b, 1
else
r = r..'_'
end
end
return r
end


затем в sMsg перед row поставь Utf8ToAnsi( ну и соответственно в конце закрой )

Насчет вывода в PM при входе - у меня работает отлично, как для зарегистрированных так и для незарегистрированных так и для тех у кого ключик.

Автор: serrrios 14.6.2009, 19:37

Хм, поднял скрипт вверх в списке скриптов и вывод в пм заработал. Странность =)
Кодировка так и не наработает =(

Автор: Jaska 14.6.2009, 19:55

Это не странность, а какие-то скрипты конфликтуют друг с другом. Насчет кодировки, лично я всегда при создании бд ставлю кодировку cp1251, но раз уж такое дело .. будем пробовать

Автор: serrrios 15.6.2009, 16:36

Щас по рыскал в нете, выяснил что phpbb3 работает только в утф кодировке( Мысля с переходом на 1251 провалилась =(

Кстати, можно потом(если будет спрос) сделать скрипт мультифорумный, могу помочь с таблицами и столбцами от различных форумов.

Автор: Jaska 15.6.2009, 18:08

Ну хз, хз. Я создавал базы cp1251 и создавал раздачи - все работало нормально. Идея "мультифорумности" хороша, будет реализована позже.

Автор: AnSan 15.6.2009, 18:59

У меня выводит вот такую ошибку

Цитата
40: attempt to index global 'cur' (a nil value)


стоит Ptokax 0.4.1.1

Автор: Setuper 15.6.2009, 19:24

1. Прежде чем работать с курсором нужно проверить открыт ли он?
2. Курсоры лучше делать не глобальными, а локальными переменными.
3. Курсоры нужно всегда закрывать после работы с ними!

Автор: Jaska 15.6.2009, 20:10

прошу прощения) в дальнейшем - учту! А пока подправил ..

 ppkBB3.lua ( 2.59 килобайт ) : 43

Автор: Caratel 16.6.2009, 12:42

Подскажите пожалуйста как правильно устанавливать скрипт? У меня выводит следующее:

Код
[13:34] ppkBB3.lua загружен.
[13:34] Нет синтаксических ошибок в файле скрипта ppkBB3.lua
[13:34] Синтаксис D:\Temp\PtokaX\scripts\ppkBB3.lua:15: module 'luasql.mysql' not found:
    no field package.preload['luasql.mysql']
    no file 'D:\Temp\PtokaX\luasql\mysql.lua'
    no file 'D:\Temp\PtokaX\libs\luasql\mysql.lua'
    no file 'D:\Temp\PtokaX\scripts\libs\luasql\mysql.lua'
    no file 'D:\Temp\PtokaX\luasql\mysql.dll'
    no file 'D:\Temp\PtokaX\libs\luasql\mysql.dll'
    no file 'D:\Temp\PtokaX\scripts\libs\luasql\mysql.dll'
    no file 'D:\Temp\PtokaX\luasql.dll'
    no file 'D:\Temp\PtokaX\libs\luasql.dll'
    no file 'D:\Temp\PtokaX\scripts\libs\luasql.dll'
[13:34] Скрипт запущен.


Это типа у меня нет стока файлов? Если так, то где их можно взять?

Всё, всё нашёл, вроде скрипт запустился нормально ^^

Автор: Jaska 16.6.2009, 12:42

У тебя не стоит библиотека MySQL. Скачай Отсюда и закинь в одну из этих папок

Автор: Caratel 16.6.2009, 13:18

угу, оттуда и поставил. Щас норм.
вопрос. в настройке скрипта:

dbprefix = "" -- Префикс
тут надо ничего не указывать или phpbb_ ?


хммм.... жду жду... не выводит он у меня релизы почему-то... и в пм тоже не выводит(((

Автор: fixx 16.6.2009, 14:51

dbprefix = "" -- Префикс
Префикс глянь в базе, хз какой он там именно у тебя big_smile.gif
Если движок phpbb (пофиг какая версия), то все верно:
dbprefix = "phpbb_"

Автор: Caratel 16.6.2009, 15:08

Цитата(fixx @ 16.6.2009, 15:51) *
dbprefix = "" -- Префикс
Префикс глянь в базе, хз какой он там именно у тебя big_smile.gif
Если движок phpbb (пофиг какая версия), то все верно:
dbprefix = "phpbb_"


$table_prefix = 'phpbb_';

))) поставил) но всё равно пока работоспособность скрипта не увидел (

Автор: Jaska 16.6.2009, 17:41

А ошибок птока никаких не выводит? Если читал выше, была проблема с выводом в ПМ из-за конфликта с другим скриптом, решается перемещением скрипта вверх. А насчет времени вывода, поставь интервал в секунду и не жди) если результат будет - он будет сразу. Варианта должно быть 2 - либо все работает без ошибок, либо не работает ничего и птока напишет ошибку.

Автор: Caratel 16.6.2009, 18:21

читал тему, передвигал скрипт в самый верх. птока ошибок не выдаёт:
[19:21] ppkBB3.lua загружен.
[19:21] Нет синтаксических ошибок в файле скрипта ppkBB3.lua
[19:21] Скрипт запущен.
результата работоспособности нет hungry.gif

ЗЫ. есть предположение почему не выводятся данные: у меня трекер стоит не в корне сервака, а в папке, т.е. не http://mydc.ru/r/?http://адрес_сайта/index.php , а http://mydc.ru/r/?http://адрес_сайта/tracker/index.php И, как мне показалось, при вводе своих данных в скрипт не должно быть index.php . А если я ввиду http://mydc.ru/r/?http://адрес_сайта/tracker/ , то у меня в браузере идёт переадрессация на портал, а не на трекер. добавления строки DirectoryIndex index.php в файл .htaccess делу не помогло. ((((

Разобрался со своей проблемой. дело было во включённом модуле mod_rewrite. Но темнеменее в хаб не выводятся релизы х_х

Автор: Jaska 16.6.2009, 18:41

Тогда такой вопрос big_smile.gif в самой таблице topic что-то есть? Не пойму что я могу упустить еще ...

Автор: serrrios 16.6.2009, 19:04

Цитата(Caratel @ 16.6.2009, 19:21) *
ЗЫ. есть предположение почему не выводятся данные: у меня трекер стоит не в корне сервака, а в папке, т.е. не http://mydc.ru/r/?http://адрес_сайта/index.php , а http://mydc.ru/r/?http://адрес_сайта/tracker/index.php И, как мне показалось, при вводе своих данных в скрипт не должно быть index.php . А если я ввиду http://mydc.ru/r/?http://адрес_сайта/tracker/ , то у меня в браузере идёт переадрессация на портал, а не на трекер. добавления строки DirectoryIndex index.php в файл .htaccess делу не помогло. ((((

Глупая глупость, это никак не влияет на скрипт. В самом скрипте надо указать адресс корня трекера/форума, в твоем случии:
http://mydc.ru/r/?http://адрес_сайта/tracker/

Префикс свой можно глянуть в файле config.php:
$table_prefix = 'префикс';

Подними скрипт в самый вверх. Проверь еще раз настройки, хотя судя из последнего скрипта он те должен сказать если будет криво настроенно. =)

Jaska, есть мысли насчет утф? =)
Появилась еще идейка, если луа позволяет просматривать файлы в фс можно сделать самоопределитель настроек из файла конфига. =)

Автор: Jaska 16.6.2009, 19:59

а если хаб и сайт на разных машинах?

Автор: Caratel 16.6.2009, 20:08

Всё перепроверил, настройки скрипта перепроверил, поднимал скрипт в самы верх.... нехотит робить...
+ Заметил, когда скрипт в самом верху, то он у меня блокирует менюшки всех остальных скриптов.
Отключал все скрипты, оставлял только этот, всё равно ничего не выводит. Птока на скрипт не ругается... beat_plaster.gif

Автор: Caratel 19.6.2009, 19:39

Во что стал писать после перезагрузки всех серваков:

Код
[11:28] Синтаксис D:\Temp\PtokaX\scripts\ppkBB3.lua:44: attempt to index global 'conn' (a nil value)


это что ему не нравится? =(

ещё покапался покапался... но так и не сообразил в чём дело...

По поводу заполнения шапки скрипта, всё ли правильно?
(база трекера имеет имя, имя юзера и пароль один и тот же), например:

Код
dbname = "test"                        -- Название БД
dbuser = "test"                        -- Пользователь БД
dbpass = "test"                        -- Пароль БД
dbhost = "localhost"                -- Хост БД
dbprefix = "phpbb_"                        -- Префикс

nTime = 1                            -- Период вывода в чат (в секундах)
nReleases = 2                        -- Количество выводимых релизов

sAdress = "http://10.61.200.30/tracker/"    -- Сайт трекера

Автор: Caratel 20.6.2009, 20:27

Всё, всё работает, друг помог разобраться со скриптом, чуть отредактил его.

 ppkBB3.lua ( 2.41 килобайт ) : 46
 

Автор: Jaska 21.6.2009, 14:22

Он убрал перфиксы в запросах. Это можно было сделать по-другому, указав dbprefix = ""

Автор: Caratel 21.6.2009, 16:20

так ведь он стоял-то dbprefix = "" ... я пробовал... не робил скрипт так =)

Автор: serrrios 25.6.2009, 18:16

Цитата(Caratel @ 21.6.2009, 17:20) *
так ведь он стоял-то dbprefix = "" ... я пробовал... не робил скрипт так =)

Странно у меня работал...
Эх, не судьба мне с утфом чувствую(

Автор: serrrios 21.7.2009, 21:58

У меня о5 глупая мысля..
Увидел тут в теме с Webstats:

Цитата(alex82 @ 16.7.2009, 19:07) *
При соединении с БД также желательно указывать кодировку
Код
conn:execute("SET NAMES cp1251")

Т.е. можно задавать с какой кодировкой лезть в базу за данными. Я так понял мне нужна таже команда тока с переменной utf8_bin вместо cp1251. Вот только вопрос куда это вписать? Попробывал вставить между 43 и 44 строчкой, на что получил ошибку в лс.

Автор: Moneo 8.8.2009, 21:35

Больщое вам спасибо за скрипт, но вот проблема трекер находится на моем компьютере, а хаб на другом нужно подправить скрипт так чтобы он мог залазить в бд на моем компьютере и делать все тоже самое что и делает. Помогите пожалуйста. crying.gifelectric_shock.gif

Автор: Jaska 9.8.2009, 10:29

Как я понял: 2 компьютера на одном трекер на другом хаб. С хаба нужно подключиться только к бд трекера так? В чем проблема?

Цитата(serrrios @ 22.7.2009, 0:58) *
У меня о5 глупая мысля..
Увидел тут в теме с Webstats:

Т.е. можно задавать с какой кодировкой лезть в базу за данными. Я так понял мне нужна таже команда тока с переменной utf8_bin вместо cp1251. Вот только вопрос куда это вписать? Попробывал вставить между 43 и 44 строчкой, на что получил ошибку в лс.


Попробую поковырять, но виндовый клиент всеравно только cp1251 поймет

Автор: Moneo 9.8.2009, 21:55

не знаю я как это все писать вот в чем проблема ))) мне если можно помочь надо. Пробовал просто вставить ничего не меняя он ошибку выдает и не выводит.

Автор: Malou 13.12.2009, 4:50

Всем привет!у меня есть одна загвоздка с этим скриптом,дело в том что если я его запускаю выдает ошибку с сетмэном но это мелочь он и так работает,а причина вот в чем если я запукаю его и запускаю трэкер сам у себя на компе там же где и хаб то он работает и достаочно хорошо,но мой рабочий трэкер стоит не у меня а на бесплатном хосте и почему то при вводе данных он выдает ошибку в 44 строке "execute" я не могу понять что ему не нравится если он только что работал на одном компе и на тестовом трэкере а вот удаленно не хочет скажите плих!!!буду очень признателен