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

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

MyDC.ru _ Помощь по скриптам для PtokaX _ RSS лента

Автор: Nix-mpkgVirus 4.1.2010, 21:15

Доброе время суток всем!
Помогите сделать а то уже упарился с этим скриптом....

хочу что бы пре выводы новостей типо

Цитата
title: С наступающим 2010 годом
link: http://mydc.ru/r/?http://gamepolis.ru/archive/1155-s-nastupayushhim-2010-godom.html

было по русски вместо: title - Тема, link - Cсылка...

Переименовываю на:

Код
    
["<Тема>"] = true,
["<Описнание>"] = false,
["<Ссылка>"] = true,
["<Автора>"] = false,
["<Категория>"] = false,
["<Комментарии>"] = false,

итд... скрипт отказывается работать

и еще вот хотелось бы что бы между выводяшися тем были строки раздиления...
Пример:
Цитата
============================================================
title: С наступающим 2010 годом
link: http://mydc.ru/r/?http://gamepolis.ru/archive/1155-s-nastupayushhim-2010-godom.html
============================================================
title: Рейтинг незаконно скачиваемых игр возглавила Modern Warfare 2
link: http://mydc.ru/r/?http://gamepolis.ru/1153-rejting-nezakonno-skachivaemyx-igr-vozglavila.html
============================================================
title: Разрушители мифов в Modern Warfare 2
link: http://mydc.ru/r/?http://gamepolis.ru/archive/1152-razrushiteli-mifov-v-modern-warfare-2.html
============================================================
title: Quake Live — лучший способ провести праздники
link: http://mydc.ru/r/?http://gamepolis.ru/1151-quake-live-luchshij-sposob-provesti-prazdniki.html
============================================================


Буду оч.благодарен если поможете!

 Rss.rar ( 3.26 килобайт ) : 39
 

Автор: Nix-mpkgVirus 9.1.2010, 6:55

Типо помочь не кто не может или не хочет?

Автор: Артём 9.1.2010, 13:54

Gamepolis.lua:127: attempt to concatenate global 'reply' (a nil value)
 Gamepolis.lua ( 7.84 килобайт ) : 18

не могу понять в чём косяк. secret_smile.gif

Автор: Wariner 9.1.2010, 20:27

Прочитал нифига не понял...

Было по английски а ты хочешь по русски или было по русски а ты хочешь по английски?

Автор: Nickolya 10.1.2010, 5:05

Добавляем в самое начало скрипта таблицу

Код
local FieldsRus = {
    ["title"] = "Заголовок", -- Заголовок
    ["description"] = "Описнание", -- Описнание
    ["link"] = "Ссылка", -- Ссылка
    ["author"] = "Автор", -- Автор
    ["category"] = "Категория новости", -- Категория новости
    ["comments"] = "Комментарии к новости", -- Комментарии к новости
    ["pubDate"] = "Публичная информацию", -- Публичная информацию
    ["guid"] = "Глобальный индиккатор новости", -- Глобальный индиккатор новости
}

и заменяем
Код
            if Fields[field:lower()] then
                field = field:lower():gsub("[<>]","")..":"
на
Код
            if field and Fields[field:lower()] then
                field = field:lower():gsub("[<>]","")
                field = (FieldsRus[field] and FieldsRus[field] or field)..":"

Автор: Nix-mpkgVirus 10.1.2010, 11:21

буть добр сделай в скрипте и выложи а то у меня ошибки вылазиют и не работает срипт... beat_brick.gif

P.s: У меня по англиски хочу сделать по русски!

Автор: Nickolya 10.1.2010, 23:10

Да, видимо поздно уже было, поправил ошибку в посту выше, прикладываю скрипт изменненный уже здесь.

 Gamepolis.rar ( 3.06 килобайт ) : 61
 

Автор: Nix-mpkgVirus 11.1.2010, 5:58

Спасибо! а что по поводу разделения? можно сделать???

Цитата
============================================================
title: С наступающим 2010 годом
link: http://mydc.ru/r/?http://gamepolis.ru/archive/1155-s-nastupa...2010-godom.html
============================================================
title: Рейтинг незаконно скачиваемых игр возглавила Modern Warfare 2
link: http://mydc.ru/r/?http://gamepolis.ru/1153-rejting-nezakonno...vozglavila.html
============================================================
title: Разрушители мифов в Modern Warfare 2
link: http://mydc.ru/r/?http://gamepolis.ru/archive/1152-razrushit...-warfare-2.html
============================================================
title: Quake Live — лучший способ провести праздники
link: http://mydc.ru/r/?http://gamepolis.ru/1151-quake-live-luchsh...-prazdniki.html
============================================================


и хотелось бы убрать Обработано за: 0.03 секунды.

Автор: Хабыч 11.1.2010, 10:38

Цитата
и хотелось бы убрать Обработано за: 0.03 секунды.
найди это и закоментироуй. перед этой строкой поставь --

Автор: Nix-mpkgVirus 12.1.2010, 1:51

Цитата(Хабыч @ 11.1.2010, 12:38) *
найди это и закоментироуй. перед этой строкой поставь --

если закоментировать то вылетает 137.64 Kb. beat_brick.gif

Автор: Хабыч 12.1.2010, 2:07

хм... ну хотя думаю оно не очень мешает.

Автор: Nix-mpkgVirus 13.1.2010, 5:39

А что по поводу раздиления....? Nickolya поможешь?

Автор: Nix-mpkgVirus 20.1.2010, 9:39

Ну так что поможет кто?

Автор: Saymon 20.1.2010, 11:46

Цитата
поводу раздиления

В плане?

Автор: CraZy 20.1.2010, 17:07

Цитата(Saymon @ 20.1.2010, 12:46) *
В плане?

============================================================
title: С наступающим 2010 годом
link: http://mydc.ru/r/?http://gamepolis.ru/archive/1155-s-nastupa...2010-godom.html
============================================================
title: Рейтинг незаконно скачиваемых игр возглавила Modern Warfare 2
link: http://mydc.ru/r/?http://gamepolis.ru/1153-rejting-nezakonno...vozglavila.html
============================================================
title: Разрушители мифов в Modern Warfare 2
link: http://mydc.ru/r/?http://gamepolis.ru/archive/1152-razrushit...-warfare-2.html
============================================================
title: Quake Live — лучший способ провести праздники
link: http://mydc.ru/r/?http://gamepolis.ru/1151-quake-live-luchsh...-prazdniki.html
============================================================


Автор: brauzer84 20.1.2010, 20:01

Птока выдаёт ошибку 0.4.1.1\scripts\Gamepolis.lua:195: attempt to index local 'hFile' (a nil value)

Как испрвить?
Знает кто?

Автор: Nickolya 20.1.2010, 20:33

Так сложно залезть в скрипт и посмотреть что да как? Строки о памяти убираются тут

Код
        sMsg = tostring(cnt).." новых тем с: "..Feed.."\n\n"..
          reply..""..
        "\t\t\tОбработано за: "..time
заменяем на
Код
        sMsg = tostring(cnt).." новых тем с: "..Feed.."\n\n"..
          reply

А чтобы сделать разделители меняем
Код
    if next(New) then
        reply,cnt = "",0
        for key,val in ipairs(New) do
            local bool = true
            for i,v in ipairs(Old) do if v[2] == val[2] then bool = false break end end
            if bool then
                cnt = cnt + 1
                for i,v in ipairs(val) do reply = reply.."\t"..v.."\n" end
                reply = reply.."\n"
            end
        end
    end
на
Код
    if next(New) then
        reply,cnt = "\t============================================================\n",0
        for key,val in ipairs(New) do
            local bool = true
            for i,v in ipairs(Old) do if v[2] == val[2] then bool = false break end end
            if bool then
                cnt = cnt + 1
                for i,v in ipairs(val) do reply = reply.."\t"..v.."\n" end
                reply = reply.."\t============================================================\n"
            end
        end
    end

И скажите, много изменений? Это сложно?

Автор: STRELOK 27.3.2010, 16:51

Решил малость поменять скрипт под свои вкусы:  FeedWatch.lua ( 3.31 килобайт ) : 19

Т.к. скрипт у меня считывает информацию только с ITHappens и Bash.Org.Ru, но вот проблема: этот скрипт отображает только 1 последнюю цитату, как сделать так, чтобы он отображал всё кол-во цитат, а точнее то кол-во, которое будет указано, например: 20 с самого верха ленты, т.е. не с последней цитаты, а с самой первой? Уже битый час сижу и не могу никак переделать парсер :(

Автор: STRELOK 29.3.2010, 13:02

Так никто и не подскажет? :(

Автор: Setuper 30.3.2010, 18:38

попробуй:  FeedWatch.lua ( 3.22 килобайт ) : 43

Автор: TIRAN 2.4.2010, 5:55

Незнаю в чём проблема....


В общем решил переделать RSS под себя.

Было так:

Раскрывающийся текст
-- "Botname" ["" = hub bot]
local Bot = "ServiceBot"
-- Save recent feeds to this file for script/hub restarts
local File = "FeedWatch.dat"
-- Set your feed's URL
local Feed = "http://bash.org.ru/rss/"
-- Set the update interval [in minutes]
local Refresh = 60
-- Enable capture of these RSS fields
local Fields = {
["<title>"] = true,
["<description>"] = true,
["<link>"] = true,
["<author>"] = false,
["<category>"] = false,
["<comments>"] = false,
["<pubDate>"] = true,
["<guid>"] = false,
}

--Replace these strings in feed XML [--Comment unwanted replacements]
local Rep = {
["%<%!%[CDATA%["] = "",
["%]%]%>"] = "",
["%[code *%]"] = "",
["<img [^>]*>"] = "",
["<p>"] = "",
["<a href[^\w]+"] = "",
["<br />"] = " ",
["\t"] = " ",
["\r\n"] = "",
["["] = string.char(91),
["]"] = string.char(93),
[" [ ]+"] = " ",
["<div class=\"codeheader\">"] = "",
}
-- Truncate RSS fields to this width.
local MaxWidth = 8500
-- Remove all HTML <tags> in feed fields? true/false
local TagFilter = true
-- Always send new feed to pm? true/false
local OnlyPm = true
-- Append new feeds to MOTD? [Motd restored at script exit]
local DoMotd = false
-- "Preset FeedNick" [Nick new feeds are sent from] / false = Use feed title for FeedNick
local FeedNick = false

tProfile = {
[-1] = 0,
[0] = 1,
[1] = 1,
[2] = 1,
[3] = 1,
[4] = 1,
}
--//--


local socket = require"socket"
assert(socket,"Failed to load socket extension. Check files.")
local http = require("socket.http")
assert(http,"Failed to load http module. Check files.")
local Asc = {},0,""

OnStartup = function()
if Bot == "" then Bot = SetMan.GetString(21) end
if loadfile(File) then dofile(File) else Old = {} SaveFile(File,Old,"Old") end
end

function UserConnected(tUser)
if tProfile[tUser.iProfile] == 1 then
Core.SendToUser(tUser,"$UserCommand 1 3 Онлайн сервисы\\RSS Новости\\Bash.Org.ru$<%[mynick]> !rssfactorial|")
end
end
OpConnected = UserConnected
RegConnected = UserConnected


Стало так:

Раскрывающийся текст
-- "Botname" ["" = hub bot]
local Bot = "ServiceBot"
-- Save recent feeds to this file for script/hub restarts
local File = "FeedWatch2.dat"
-- Set your feed's URL
local Feed = "http://lenta.ru/rss/"
-- Set the update interval [in minutes]
local Refresh = 60
-- Enable capture of these RSS fields
local Fields = {
["<title>"] = true,
["<description>"] = true,
["<link>"] = true,
["<author>"] = false,
["<category>"] = false,
["<comments>"] = false,
["<pubDate>"] = true,
["<guid>"] = false,
}

--Replace these strings in feed XML [--Comment unwanted replacements]
local Rep = {
["%<%!%[CDATA%["] = "",
["%]%]%>"] = "",
["%[code *%]"] = "",
["<img [^>]*>"] = "",
["<p>"] = "",
["<a href[^\w]+"] = "",
["<br />"] = " ",
["\t"] = " ",
["\r\n"] = "",
["["] = string.char(91),
["]"] = string.char(93),
[" [ ]+"] = " ",
["<div class=\"codeheader\">"] = "",
}
-- Truncate RSS fields to this width.
local MaxWidth = 8500
-- Remove all HTML <tags> in feed fields? true/false
local TagFilter = true
-- Always send new feed to pm? true/false
local OnlyPm = true
-- Append new feeds to MOTD? [Motd restored at script exit]
local DoMotd = false
-- "Preset FeedNick" [Nick new feeds are sent from] / false = Use feed title for FeedNick
local FeedNick = false

tProfile = {
[-1] = 0,
[0] = 1,
[1] = 1,
[2] = 1,
[3] = 1,
[4] = 1,
}
--//--


local socket = require"socket"
assert(socket,"Failed to load socket extension. Check files.")
local http = require("socket.http")
assert(http,"Failed to load http module. Check files.")
local Asc = {},0,""

OnStartup = function()
if Bot == "" then Bot = SetMan.GetString(21) end
if loadfile(File) then dofile(File) else Old = {} SaveFile(File,Old,"Old") end
end

function UserConnected(tUser)
if tProfile[tUser.iProfile] == 1 then
Core.SendToUser(tUser,"$UserCommand 1 3 Онлайн сервисы\\RSS Новости\\Lenta.ru$<%[mynick]> !rssfactorial|")
end
end
OpConnected = UserConnected
RegConnected = UserConnected


Я догадываюсь что дело в этой строке
Core.SendToUser(tUser,"$UserCommand 1 3 Онлайн сервисы\\RSS Новости\\Lenta.ru$<%[mynick]> !rssfactorial|")

Но я незнаю где взять другую и что менять...
=============================
Всё, разобрался exciting.gif

Не думал что всё так просто... оказывается вызов к !rssfactorial идёт 2 раза... 2ой не заметил сначала. Поэтому и кидал с БАШа. добавил 2 в конце в обоих местах - заработало =)

Автор: Aлзим 14.12.2010, 2:23

Как сделать, чтобы ссылка отображалась правильно?

Сейчас это так:

Цитата
============================================================
Заголовок: Какова сила удара, когда один футболист толкает другого?
Ссылка: http://mydc.ru/r/?http://umnik.org.ru/4392/%D0%BA%D0%B0%D0%BA%D0%BE%D0%B2%D0%B0-%D1%81%D0%B8%D0%BB%D0%B0-%D1%83%D0%B4%D0%B0%D1%80%D0%B0-%D0%BA%D0%BE%D0%B3%D0%B4%D0%B0-%D0%BE%D0%B4%D0%B8%D0%BD-%D1%84%D1%83%D1%82%D0%B1%D0%BE%D0%BB%D0%B8%D1%81%D1%82-%D1%82%D0%BE%D0%BB%D0%BA%D0%B0%D0%B5%D1%82-%D0%B4%D1%80%D1%83%D0%B3%D0%BE%D0%B3%D0%BE
Категория: Спорт
============================================================


А хотелось бы так:
Цитата
============================================================
Заголовок: Какова сила удара, когда один футболист толкает другого?
Ссылка: http://mydc.ru/r/?http://umnik.org.ru/4392/какова-сила-удара-когда-один-футболист-толкает-другого
Категория: Спорт
============================================================

Автор: Enyby 14.12.2010, 18:00

http://mydc.ru/r/?http://ru.wikipedia.org/wiki/Url Раздел "Кодирование URL". Потом либо паттернами либо куча gsub.

Автор: Nickolya 14.12.2010, 21:12

Цитата
url.unescape(content)

Removes the URL escaping content coding from a string.

Content is the string to be decoded.

The function returns the decoded string.
подробнее читайте в документации по luasocket...

Автор: Aлзим 14.12.2010, 21:31

Цитата(Nickolya @ 14.12.2010, 21:12) *
подробнее читайте в документации по luasocket...

А по проще можно?!
Мне бы какой-нибудь код или функцию вставить в скрипт, чтобы переводил на кириллицу...

Автор: Nickolya 4.1.2011, 17:39

Итак, если еще актуально, вот решение "чтобы ссылка отображалась правильно":

После

Код
local http = require("socket.http")
assert(http,"Failed to load http module. Check files.")
добавляем
Код
local url = require("socket.url")    -- loads the URL module
assert(url,"Failed to load url module. Check files.")

Затем после
Код
field = field:lower():gsub("[<>]","")
добавляем
Код
                if field == "link" then
                    val = utf8towinru(url.unescape(val))
                end

Либо, если у вас стандартная версия (без русификации), и строка, после которой надо добавлять код, выглядит как
Код
field = field:lower():gsub("[<>]","")..":"
то надо сделать не
Код
if field == "link" then
а
Код
if field == "link:" then


Результат будет примерно таким:

Код
     Заголовок:              Ответ на вопрос: Верите ли Вы, что знак зодиака по гороскопу предопределяет характер и судьбу человека ?
     Ссылка:                 http://svio.net/120/верите-зодиака-гороскопу-предопределяет-характер-человека#a4894

     Заголовок:              Неужели дети могут быть помехой?
     Ссылка:                 http://svio.net/4885/неужели-дети-могут-быть-помехой

     Заголовок:              Редактирование комментария: Вы согласны с Жириновским, что уголовные дела по поводу беспорядков на Манежной надо прекратить?
     Ссылка:                 http://svio.net/4816/согласны-жириновским-уголовные-беспорядков-манежной-прекратить#c4874

Автор: Aлзим 4.1.2011, 18:43

Цитата(Nickolya @ 4.1.2011, 17:39) *
Итак, если еще актуально, вот решение "чтобы ссылка отображалась правильно":

Актуально. Сделал как Вы написали и всё заработало. Большое спасибо big_smile.gif. Вид ссылок стал намного приятнее. Я знал, что у Вас руки золотые. big_smile.gif
С наступившим новым годом и с наступающим Рождеством!:)