Tiny Hublist, Программа для создания хаблистов |
Здравствуйте, гость ( Вход | Регистрация )
Tiny Hublist, Программа для создания хаблистов |
13.4.2011, 7:02
Сообщение
#41
|
|
Местный Группа: Неактивированные Сообщений: 908 Регистрация: 26.12.2008 Пользователь №: 1 574 Спасибо сказали: 1406 раз |
Tiny Hublist Версия: 1.01 Платформа: Win32 Автор: alex82 Описание: Для демонстрации работы этого пингера, я решил написать небольшую программу для создания хаблиста. Программа работает следующим образом: хабы из списка проверяются на работоспособность, после чего результат сохраняется в HTML-файл. Соответственно, для создания хаблиста требуется только сама программа, и любой Web-сервер. Скриншоты tinyhublist_1.02.rar ( 833.81 килобайт ) Кол-во скачиваний: 337 Старые версии: tinyhublist_1.01.zip ( 940.54 килобайт ) Кол-во скачиваний: 147 tinyhublist_1.00.zip ( 224.45 килобайт ) Кол-во скачиваний: 84 Спасибо сказали: Nickolya, ustas, KauH™, Ksan, Артём, Accelerator, KT315, Alexey, ЕгО_ТенЬ, darkangel17, Kingston, Milena, CrazyKiller, baltica, PSIX, Hammer, dj hoodo, Saymon21, dimetro, JumpEXZ, RAND(i)M, DEN 007, @_JuNiOr_@, Sinsei, Damaks, Гарик БатьковиЪ, STIVAN, Osimus, Underconstruction, Mustik, AltSide, мамин_парень |
|
|
17.4.2011, 19:08
Сообщение
#42
|
|
Активный участник Группа: Пользователи Сообщений: 52 Регистрация: 30.6.2010 Из: Волгоград Пользователь №: 7 181 Спасибо сказали: 1 раз |
|
|
|
17.4.2011, 19:24
Сообщение
#43
|
|
Site Reliability Engineer Группа: Модераторы Сообщений: 1 772 Регистрация: 27.6.2009 Из: Чувашия, г. Чебоксары Пользователь №: 3 719 Спасибо сказали: 479 раз |
открываем самый обычный текстовый редактор и пишем такие функции.
UPD: Поделюсь всётаки своим куском, не жадный. Возможно не лучшая реализация но... В tinyhublist.lua находим кусок: Раскрывающийся текст Код if f then local header,row,footer local f2 = io.open(path.."themes/"..tCfg.Theme..".tpl") if f2 then header,row,footer = f2:read("*a"):gsub("{SITENAME}", (tCfg.SiteName:gsub("%%","%%%%"))):match("(.*){ROW_BEGIN}(.*){ROW_END}(.*)") f2:close() end if header then f:write(header) end local even = false После него добавляем: Раскрывающийся текст Код local total_users_count,total_share_size=0,0 local hubs_count,online_hubs_count = 0,0 for _,hubid in ipairs(hubs) do total_users_count = total_users_count + (hubid.Info.Users or 0) total_share_size = total_share_size + (hubid.Info.Share or 0) hubs_count = hubs_count + 1 online_hubs_count = online_hubs_count + (hubid.Info.Online and 1 or 0) end if header then f:write('<b>Краткая статистика:</b><br> '.. '<ul><li>Всего хабов: '..hubs_count..'</li>'.. '<li>Онлайн хабов: '..online_hubs_count..'</li>'.. '<li>Общее число юзеров на хабах сети: '..total_users_count..'</li>'.. '<li>Общий размер шары: '..FormatSize(tonumber(total_share_size),true)..'</li>'.. '<li>Обновление информации происходит один раз в час.</li>'.. '</ul><br><b>Список хабов:</b><br>') end Итог, если мы ничего не накосячили - будет что-то вроде: _______4.png ( 193.95 килобайт ) Кол-во скачиваний: 572 PS. Среднее число юзеров и шары в процессе допиливания. |
|
|
17.4.2011, 19:37
Сообщение
#44
|
|
Активный участник Группа: Пользователи Сообщений: 52 Регистрация: 30.6.2010 Из: Волгоград Пользователь №: 7 181 Спасибо сказали: 1 раз |
А как сделать что-бы хабы сами добавлялись?
Тоесть нажать "Добавить хаб",и хаб на проверку становится админ проверяет и добавляет.... |
|
|
17.4.2011, 19:41
Сообщение
#45
|
|
Site Reliability Engineer Группа: Модераторы Сообщений: 1 772 Регистрация: 27.6.2009 Из: Чувашия, г. Чебоксары Пользователь №: 3 719 Спасибо сказали: 479 раз |
|
|
|
17.4.2011, 19:45
Сообщение
#46
|
|
Активный участник Группа: Пользователи Сообщений: 52 Регистрация: 30.6.2010 Из: Волгоград Пользователь №: 7 181 Спасибо сказали: 1 раз |
Попробую, но не силен в этом.... :(
|
|
|
17.4.2011, 19:51
Сообщение
#47
|
|
Site Reliability Engineer Группа: Модераторы Сообщений: 1 772 Регистрация: 27.6.2009 Из: Чувашия, г. Чебоксары Пользователь №: 3 719 Спасибо сказали: 479 раз |
Что может быть проще, чем открыть шаблон, который у тебя использован и написать что-то вроде:
Код <b>Для добавления хаба в этот список пришлите нам на E-Mail его адрес:</b> <a href="mailto:мыло@домен.ру">мыло<at>домен<dot>ру</a> ???????? |
|
|
17.4.2011, 20:02
Сообщение
#48
|
|
Освоившийся участник Группа: Пользователи Сообщений: 260 Регистрация: 1.6.2010 Пользователь №: 6 968 Спасибо сказали: 83 раза |
Что может быть проще, чем открыть шаблон, который у тебя использован и написать что-то вроде: Неважно, главное есть Хаблист. Вот такой скромный пиринг у меня 2011_04_17_205345.png ( 46.02 килобайт ) Кол-во скачиваний: 604 |
|
|
17.4.2011, 21:03
Сообщение
#49
|
|
Участник Группа: Пользователи Сообщений: 33 Регистрация: 12.5.2009 Из: Волгоград Пользователь №: 3 312 Спасибо сказали: 0 раз |
Как сделать что-бы статистика была слева? А то уже всё перепробовал, а текст по середине остается.
|
|
|
17.4.2011, 21:06
Сообщение
#50
|
|
Освоившийся участник Группа: Пользователи Сообщений: 260 Регистрация: 1.6.2010 Пользователь №: 6 968 Спасибо сказали: 83 раза |
|
|
|
17.4.2011, 21:39
Сообщение
#51
|
|
Участник Группа: Пользователи Сообщений: 33 Регистрация: 12.5.2009 Из: Волгоград Пользователь №: 3 312 Спасибо сказали: 0 раз |
Вроде всё ок. А статистика стоит по середине.
Раскрывающийся текст local total_users_count,total_share_size=0,0 local hubs_count,online_hubs_count = 0,0 for _,hubid in ipairs(hubs) do total_users_count = total_users_count + (hubid.Info.Users or 0) total_share_size = total_share_size + (hubid.Info.Share or 0) hubs_count = hubs_count + 1 online_hubs_count = online_hubs_count + (hubid.Info.Online and 1 or 0) end if header then f:write('<b>Краткая статистика:</b><br> '.. '<ul><li>Всего хабов: '..hubs_count..'</li>'.. '<li>Онлайн хабов: '..online_hubs_count..'</li>'.. '<li>Общее число юзеров на хабах сети: '..total_users_count..'</li>'.. '<li>Общий размер шары: '..FormatSize(tonumber(total_share_size),true)..'</li>'.. '<li>Обновление информации происходит один раз в час.</li>'.. '</ul><br><b>Список хабов:</b><br>') end Кстати есть ещё вопрос. Можно ли сделать рекомендуем хабы? И как сделать что-бы они были отделены от других хабов. |
|
|
17.4.2011, 23:35
Сообщение
#52
|
|
Site Reliability Engineer Группа: Модераторы Сообщений: 1 772 Регистрация: 27.6.2009 Из: Чувашия, г. Чебоксары Пользователь №: 3 719 Спасибо сказали: 479 раз |
ну так ты не код копай, а шаблон, .tpl
>>Можно ли сделать рекомендуем хабы? А почему нет? Только переведи слово "tiny" |
|
|
18.4.2011, 16:01
Сообщение
#53
|
|
Активный участник Группа: Пользователи Сообщений: 65 Регистрация: 29.5.2010 Пользователь №: 6 945 Спасибо сказали: 2 раза |
|
|
|
18.4.2011, 16:59
Сообщение
#54
|
|
Site Reliability Engineer Группа: Модераторы Сообщений: 1 772 Регистрация: 27.6.2009 Из: Чувашия, г. Чебоксары Пользователь №: 3 719 Спасибо сказали: 479 раз |
Ну верстайте, верстайте. У нас во всех браузерах всё нормально.
Раскрывающийся текст открываем самый обычный текстовый редактор и пишем такие функции. UPD: Поделюсь всётаки своим куском, не жадный. Возможно не лучшая реализация но... В tinyhublist.lua находим кусок: Раскрывающийся текст Код if f then local header,row,footer local f2 = io.open(path.."themes/"..tCfg.Theme..".tpl") if f2 then header,row,footer = f2:read("*a"):gsub("{SITENAME}", (tCfg.SiteName:gsub("%%","%%%%"))):match("(.*){ROW_BEGIN}(.*){ROW_END}(.*)") f2:close() end if header then f:write(header) end local even = false После него добавляем: Код local total_users_count,total_share_size=0,0 local hubs_count,online_hubs_count = 0,0 for _,hubid in ipairs(hubs) do total_users_count = total_users_count + (hubid.Info.Users or 0) total_share_size = total_share_size + (hubid.Info.Share or 0) hubs_count = hubs_count + 1 online_hubs_count = online_hubs_count + (hubid.Info.Online and 1 or 0) end if header then f:write('<b>Краткая статистика:</b><br> '.. '<ul><li>Всего хабов: '..hubs_count..'</li>'.. '<li>Онлайн хабов: '..online_hubs_count..'</li>'.. '<li>Общее число юзеров на хабах сети: '..total_users_count..'</li>'.. '<li>Общий размер шары: '..FormatSize(tonumber(total_share_size),true)..'</li>'.. '<li>Обновление информации происходит один раз в час.</li>'.. '</ul><br><b>Список хабов:</b><br>') end Добавляем стату среднее число юзеров и шары: Например, после: Код '<li>Общий размер шары: '..FormatSize(tonumber(total_share_size),true)..'</li>'.. Добавляем: Код '<li>В среднем на каждом хабе '..math.floor(total_users_count/online_hubs_count)..' юзеров и '..FormatSize(tonumber(total_share_size/online_hubs_count),true)..' шары</li>'.. Делаем отображение иконок софта: Раскрывающийся текст Например в начале tinyhublist.lua создаём табличку, типа: Код tSoftWare = { ["PtokaX"] = "<a href=\"http://www.ptokax.org\" target=\"_blank\" title=\"Перейти на домашную страницу\"> <img src=\"/style/soft_img/".. "ptokax.png\" border=\"0\"></a> PtokaX DC Hub", ["RusHub"] = "<a href=\"http://rushub.org\" target=\"_blank\" title=\"Перейти на домашную страницу\"> <img src=\"/style/soft_img/".. "rushub.png\" border=\"0\"></a> RusHub", ["YnHub"] = "<a href=\"http://ynhub.org/\" target=\"_blank\" title=\"Перейти на домашную страницу\"> <img src=\"/style/soft_img/".. "ynhub.png\" border=\"0\"</a> YnHub", ["VerliHub"] = "<a href=\"http://www.verlihub-project.org/doku.php?id=start\" target=\"_blank\" title=\"Перейти на домашную страницу\">".. "<img src=\"/style/soft_img/verlihub.png\" border=\"0\"></a> VerliHub", ["Eximius"] = "<a href=\"http://eximius.rs2soft.nl/\" target=\"_blank\" title=\"Перейти на домашную страницу\"> <img src=\"/style/soft_img/".. "eximius.png\" border=\"0\"></a> Eximius", ["HexHub"] = "<a href=\"http://nemesis.te-home.net/HeXHub/\" target=\"_blank\" title=\"Перейти на домашную страницу\">".. "<img src=\"/style/soft_img/hexhub.png\" border=\"0\"></a> HexHub", ["FlexHubBeta 0.1"] = "<a href=\"http://www.flexhub.org/forum/\" target=\"_blank\" title=\"Перейти на домашную страницу\">".. "<img src=\"/style/soft_img/flexhub.png\" border=\"0\"></a> FlexHub", } В tinyhublist.lua находим: Код :gsub("{FLAG}",v.Country == "??" and "unknown" or v.Country:lower()) После добавляем: Код :gsub("{HubSoft}",(tSoftWare[v.Info.HubSoft] or (v.Info.HubSoft and v.Info.HubSoft or "n/a"))) В той дериктории, где у нас будет сохранение странички хаблиста создаём папки style и soft_img, после чего в soft_img кладём изображения ptokax.png,rushub.png,ynhub.png,verlihub.png, eximius.png, hexhub.png,flexhub.png после открываем шаблон, и в нужном месте добавляем {HubSoft} PS. Пример, как это всё выглядит у нас в посте № 43 |
|
|
18.4.2011, 17:11
Сообщение
#55
|
|
Активный участник Группа: Пользователи Сообщений: 65 Регистрация: 29.5.2010 Пользователь №: 6 945 Спасибо сказали: 2 раза |
Что еще верстать, как было написано так и сделал.
Вот кусок кода как я сделал. Раскрывающийся текст Код if header then f:write(header) end local even = false local total_users_count,total_share_size=0,0 local hubs_count,online_hubs_count = 0,0 for _,hubid in ipairs(hubs) do total_users_count = total_users_count + (hubid.Info.Users or 0) total_share_size = total_share_size + (hubid.Info.Share or 0) hubs_count = hubs_count + 1 online_hubs_count = online_hubs_count + (hubid.Info.Online and 1 or 0) end if header then f:write('<b>Краткая статистика:</b><br> '.. '<ul><li>Всего хабов: '..hubs_count..'</li>'.. '<li>Онлайн хабов: '..online_hubs_count..'</li>'.. '<li>Общее число юзеров на хабах сети: '..total_users_count..'</li>'.. '<li>Общий размер шары: '..FormatSize(tonumber(total_share_size),true)..'</li>'.. '<li>В среднем на каждом хабе '..math.floor(total_users_count/online_hubs_count)..' юзеров и '..FormatSize(tonumber(total_share_size/online_hubs_count),true)..' шары</li>'.. '<li>Обновление информации происходит один раз в час.</li>'.. '</ul><br><b>Список хабов:</b><br>') end for _,v in ipairs(hubs) do if tCfg.HTMLFilter == 1 or (tCfg.HTMLFilter == 2 and hub.Info.Online) or (tCfg.HTMLFilter == 3 and hub.Info.State >= 9) then f:write((row :gsub("{ROWSTYLE}",even and "even" or "odd") :gsub("{STATE}",v.Info.Online and "online" or "offline") :gsub("{STATE_STRING}",v.Info.Online and "Онлайн" or "Оффлайн") :gsub("{DESCRIPTION}",v.Info.Descr and v.Info.Descr:htmlescape():gsub("%%","%%%%") or "") :gsub("{NAME}",v.Info.Name and v.Info.Name:htmlescape():gsub("%%","%%%%") or v.Addr) :gsub("{ADDRESS}",v.Addr) :gsub("{USERS}",v.Info.Users or "?") :gsub("{SHARE}",v.Info.Share and FormatSize(tonumber(v.Info.Share),true) or "?") :gsub("{MAXUSERS}",v.Info.MaxUsers or "?") :gsub("{MINSHARE}",v.Info.MinShare and (v.Info.MinShare > 0 and FormatSize(tonumber(v.Info.MinShare)) or "не ограничено") or "?") :gsub("{MINSLOTS}",v.Info.MinSlots and (v.Info.MinSlots > 0 and v.Info.MinSlots or "не ограничено") or "?") :gsub("{MAXHUBS}",v.Info.MaxHubs and (v.Info.MaxHubs > 0 and v.Info.MaxHubs or "не ограничено") or "?") :gsub("{PINGDATE}",os.date("%H:%M:%S",v.Time)) :gsub("{PINGDATE_([^}]+)}",function(fstr) return os.date(fstr,v.Time) end) :gsub("{COUNTRY_CODE}",v.Country) :gsub("{COUNTRY}",tCountry[v.Country] or "Неизвестно") :gsub("{FLAG}",v.Country == "??" and "unknown" or v.Country:lower()) )) even = not even end end if footer then f:write(footer,"\n<!-- Tiny Hublist ",_version," by alex82 -->") end if tFtp.Enable then f:seek("set") local r,e = ftp.put{host = tFtp.Host, port = tFtp.Port, user = tFtp.User, password = tFtp.Pass, path = tCfg.File, source = ltn12.source.file(f)} os.remove(path.."tempfile") else f:close() end end end if ThreadWait and tCfg.RestartTime then collectgarbage("collect") ThreadWait(tCfg.RestartTime*60000) else bStop = true end end |
|
|
18.4.2011, 17:16
Сообщение
#56
|
|
Site Reliability Engineer Группа: Модераторы Сообщений: 1 772 Регистрация: 27.6.2009 Из: Чувашия, г. Чебоксары Пользователь №: 3 719 Спасибо сказали: 479 раз |
причём тут это????? Есть шаблон в папке themes, вот там и разбирайся!
|
|
|
18.4.2011, 20:15
Сообщение
#57
|
|
Местный Группа: Неактивированные Сообщений: 908 Регистрация: 26.12.2008 Пользователь №: 1 574 Спасибо сказали: 1406 раз |
Цитата А как сделать что-бы хабы сами добавлялись? Или как сделать статистику типо этой? Хабов в списке: 161. Из них онлайн: 150, полностью проверено: 147. Пользователи оставили комментариев: 36. да,да... И кстати, если бы я выложил движок хаблиста BCETI, вы бы с ним все равно не справились, поскольку вы и с этим, простейшим хаблистом справляетесь с трудом. Sinsei А что мешает засунуть эту фигню в блок, и явно указать, по какой стороне выравнивать его содержимое? Код <div style="text-align: left"> <!-- Тут какая-то фигня --> </div> PS. Код '<ul><li>Всего хабов: '..hubs_count..'</li>'.. О боже . Не показывайте мне это - иначе мои глаза вытекут, и я больше не смогу выпускать новые версии.
'<li>Онлайн хабов: '..online_hubs_count..'</li>'.. '<li>Общее число юзеров на хабах сети: '..total_users_count..'</li>'.. '<li>Общий размер шары: '..FormatSize(tonumber(total_share_size),true)..'</li>'.. '<li>В среднем на каждом хабе '..math.floor(total_users_count/online_hubs_count)..' юзеров и '..FormatSize(tonumber(total_share_size/online_hubs_count),true)..' шары</li>'.. '<li>Обновление информации происходит один раз в час.</li>'.. '</ul> |
|
|
19.4.2011, 0:43
Сообщение
#58
|
|
Абсолютный новичок Группа: Пользователи Сообщений: 5 Регистрация: 3.4.2011 Пользователь №: 9 078 Спасибо сказали: 0 раз |
Цитата И кстати, если бы я выложил движок хаблиста BCETI, вы бы с ним все равно не справились, поскольку вы и с этим, простейшим хаблистом справляетесь с трудом. Ну выложите, те, кому нужно это действительно, они смогут понять, что и к чему. А кому нужно, пусть начинают осваивать такие небольшие вещи. Согласитесь, ведь вам с этой части когда-то было тоже много не понятно. Но прошло время, и вы ведь научились. Тоже самое и они. И да, Цитата В последнее время появились нехорошие тенденции - рекламировать коммерческие проекты на некоммерческих ресурсах, выкладывать софт с закрытым кодом и встроенными шеллами, пытаться завлечь бесплатных лохов бетатестеров в закрытые собственнические проекты, и.т.д. И я решил слегка ударить по этой шняге нехорошим тенденциям выкладыванием софта с аналогичным функционалом, но открытого и бесплатного. Тем самым удар будет самый мощьный, и это хорошо, я думаю вам многие люди были бы благодарны. |
|
|
19.4.2011, 1:18
Сообщение
#59
|
|
7 квадратиков Группа: Модераторы Сообщений: 793 Регистрация: 21.1.2009 Пользователь №: 1 895 Спасибо сказали: 301 раз |
Ну выложите, те, кому нужно это действительно, они смогут понять, что и к чему. Те, кто сможет понять — они и свой хаблист, не сильно вспотев, напишут или из этого слепят. Большинство-же будет мозг выносить нубскими вопросами. А кому нужно, пусть начинают осваивать такие небольшие вещи. Пусть начинают, никто-же не против. Пусть берут и дописывают этот хаблист. Лучшая школа — практика. Зачем лишать их возможности учиться? |
|
|
19.4.2011, 9:03
Сообщение
#60
|
|
Белый Волк Группа: Пользователи Сообщений: 1 723 Регистрация: 11.9.2008 Из: г.Томск Пользователь №: 516 Спасибо сказали: 657 раз |
Много хаблистов - к чему? Скоро народ начнёт гасить пингеров, не разбираясь, где чей айпи..
Цитата Те, кто сможет понять — они и свой хаблист не сильно вспотев напишут или из этого слепят. Большинство-же будет мозг выносить нубскими вопросами. ....и вдобавок заменят авторскую подпись своими, "}{AI<Ep"-скими..Даже на этот Tiny уже новые "авторы" есть... Не надо выкладывать полную версию! |
|
|
19.4.2011, 10:57
Сообщение
#61
|
|
Активный участник Группа: Пользователи Сообщений: 65 Регистрация: 29.5.2010 Пользователь №: 6 945 Спасибо сказали: 2 раза |
Сделал чтобы статистика была по левому краю во всех браузерах.
Раскрывающийся текст local total_users_count,total_share_size=0,0 local hubs_count,online_hubs_count = 0,0 for _,hubid in ipairs(hubs) do total_users_count = total_users_count + (hubid.Info.Users or 0) total_share_size = total_share_size + (hubid.Info.Share or 0) hubs_count = hubs_count + 1 online_hubs_count = online_hubs_count + (hubid.Info.Online and 1 or 0) end if header then f:write('<div style="text-align: left"><b>Краткая статистика:</b><br> '.. '<ul><li>Всего хабов: '..hubs_count..'</li>'.. '<li>Онлайн хабов: '..online_hubs_count..'</li>'.. '<li>Общее число юзеров на хабах сети: '..total_users_count..'</li>'.. '<li>Общий размер шары: '..FormatSize(tonumber(total_share_size),true)..'</li>'.. '<li>Обновление информации происходит один раз в час.</li>'.. '</ul><br><b>Список хабов:</b></div><br>') end |
|
|
Похожие темы
Тема | Ответов | Автор | Просмотров | Последнее сообщение | |
---|---|---|---|---|---|
Public PHP hublist (Хаблист) by Enyby Публичный открытый хаблист на PHP |
123 | Enyby | 124 912 | 26.7.2013, 11:46 Посл. сообщение: dj hoodo | |
От: Tiny Hublist От темы с ID: 4811 |
1 | Артём | 5 941 | 27.12.2011, 15:28 Посл. сообщение: Mellon | |
От: Public PHP hublist by Enyby От темы с ID: 4961 |
0 | Saymon21 | 5 217 | 20.11.2011, 21:22 Посл. сообщение: Saymon21 | |
Small DC HubList (Хаблист) Создай свой хаблист. CMS для создания хаблиста. |
62 | Stribog | 71 011 | 14.10.2011, 17:45 Посл. сообщение: KT315 | |
От: Public PHP hublist by Enyby От темы с ID: 4961 |
1 | Mellon | 5 900 | 12.10.2011, 8:23 Посл. сообщение: Артём | |
От: Tiny Hublist От темы с ID: 4811 |
1 | STIVAN | 6 289 | 18.4.2011, 20:20 Посл. сообщение: Saymon21 | |
От: Small DC HubList (Хаблист) От темы с ID: 4709 |
43 | Alexey | 40 912 | 31.3.2011, 19:38 Посл. сообщение: EvilNico | |
Tiny Release Eximius |
0 | Артём | 5 810 | 3.8.2010, 15:29 Посл. сообщение: Артём | |
lock2key для hublist'а Код для работы с хаблистом. |
4 | Enyby | 11 897 | 29.7.2010, 13:04 Посл. сообщение: Enyby |
|
Сейчас: 23.11.2024, 5:59 |