myDC.ru

Здравствуйте, гость ( Вход | Регистрация )

 

> Цитатник Рунета, API1, API2 | Показывает цитаты с bash.org.ru

Теги
Нет тегов для показа
FromeN
сообщение 7.8.2008, 13:09
Сообщение #81


Абсолютный новичок


Группа: Пользователи
Сообщений: 3
Регистрация: 24.6.2008
Пользователь №: 78
Спасибо сказали: 9 раз




Название скрипта: Bash.Org.Ru_Script
Версия скрипта: ?
Версия API: API1 & API2
Автор: Nickolya
Описание скрипта: Скрипт показывает цитаты с bash.org.ru. Скрипт под API 2 содержит модернизацию в виде возможности выбора по таймеру посылать цитаты, по команде или одновременно двумя способами из меню и если из меню то куда посылать в приват или мейн!

Дополнительно:

- Для API 1 качать это и размещать в папке хаба (где PtokaX.exe).Прикрепленный файл  pxwsa_l51.rar ( 6.75 килобайт ) Кол-во скачиваний: 266
Если не будет работать, тогда еще вот это: Прикрепленный файл  cc3270.rar ( 220.58 килобайт ) Кол-во скачиваний: 249

- Для API 2библиотеку PXLuaSocket качаем вот отсюда http://mydc.ru/topic43.html
Прикрепленные файлы
Прикрепленный файл  Bash.Org.Ru_Script_API_1.rar ( 73.39 килобайт ) Кол-во скачиваний: 292
Прикрепленный файл  Bash.Org.Ru_Script_API_2.rar ( 21.58 килобайт ) Кол-во скачиваний: 851
 
Go to the top of the page
+Quote Post
8 страниц V  « < 3 4 5 6 7 > »   
Начать новую тему
Ответов
jokersergiev
сообщение 22.3.2009, 1:03
Сообщение #82


Абсолютный новичок


Группа: Пользователи
Сообщений: 4
Регистрация: 21.3.2009
Пользователь №: 2 694
Спасибо сказали: 0 раз




Кароч сделал с помощью конвертера и все, спасибо за внимание
Go to the top of the page
+Quote Post
Accelerator
сообщение 22.3.2009, 11:39
Сообщение #83


Developer
******

Группа: Модераторы
Сообщений: 541
Регистрация: 11.11.2008
Пользователь №: 1 075
Спасибо сказали: 244 раза




А как можно сделать так, чтобы цитати брались не из инета, а с лок. сервера? Дело в том, что у нас в лок. сети есть сервер с цитатами рунета, и хотелось, чтобы цитаты брались от туда, как такое сделать?

Базы обновляются, но при вводе команды показать цитаты, пишет, что в базе нет данных, хотя с лок. сервера цитаты скачались
Цитата
[13:38:02] <bash.org.ru> *** Данные приняты в размере 60394 Кб за 3.5620000000017 секунд.
[13:38:02] <bash.org.ru> *** Обновление базы закончено! Добавлено 0 цитат. Щас сохраним все данные...


Показ цитат:
Цитата
[13:39:00] <bash.org.ru> В базе пока нет сообщений!!
Go to the top of the page
+Quote Post
Wariner
сообщение 22.3.2009, 11:39
Сообщение #84


Самый главный активист :-D
***********

Группа: Модераторы
Сообщений: 2 790
Регистрация: 29.6.2008
Из: г. Тула
Пользователь №: 97
Спасибо сказали: 440 раз




написать локальный адрес и проверить парсинг
Go to the top of the page
+Quote Post
Accelerator
сообщение 22.3.2009, 11:50
Сообщение #85


Developer
******

Группа: Модераторы
Сообщений: 541
Регистрация: 11.11.2008
Пользователь №: 1 075
Спасибо сказали: 244 раза




Адрес лок. сервера:
Код
http://10.2.33.38/rss/bash.org.ru.html

Вот так выглядит страница цитаты:
Код
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Bash.Org.Ru</title>
<link href="/_inc/css/rss_reader_bash.css" rel="stylesheet" type="text/css" media="all">
</head>
<body><div id="page">
<div class="header">
<img width="300" height="40" alt="bash.org.ru" src="/_inc/img/rss/bash/logo.gif">Bash.Org.Ru - Цитатник Рунета</div>
<div id="quotes">
<div class="q">
<div class="vote">
<a href="http://bash.org.ru/quote/402898">Цитата #402898</a> 
            , Sat, 21 Mar 2009 11:12:01 +0400</div>
<div>Морские новости: &quot;В Ильичевском порту тепловоз раздавил автомобиль ГАИ, приехавший красть солярку&quot;<br>Вот оно как бывает - тепловоз подкрался незаметно.</div>
</div>
</div>
</div></body>
</html>

Цитаты с лок. сервера сохраняются в xml файл, который в папке BashOrgRuPath/Bash.Org.Ru.xml
Но просмотреть нельзя, пишет, база пуста :(

Конф. файл:
Код
sBot = "bash.org.ru"                                    -- имя бота (оставьте равным "" для имени бота с хаба)
rHost = "vx.pvt.454.ru"                        -- доменное имя
rFile = "/rss/"                                -- путь к нужному файлу
iCanWait = 12                                -- максимальное время ожидания в секндах (увеличить если все нормально и ошибка 'timeout')
iMaxLength = 100                            -- макс. длинна строки для оформлеиня цитат
sPath = "BashOrgRuPath/"                    -- папка скрипта
sMainDataTbl = sPath.."tAllData.tbl"        -- таблица с цитатами
sDownloadedData = sPath.."Bash.Org.Ru.xml"    -- файл из инета
sNewNumbers = sPath.."tNewNumbers.tbl"        -- новые цитаты
sCoreFile = sPath.."Core.lua"                -- файл с функциями


Файл Core.lua(немного подправил, т.к. не скачивало страницу:
Код
function SendRequest()
    local iStart = os.clock()
    local sIncomingBuffer, iErrorCode, tData = http.request("http://"..rHost.."/"..rFile.."/bash.org.ru.html?#41;
    if iErrorCode == 200 then
        Core.SendToOps("<"..sBot.."> *** Данные приняты в размере "..(tData["content-length"] or 0).." Кб за "..(os.clock() - iStart).." секунд.")
        SaveData(sDownloadedData, sIncomingBuffer)
        ParseData(sIncomingBuffer)
    else
        Core.SendToOps("<"..sBot.."> *** Ошибка при получении данных ("..iErrorCode..")!!!")
    end
end
Go to the top of the page
+Quote Post
Wariner
сообщение 22.3.2009, 12:01
Сообщение #86


Самый главный активист :-D
***********

Группа: Модераторы
Сообщений: 2 790
Регистрация: 29.6.2008
Из: г. Тула
Пользователь №: 97
Спасибо сказали: 440 раз




исправления файла Core.lua откати назад!

вот тут же написано
Цитата
rFile = "/rss/" -- путь к нужному файлу

должно быть так
Код
rHost = "10.2.33.38"                        -- доменное имя
rFile = "/rss/bash.org.ru.html?#34;                                -- путь к нужному файлу

вместо ип конечно же можно доменное имя написать а можно и так оставить




а не скачивается потому что ошибка!
Код
local sIncomingBuffer, iErrorCode, tData = http.request("http://"..rHost.."/"..rFile.."/bash.org.ru.html?#41;

приглядись чего не хватает?
Go to the top of the page
+Quote Post
Accelerator
сообщение 22.3.2009, 12:06
Сообщение #87


Developer
******

Группа: Модераторы
Сообщений: 541
Регистрация: 11.11.2008
Пользователь №: 1 075
Спасибо сказали: 244 раза




Цитаты скачивает
Цитата
[14:03:05] <bash.org.ru> *** Данные приняты в размере 60394 Кб за 1.4529999999977 секунд.
[14:03:05] <bash.org.ru> *** Обновление базы закончено! Добавлено 0 цитат. Щас сохраним все данные...

Но не показывает :(
Цитата
[14:04:10] <bash.org.ru> В базе пока нет сообщений!!!
Go to the top of the page
+Quote Post
Wariner
сообщение 22.3.2009, 12:09
Сообщение #88


Самый главный активист :-D
***********

Группа: Модераторы
Сообщений: 2 790
Регистрация: 29.6.2008
Из: г. Тула
Пользователь №: 97
Спасибо сказали: 440 раз




блин ну ты видишь что что данные получает а таблиицы не делает! значит парсинг не такой нужен!!! Просто скрипт не может сделать таблицу(вынуть нужные данные из всех которых получил)
Go to the top of the page
+Quote Post
Accelerator
сообщение 22.3.2009, 12:20
Сообщение #89


Developer
******

Группа: Модераторы
Сообщений: 541
Регистрация: 11.11.2008
Пользователь №: 1 075
Спасибо сказали: 244 раза




А как сделать, чтобы таблица получала данные?
Go to the top of the page
+Quote Post
Wariner
сообщение 22.3.2009, 12:55
Сообщение #90


Самый главный активист :-D
***********

Группа: Модераторы
Сообщений: 2 790
Регистрация: 29.6.2008
Из: г. Тула
Пользователь №: 97
Спасибо сказали: 440 раз




надо смотреть структуру нужные данные выделять а ненужные заменять
Go to the top of the page
+Quote Post
Accelerator
сообщение 22.3.2009, 13:02
Сообщение #91


Developer
******

Группа: Модераторы
Сообщений: 541
Регистрация: 11.11.2008
Пользователь №: 1 075
Спасибо сказали: 244 раза




Если честно, я не знаю как заменять некоторые данные, например ссылку <a href="link"></a>. Как я понял, редактировать надо здесь:
CODE
for sWhatNeedToGsub, sToWhat in pairs(tNeedToGsub) do
sIncomingBuffer = sIncomingBuffer:g(sWhatNeedToGsub, sToWhat)
end
local sIncomingBuffer = sIncomingBuffer:g("<br>", "\r\n")
local sNeedInfo = ""
for sNeedInfo in sIncomingBuffer:gmatch("(<item>.-</item>)") do
--local _,_, sGuid = sNeedInfo:find("(<item>.-<guid>.*</guid>)")
--local sIncomingBuffer = sIncomingBuffer:g(sGuid, "")
local _,_, sTitle = sNeedInfo:find("<title>(.*)</title>")
local _,_, iNumber = sTitle:find("(%d+)")
local iNumber = tonumber(iNumber)
if not tAllData[iNumber] then
local _,_, sPubDate = sNeedInfo:find("<pubDate>(.*)</pubDate>")
local _,_, sDescription = sNeedInfo:find("<description>(.*)</description>")
local _,_, sData = sDescription:find("<!%[CDATA%[(.*)%]%]")
tAllData[iNumber] = {}
tAllData[iNumber]["sPubDate"] = sPubDate
tAllData[iNumber]["sData"] = sData
iAdded = iAdded + 1
table.insert(tNewNumbers, iNumber)

Но что и как тут заменить, я не знаю :(

Структура страницы(пример одной цитаты):
CODE
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Bash.Org.Ru</title>
<link href="/_inc/css/rss_reader_bash.css" rel="stylesheet" type="text/css" media="all">
</head>
<body><div id="page">
<div class="header">
<img width="300" height="40" alt="bash.org.ru" src="/_inc/img/rss/bash/logo.gif">Bash.Org.Ru - Цитатник Рунета</div>
<div id="quotes">
<div class="q">
<div class="vote">
<a href="http://bash.org.ru/quote/402898">Цитата #402898</a>
, Sat, 21 Mar 2009 11:12:01 +0400</div>
<div>Морские новости: &quot;В Ильичевском порту тепловоз раздавил автомобиль ГАИ, приехавший красть солярку&quot;<br>Вот оно как бывает - тепловоз подкрался незаметно.</div>
</div>
</div>
</div></body>
</html>
Go to the top of the page
+Quote Post
Wariner
сообщение 22.3.2009, 13:10
Сообщение #92


Самый главный активист :-D
***********

Группа: Модераторы
Сообщений: 2 790
Регистрация: 29.6.2008
Из: г. Тула
Пользователь №: 97
Спасибо сказали: 440 раз




не я конечно понимаю что много хочется, но ты предлагаешь под каждого человека переписывать парсинг?
Go to the top of the page
+Quote Post
Accelerator
сообщение 22.3.2009, 13:21
Сообщение #93


Developer
******

Группа: Модераторы
Сообщений: 541
Регистрация: 11.11.2008
Пользователь №: 1 075
Спасибо сказали: 244 раза




Цитата(Wariner @ 22.3.2009, 14:10) *
не я конечно понимаю что много хочется, но ты предлагаешь под каждого человека переписывать парсинг?

ну да ладно... Обойдусь без цитат... В конце концов вы(модеры) никому ничего не должны...
Go to the top of the page
+Quote Post
Azuma
сообщение 22.3.2009, 13:38
Сообщение #94


Абсолютный новичок


Группа: Пользователи
Сообщений: 3
Регистрация: 21.3.2009
Пользователь №: 2 689
Спасибо сказали: 0 раз




Wariner
Я чуть не так объяснил и ты не так понял, таблица создается на 100 цитат и если на баше новые добавляются то он вносит их в таблицу. Например база содержала 100 цитат с добавление на баше и внесением их в таблицу стало 109.
У меня вопрос в другом ка сделать чтобы он сразу таблицу создал с 1000 цытат например или больше лазил в .lua и .tbl не нашол функции такой, может подскажеш где исправить это если можно?
Go to the top of the page
+Quote Post
Wariner
сообщение 22.3.2009, 13:45
Сообщение #95


Самый главный активист :-D
***********

Группа: Модераторы
Сообщений: 2 790
Регистрация: 29.6.2008
Из: г. Тула
Пользователь №: 97
Спасибо сказали: 440 раз




не понятен смысл этого. ты хочешь чтоб при имеющихся 100 цитатах место резервировалось на 1000?

Цитата(THE STRELOK @ 22.3.2009, 13:21) *
ну да ладно... Обойдусь без цитат... В конце концов вы(модеры) никому ничего не должны...

ухахахаха. попробуй сделать сам!!! никто и никогда ничего на блюдечке с золотой каёмочкой приносить не будет! Посмотри структуру баша посмотри что делает скрипт а потом сделай для себя. Если будут вопросы обращайся....
Go to the top of the page
+Quote Post
Accelerator
сообщение 22.3.2009, 15:01
Сообщение #96


Developer
******

Группа: Модераторы
Сообщений: 541
Регистрация: 11.11.2008
Пользователь №: 1 075
Спасибо сказали: 244 раза




Попытался, но не получилось:(
Код
function ParseData(sIncomingBuffer)
    local iAdded = 0
    local tNeedToGsub = {
        ["\t"] = "",
        ["\r"] = "",
        ["\n"] = "",
        ["&lt;"] = "<",
        ["&gt;"] = ">",
        ["&quot;"] = "\"",
        ["&amp;"] = "&",
        ["&minus;"] = "-",
    }
for sWhatNeedToGsub, sToWhat in pairs(tNeedToGsub) do
sIncomingBuffer = sIncomingBuffer:g(sWhatNeedToGsub, sToWhat)
end
local sIncomingBuffer = sIncomingBuffer:g("<br>", "\r\n")
local sNeedInfo = ""
for sNeedInfo in sIncomingBuffer:gmatch("(<div class="q">.-</div>)") do
--local _,_, sGuid = sNeedInfo:find("(<item>.-<guid>.*</guid>)")
--local sIncomingBuffer = sIncomingBuffer:g(sGuid, "")
local _,_, sTitle = sNeedInfo:find("<a>(.*)</a>")
local _,_, iNumber = sTitle:find("(%d+)")
local iNumber = tonumber(iNumber)
if not tAllData[iNumber] then
local _,_, sDescription = sNeedInfo:find("<div>(.*)</div>")
local _,_, sData = sDescription:find("<div>(.*)</div>")
tAllData[iNumber] = {}
tAllData[iNumber]["sData"] = sData
iAdded = iAdded + 1
table.insert(tNewNumbers, iNumber)
        end
    end
    Core.SendToOps("<"..sBot.."> *** Обновление базы закончено! Добавлено "..iAdded.." цитат. Щас сохраним все данные...")
    if iAdded ~= 0 then
        iTimeToSend = iSecondsToSendNew
        SaveToFile(sMainDataTbl, tAllData, "tAllData")
        MakeTblForRandomChoose()
    end
end
Go to the top of the page
+Quote Post
Wariner
сообщение 22.3.2009, 15:28
Сообщение #97


Самый главный активист :-D
***********

Группа: Модераторы
Сообщений: 2 790
Регистрация: 29.6.2008
Из: г. Тула
Пользователь №: 97
Спасибо сказали: 440 раз




Код
function ParseData(sIncomingBuffer)
    local iAdded = 0
    local tNeedToGsub = {
        ["\t"] = "",
        ["\r"] = "",
        ["\n"] = "",
        ["&lt;"] = "<",
        ["&gt;"] = ">",
        ["&quot;"] = "\"",
        ["&amp;"] = "&",
        ["&minus;"] = "-",
    }
    for sWhatNeedToGsub, sToWhat in pairs(tNeedToGsub) do
        sIncomingBuffer = sIncomingBuffer:g(sWhatNeedToGsub, sToWhat)
    end
    local sIncomingBuffer = sIncomingBuffer:g("<br>", "\r\n")
    local sNeedInfo = ""
    for sNeedInfo in sIncomingBuffer:gmatch("(<div class=\"q\">.-</div>)") do
        local _,_, sTitle = sNeedInfo:find("<a href=\"http://bash.org.ru/quote/%d+\">(.*)</a>")
        local _,_, iNumber = sTitle:find("(%d+)")
        local iNumber = tonumber(iNumber)
        if not tAllData[iNumber] then
            --local _,_, sDescription = sNeedInfo:find("<div>(.*)</div>")
            --local _,_, sData = sDescription:find("<div>(.*)</div>")
            local _,_, sData = sNeedInfo:find("<div>(.*)</div>")
            tAllData[iNumber] = {}
            tAllData[iNumber]["sData"] = sData
            iAdded = iAdded + 1
            table.insert(tNewNumbers, iNumber)
        end
    end
    Core.SendToOps("<"..sBot.."> *** Обновление базы закончено! Добавлено "..iAdded.." цитат. Щас сохраним все данные...")
    if iAdded ~= 0 then
        iTimeToSend = iSecondsToSendNew
        SaveToFile(sMainDataTbl, tAllData, "tAllData")
        MakeTblForRandomChoose()
    end
end
Go to the top of the page
+Quote Post
Accelerator
сообщение 22.3.2009, 15:44
Сообщение #98


Developer
******

Группа: Модераторы
Сообщений: 541
Регистрация: 11.11.2008
Пользователь №: 1 075
Спасибо сказали: 244 раза




Спасибо, цитаты получает, но команда +BASH_show
не работает :(
Go to the top of the page
+Quote Post
Wariner
сообщение 22.3.2009, 15:50
Сообщение #99


Самый главный активист :-D
***********

Группа: Модераторы
Сообщений: 2 790
Регистрация: 29.6.2008
Из: г. Тула
Пользователь №: 97
Спасибо сказали: 440 раз




ошибки?
Go to the top of the page
+Quote Post
Accelerator
сообщение 22.3.2009, 15:59
Сообщение #100


Developer
******

Группа: Модераторы
Сообщений: 541
Регистрация: 11.11.2008
Пользователь №: 1 075
Спасибо сказали: 244 раза




Код
scripts/BashOrgRuPath/Core.lua:82: attempt to concatenate local 'sData' (a nil value)
Go to the top of the page
+Quote Post
Wariner
сообщение 22.3.2009, 16:00
Сообщение #101


Самый главный активист :-D
***********

Группа: Модераторы
Сообщений: 2 790
Регистрация: 29.6.2008
Из: г. Тула
Пользователь №: 97
Спасибо сказали: 440 раз




82 строчку в студию плюс пример что сохранилось у тебя в таблице(небольшой кусок в пару цитат)
Go to the top of the page
+Quote Post

8 страниц V  « < 3 4 5 6 7 > » 
Ответить в данную темуНачать новую тему
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

Collapse

> Похожие темы

  Тема Ответов Автор Просмотров Последнее сообщение
No New Posts От: Цитатник Рунета
От темы с ID: 263
5 Setuper 9 168 22.3.2009, 20:44 Посл. сообщение: Accelerator
No new Topic has attachmentsОт: Цитатник Рунета
От темы с ID: 263
18 Nickolya 20 033 6.1.2009, 16:08 Посл. сообщение: Serhio
No New Posts От: Цитатник Рунета
От темы с ID: 263
10 xprofi 15 830 11.12.2008, 12:21 Посл. сообщение: artsi81

 



RSS Сейчас: 23.12.2024, 14:03