Browse Source

add new lang

master
filesite 1 year ago
parent
commit
485e4ea1e3
  1. 40
      i18n/de.json
  2. 40
      i18n/es.json
  3. 40
      i18n/hi.json
  4. 40
      i18n/ru.json
  5. 283
      public/de/index.html
  6. 4
      public/en-us/index.html
  7. 283
      public/es/index.html
  8. 283
      public/hi/index.html
  9. 4
      public/ja/index.html
  10. 283
      public/ru/index.html
  11. 4
      public/template/index.html
  12. 4
      public/zh/index.html

40
i18n/de.json

@ -0,0 +1,40 @@ @@ -0,0 +1,40 @@
{
"Current Lang": "Deutsch",
"HeroUnion - Open source web crawler union.": "HeroUnion – Open-Source-Webcrawler-Union.",
"HeroUnion.website": "HeroUnion.website",
"HeroUnion<small> - Open source web crawler union</small>": "HeroUnion <small>– Open-Source-Webcrawler-Union</small>",
"HeroUnion Stats": "HeroUnion-Statistiken",
"It's running": "Es läuft",
"Tasks Stats": "Aufgabenstatistiken",
"Last": "Zuletzt",
"Waiting": "Warten",
"Running": "Läuft",
"Total": "Gesamt",
"Done": "Erledigt",
"Failed": "Fehlgeschlagen",
"Notify Stats": "Benachrichtigungsstatistiken",
"Bot Stats": "Bot-Statistiken",
"Idle": "Leerlauf",
"Busy": "Beschäftigt",
"Offline": "Offline",
"JSON Data": "JSON-Daten",
"Covenant of the Alliance": "Pakt der Allianz",
"Please abide by the following conventions and stick to it for a better tomorrow for yourself and the whole society!": "Bitte halten Sie sich an die folgenden Konventionen und bleiben Sie dabei, für eine bessere Zukunft für sich selbst und die gesamte Gesellschaft!",
"Comply with local/national laws and regulations": "Halten Sie lokale/nationale Gesetze und Vorschriften ein",
"Data that requires login or VIP status to access will not be crawled": "Daten, für deren Zugriff eine Anmeldung oder ein VIP-Status erforderlich ist, werden nicht gecrawlt.",
"Data that is explicitly prohibited from being collected by the target website will not be crawled": "Daten, deren Erfassung durch die Zielwebsite ausdrücklich verboten ist, werden nicht gecrawlt.",
"The commercial core data of the target website is not crawled": "Die kommerziellen Kerndaten der Zielwebsite werden nicht gecrawlt",
"Low concurrency, low frequency, does not affect the normal operation of the target website": "Geringe Parallelität, niedrige Frequenz, beeinträchtigt nicht den normalen Betrieb der Zielwebsite",
"Bots": "Bots",
"HeroUnion App": "HeroUnion App",
"HeroUnion download": "HeroUnion herunterladen",
"HeroBot download": "HeroBot herunterladen",
"HeroUnion<strong> is only responsible for the scheduling of crawlers and tasks</strong>.": "HeroUnion <strong>ist nur für die Planung von Crawlern und Aufgaben verantwortlich</strong> .",
"The contracts supported by crawlers and the specific content of tasks have nothing to do with the alliance.": "Die von den Crawlern unterstützten Verträge und die konkreten Aufgabeninhalte haben nichts mit der Allianz zu tun.",
"Website monitor": "Website-Monitor",
"Web Scraper": "Web Scraper",
"Disclaimer": "Haftungsausschluss",
"Information protected by law will not be crawled": "Gesetzlich geschützte Informationen werden nicht gecrawlt",
"for example": "Zum Beispiel",
"personal privacy data mobile phone number, ID number, etc.": "Persönliche Datenschutzdaten, Handynummer, Ausweisnummer usw."
}

40
i18n/es.json

@ -0,0 +1,40 @@ @@ -0,0 +1,40 @@
{
"Current Lang": "Español",
"HeroUnion - Open source web crawler union.": "HeroUnion - Unión de rastreadores web de código abierto.",
"HeroUnion.website": "Sitio web de HeroUnion",
"HeroUnion<small> - Open source web crawler union</small>": "HeroUnion <small>- Unión de rastreadores web de código abierto</small>",
"HeroUnion Stats": "Estadísticas de HeroUnion",
"It's running": "Esta corriendo",
"Tasks Stats": "Estadísticas de tareas",
"Last": "Último",
"Waiting": "Espera",
"Running": "Correr",
"Total": "Total",
"Done": "Hecho",
"Failed": "Fallido",
"Notify Stats": "Notificar estadísticas",
"Bot Stats": "Estadísticas del bot",
"Idle": "Inactivo",
"Busy": "Ocupado",
"Offline": "Desconectado",
"JSON Data": "Datos JSON",
"Covenant of the Alliance": "Pacto de la Alianza",
"Please abide by the following conventions and stick to it for a better tomorrow for yourself and the whole society!": "¡Por favor, respete las siguientes convenciones y cúmplalas para un mejor mañana para usted y para toda la sociedad!",
"Comply with local/national laws and regulations": "Cumplir con las leyes y regulaciones locales/nacionales",
"Data that requires login or VIP status to access will not be crawled": "No se rastrearán los datos que requieren inicio de sesión o estado VIP para acceder.",
"Data that is explicitly prohibited from being collected by the target website will not be crawled": "No se rastrearán los datos cuya recopilación esté explícitamente prohibida por el sitio web de destino.",
"The commercial core data of the target website is not crawled": "No se rastrean los datos comerciales principales del sitio web de destino",
"Low concurrency, low frequency, does not affect the normal operation of the target website": "Baja concurrencia, baja frecuencia, no afecta el funcionamiento normal del sitio web de destino.",
"Bots": "Bots",
"HeroUnion App": "Aplicación HeroUnion",
"HeroUnion download": "Descarga de HeroUnion",
"HeroBot download": "Descargar HeroBot",
"HeroUnion<strong> is only responsible for the scheduling of crawlers and tasks</strong>.": "HeroUnion <strong>solo es responsable de la programación de rastreadores y tareas</strong> .",
"The contracts supported by crawlers and the specific content of tasks have nothing to do with the alliance.": "Los contratos respaldados por los rastreadores y el contenido específico de las tareas no tienen nada que ver con la alianza.",
"Website monitor": "Monitor de sitios web",
"Web Scraper": "Raspador web",
"Disclaimer": "Descargo de responsabilidad",
"Information protected by law will not be crawled": "La información protegida por la ley no será rastreada",
"for example": "Por ejemplo",
"personal privacy data mobile phone number, ID number, etc.": "Datos personales de privacidad: número de teléfono móvil, número de identificación, etc."
}

40
i18n/hi.json

@ -0,0 +1,40 @@ @@ -0,0 +1,40 @@
{
"Current Lang": "हिन्दी",
"HeroUnion - Open source web crawler union.": "हीरोयूनियन - ओपन सोर्स वेब क्रॉलर यूनियन।",
"HeroUnion.website": "HeroUnion.वेबसाइट",
"HeroUnion<small> - Open source web crawler union</small>": "हीरोयूनियन <small>- ओपन सोर्स वेब क्रॉलर यूनियन</small>",
"HeroUnion Stats": "हीरोयूनियन आँकड़े",
"It's running": "यह काम कर रहा है",
"Tasks Stats": "कार्य आँकड़े",
"Last": "अंतिम",
"Waiting": "इंतज़ार में",
"Running": "दौड़ना",
"Total": "कुल",
"Done": "हो गया",
"Failed": "असफल",
"Notify Stats": "आँकड़े सूचित करें",
"Bot Stats": "बॉट आँकड़े",
"Idle": "निठल्ला",
"Busy": "व्यस्त",
"Offline": "ऑफलाइन",
"JSON Data": "JSON डेटा",
"Covenant of the Alliance": "गठबंधन की वाचा",
"Please abide by the following conventions and stick to it for a better tomorrow for yourself and the whole society!": "कृपया निम्नलिखित परंपराओं का पालन करें और अपने तथा पूरे समाज के बेहतर कल के लिए इसका पालन करें!",
"Comply with local/national laws and regulations": "स्थानीय/राष्ट्रीय कानूनों और विनियमों का अनुपालन करें",
"Data that requires login or VIP status to access will not be crawled": "जिस डेटा तक पहुंचने के लिए लॉगिन या वीआईपी स्टेटस की आवश्यकता होती है, उसे क्रॉल नहीं किया जाएगा",
"Data that is explicitly prohibited from being collected by the target website will not be crawled": "लक्ष्य वेबसाइट द्वारा एकत्र किए जाने से स्पष्ट रूप से प्रतिबंधित डेटा को क्रॉल नहीं किया जाएगा",
"The commercial core data of the target website is not crawled": "लक्ष्य वेबसाइट का वाणिज्यिक कोर डेटा क्रॉल नहीं किया गया है",
"Low concurrency, low frequency, does not affect the normal operation of the target website": "कम समवर्तीता, कम आवृत्ति, लक्ष्य वेबसाइट के सामान्य संचालन को प्रभावित नहीं करती है",
"Bots": "बॉट",
"HeroUnion App": "हीरोयूनियन ऐप",
"HeroUnion download": "HeroUnion डाउनलोड",
"HeroBot download": "HeroBot डाउनलोड करें",
"HeroUnion<strong> is only responsible for the scheduling of crawlers and tasks</strong>.": "हीरोयूनियन <strong>केवल क्रॉलर्स और कार्यों के शेड्यूलिंग के लिए जिम्मेदार है</strong> ।",
"The contracts supported by crawlers and the specific content of tasks have nothing to do with the alliance.": "क्रॉलर्स द्वारा समर्थित अनुबंधों और कार्यों की विशिष्ट सामग्री का गठबंधन से कोई लेना-देना नहीं है।",
"Website monitor": "वेबसाइट मॉनिटर",
"Web Scraper": "वेब स्क्रैपर",
"Disclaimer": "अस्वीकरण",
"Information protected by law will not be crawled": "कानून द्वारा संरक्षित जानकारी को क्रॉल नहीं किया जाएगा",
"for example": "उदाहरण के लिए",
"personal privacy data mobile phone number, ID number, etc.": "व्यक्तिगत गोपनीयता डेटा, मोबाइल फोन नंबर, आईडी नंबर, आदि।"
}

40
i18n/ru.json

@ -0,0 +1,40 @@ @@ -0,0 +1,40 @@
{
"Current Lang": "Русский",
"HeroUnion - Open source web crawler union.": "HeroUnion — объединение веб-сканеров с открытым исходным кодом.",
"HeroUnion.website": "HeroUnion.сайт",
"HeroUnion<small> - Open source web crawler union</small>": "HeroUnion <small>- Союз веб-сканеров с открытым исходным кодом</small>",
"HeroUnion Stats": "Статистика HeroUnion",
"It's running": "Он работает",
"Tasks Stats": "Статистика задач",
"Last": "Последний",
"Waiting": "Ожидающий",
"Running": "Бег",
"Total": "Общий",
"Done": "Сделанный",
"Failed": "Неуспешный",
"Notify Stats": "Уведомить статистику",
"Bot Stats": "Статистика ботов",
"Idle": "Праздный",
"Busy": "Занятый",
"Offline": "Оффлайн",
"JSON Data": "Данные JSON",
"Covenant of the Alliance": "Соглашение Альянса",
"Please abide by the following conventions and stick to it for a better tomorrow for yourself and the whole society!": "Пожалуйста, соблюдайте следующие правила и придерживайтесь их ради лучшего будущего для себя и всего общества!",
"Comply with local/national laws and regulations": "Соблюдайте местные/национальные законы и правила",
"Data that requires login or VIP status to access will not be crawled": "Данные, для доступа к которым требуется вход в систему или VIP-статус, не будут сканироваться.",
"Data that is explicitly prohibited from being collected by the target website will not be crawled": "Данные, сбор которых явно запрещен целевым веб-сайтом, не будут сканироваться.",
"The commercial core data of the target website is not crawled": "Коммерческие основные данные целевого веб-сайта не сканируются.",
"Low concurrency, low frequency, does not affect the normal operation of the target website": "Низкая степень параллелизма, низкая частота, не влияет на нормальную работу целевого веб-сайта.",
"Bots": "Боты",
"HeroUnion App": "Приложение HeroUnion",
"HeroUnion download": "HeroUnion скачать",
"HeroBot download": "HeroBot скачать",
"HeroUnion<strong> is only responsible for the scheduling of crawlers and tasks</strong>.": "HeroUnion <strong>отвечает только за планирование работы сканеров и задач</strong> .",
"The contracts supported by crawlers and the specific content of tasks have nothing to do with the alliance.": "Контракты, поддерживаемые краулерами, и конкретное содержание задач не имеют никакого отношения к альянсу.",
"Website monitor": "Монитор веб-сайта",
"Web Scraper": "Веб-скрейпер",
"Disclaimer": "Отказ от ответственности",
"Information protected by law will not be crawled": "Информация, защищенная законом, не будет сканироваться",
"for example": "например",
"personal privacy data mobile phone number, ID number, etc.": "персональные данные, номер мобильного телефона, номер удостоверения личности и т. д."
}

283
public/de/index.html

@ -0,0 +1,283 @@ @@ -0,0 +1,283 @@
<!doctype html>
<html lang="en-us">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width">
<title>HeroUnion – Open-Source-Webcrawler-Union.</title>
<meta name="author" content="HeroUnion.website">
<meta name="description" content="HeroUnion – Open-Source-Webcrawler-Union.">
<style>
*,body{margin:0;padding:0}
body{padding:8px;max-width:640px;margin:0 auto}
h1{font-size:2em;font-weight:500}
small{font-size:65%;font-weight:400}
pre{background-color:#DDD;padding-bottom:3px;padding-right:3px;border-radius:0 5px 0 5px;max-width:480px}
code{display:block;background-color:#EEE;padding:4px}
dt{background-color:#EEE;padding:4px 6px}
dd{text-indent:1em;margin:4px 0 8px 0}
li{margin-left:1em}
footer{padding-bottom:2em}
.text-center{text-align:center}
.text-right{text-align:right}
.mt-d5{margin-top:.5em}
.mt-1{margin-top:1em}
.mt-2{margin-top:2em}
.mt-4{margin-top:4em}
.mx-d2{margin-left:.5em;margin-right:.2em}
.icon{vertical-align:middle}
.stats{background-color:#EEE;padding:10px 10px 4px 10px}
.col{display:inline-block;padding:13px 4px;width:20%;background:#444;color:#FFF;margin-right:4px;margin-bottom:6px;text-align:center}
.col strong{font-size:24px}
.col label{display:block;font-size:15px}
.info{background-color:darkblue}
.success{background-color:green}
.warning{background-color:orange;color:#444}
.danger{background-color:red}
.disable{background-color:gray}
.langswitcher{position:relative}
.langswitcher button{padding:2px 4px;cursor:pointer}
.dropmenu{display:none;position:absolute;right:0;top:28px;padding:5px;width:80px;background-color:#FFF;border:1px solid #EEE}
.dropmenu li{list-style:none;padding:0;margin:3px 0;text-align:center}
@media(max-width:480px) {
h1 small{display:block}
}
</style>
</head>
<body>
<h1 class="text-center">HeroUnion <small>– Open-Source-Webcrawler-Union</small></h1>
<hr class="mt-d5">
<div class="text-right mt-d5 langswitcher">
<button data-status="closed">
<img src="/globe.svg" alt="Globe language switcher" class="icon">
Deutsch
</button>
<ul class="dropmenu">
<li><a href="/">English</a></li>
<li><a href="/zh/">简体中文</a></li>
<li><a href="/ja/">日本語</a></li>
<li><a href="/es/">Español</a></li>
<li><a href="/de/">Deutsch</a></li>
<li><a href="/ru/">Русский</a></li>
<li><a href="/hi/">हिन्दी</a></li>
</ul>
</div>
<h3 class="mt-2">HeroUnion-Statistiken Es läuft <span class="run_time">...</span></h3>
<h4 class="mt-d5">Aufgabenstatistiken (Zuletzt <span class="cache_time">...</span>)</h4>
<div class="stats taskStatus">
<span class="col info">
<strong class="waiting">...</strong>
<label>Warten</label>
</span>
<span class="col warning">
<strong class="running">...</strong>
<label>Läuft</label>
</span>
<div>
<span class="col">
<strong class="total">...</strong>
<label>Gesamt</label>
</span>
<span class="col success">
<strong class="done">...</strong>
<label>Erledigt</label>
</span>
<span class="col danger">
<strong class="failed">...</strong>
<label>Fehlgeschlagen</label>
</span>
</div>
</div>
<h4 class="mt-d5">Benachrichtigungsstatistiken (Zuletzt <span class="cache_time">...</span>)</h4>
<div class="stats taskNotifyStatus">
<span class="col">
<strong class="total">...</strong>
<label>Gesamt</label>
</span>
<span class="col success">
<strong class="done">...</strong>
<label>Erledigt</label>
</span>
<span class="col danger">
<strong class="failed">...</strong>
<label>Fehlgeschlagen</label>
</span>
</div>
<h4 class="mt-d5">Bot-Statistiken</h4>
<div class="stats heroStatus">
<span class="col">
<strong class="total">...</strong>
<label>Gesamt</label>
</span>
<span class="col success">
<strong class="idle">...</strong>
<label>Leerlauf</label>
</span>
<span class="col warning">
<strong class="busy">...</strong>
<label>Beschäftigt</label>
</span>
<span class="col disable">
<strong class="offline">...</strong>
<label>Offline</label>
</span>
</div>
<h4 class="mt-d5">JSON-Daten</h4>
<pre><code id="herounion_stats">...</code></pre>
<h3 class="mt-2">Pakt der Allianz</h3>
<p class="mt-1">Bitte halten Sie sich an die folgenden Konventionen und bleiben Sie dabei, für eine bessere Zukunft für sich selbst und die gesamte Gesellschaft!</p>
<ul class="mt-d5">
<li>Halten Sie lokale/nationale Gesetze und Vorschriften ein</li>
<li>Gesetzlich geschützte Informationen werden nicht gecrawlt (Zum Beispiel: Persönliche Datenschutzdaten, Handynummer, Ausweisnummer usw.)</li>
<li>Daten, für deren Zugriff eine Anmeldung oder ein VIP-Status erforderlich ist, werden nicht gecrawlt.</li>
<li>Daten, deren Erfassung durch die Zielwebsite ausdrücklich verboten ist, werden nicht gecrawlt.</li>
<li>Die kommerziellen Kerndaten der Zielwebsite werden nicht gecrawlt</li>
<li>Geringe Parallelität, niedrige Frequenz, beeinträchtigt nicht den normalen Betrieb der Zielwebsite</li>
</ul>
<h3 class="mt-2">Bots</h3>
<dl class="mt-d5" id="herobots">...</dl>
<h3 class="mt-2">HeroUnion App</h3>
<ul class="mt-d5">
<li>
<strong>Website-Monitor:</strong>
<a href="https://monitor.filesite.io/d/ddntdyyhv943ke/e7bd91-e7ab99-e79b91-e68ea7?orgId=1" target="_blank">FileSite.io Monitor</a>,
<a href="https://github.com/filesite-io/monit-via-herounion" target="_blank">Monitor source code download</a>
</li>
<li>
<strong>Web Scraper:</strong>
<a href="https://tajian.tv/" target="_blank">TaJian.tv - video box</a>,
<a href="https://github.com/filesite-io/machete" target="_blank">Machete source code download</a>
</li>
</ul>
<h3 class="mt-1">HeroUnion herunterladen</h3>
<p><a href="https://github.com/filesite-io/herounion" target="_blank">https://github.com/filesite-io/herounion</a></p>
<h3 class="mt-1">HeroBot herunterladen</h3>
<p><a href="https://github.com/filesite-io/machete_hero" target="_blank">https://github.com/filesite-io/machete_hero</a></p>
<footer class="mt-4">
<p>
<strong>Haftungsausschluss:</strong>
<br>HeroUnion <strong>ist nur für die Planung von Crawlern und Aufgaben verantwortlich</strong> .
Die von den Crawlern unterstützten Verträge und die konkreten Aufgabeninhalte haben nichts mit der Allianz zu tun.
</p>
<p class="mt-2 text-center">&copy;copyright <a href="https://herounion.website/" target="_blank">HeroUnion.Website</a></p>
</footer>
<script src="/js/jquery-3.7.1.min.js"></script>
<script type="text/javascript">
var toggleLangSwitcher = function(evt) {
var btn = evt.target;
if (!btn) {return false;}
var status = $(btn).attr('data-status');
if (status == 'closed') {
$('.langswitcher .dropmenu').show();
$(btn).attr('data-status', 'opened');
}else {
$('.langswitcher .dropmenu').hide();
$(btn).attr('data-status', 'closed');
}
};
$('.langswitcher button').click(toggleLangSwitcher);
var formatSeconds = function(secs) {
var str = secs + ' seconds';
if (secs > 86400) {
str = Math.floor(secs/86400) + ' days';
}else if (secs > 3600) {
str = Math.floor(secs/3600) + ' hours';
}else if (secs > 300) {
str = Math.floor(secs/60) + ' minutes';
}else if (secs > 86400*365) {
str = Math.floor(secs/86400/365) + ' years'
+ Math.floor( (secs - Math.floor(secs/86400/365)) / 86400 ) + ' days';
}
return str;
};
var renderStats = function(parentCls, data) {
for (var key in data) {
$('.' + parentCls + ' .'+key).text(data[key]);
}
};
var htmlspecialchars = function(str) {
return str.replace('&', '&amp;').replace('<', '&lt;').replace('>', '&gt;');
};
var renderHeros = function(heros) {
if (!heros || heros.length == 0) {
$('#herobots').text('There is no bot online.');
return;
}
var txtStatus = {idle: 'Idle', busy: 'Busy', offline: 'Offline'};
var html = '', item;
for (var index in heros) {
item = heros[index];
html += '<dt>' + htmlspecialchars(item['name']) + ' <small>'
+ txtStatus[item['status']] + '</small></dt>';
html += '<dd>'
+ htmlspecialchars(item['description'])
+ '<br>Platforms: ' + JSON.stringify(item['platforms'])
+ ', Contracts: ' + JSON.stringify(item['contracts'])
+ ', Contact: ' + htmlspecialchars(item['contact'])
+ '</dd>';
}
$('#herobots').html(html);
};
var loadUnionStats = function() {
$('.run_time').text('...');
var api = '/api/stats/';
$.ajax({
url: api,
method: 'GET',
dataType: 'json'
}).done(function(data) {
$('#herounion_stats').text(JSON.stringify(data, null, 4));
$('.run_time').text( formatSeconds(data.run_seconds) );
$('.cache_time').text( formatSeconds(data.cache_time) );
renderStats('taskStatus', data.taskStatus);
renderStats('taskNotifyStatus', data.taskNotifyStatus);
renderStats('heroStatus', data.heroStatus);
});
};
var loadHeros = function() {
$('#herobots').text('...');
var api = '/api/heros/';
$.ajax({
url: api,
method: 'GET',
dataType: 'json'
}).done(function(data) {
renderHeros(data);
});
};
//init
loadUnionStats();
loadHeros();
setInterval(loadUnionStats, 20000);
</script>
</body>
</html>

4
public/en-us/index.html

@ -61,6 +61,10 @@ @@ -61,6 +61,10 @@
<li><a href="/">English</a></li>
<li><a href="/zh/">简体中文</a></li>
<li><a href="/ja/">日本語</a></li>
<li><a href="/es/">Español</a></li>
<li><a href="/de/">Deutsch</a></li>
<li><a href="/ru/">Русский</a></li>
<li><a href="/hi/">हिन्दी</a></li>
</ul>
</div>

283
public/es/index.html

@ -0,0 +1,283 @@ @@ -0,0 +1,283 @@
<!doctype html>
<html lang="en-us">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width">
<title>HeroUnion - Unión de rastreadores web de código abierto.</title>
<meta name="author" content="Sitio web de HeroUnion">
<meta name="description" content="HeroUnion - Unión de rastreadores web de código abierto.">
<style>
*,body{margin:0;padding:0}
body{padding:8px;max-width:640px;margin:0 auto}
h1{font-size:2em;font-weight:500}
small{font-size:65%;font-weight:400}
pre{background-color:#DDD;padding-bottom:3px;padding-right:3px;border-radius:0 5px 0 5px;max-width:480px}
code{display:block;background-color:#EEE;padding:4px}
dt{background-color:#EEE;padding:4px 6px}
dd{text-indent:1em;margin:4px 0 8px 0}
li{margin-left:1em}
footer{padding-bottom:2em}
.text-center{text-align:center}
.text-right{text-align:right}
.mt-d5{margin-top:.5em}
.mt-1{margin-top:1em}
.mt-2{margin-top:2em}
.mt-4{margin-top:4em}
.mx-d2{margin-left:.5em;margin-right:.2em}
.icon{vertical-align:middle}
.stats{background-color:#EEE;padding:10px 10px 4px 10px}
.col{display:inline-block;padding:13px 4px;width:20%;background:#444;color:#FFF;margin-right:4px;margin-bottom:6px;text-align:center}
.col strong{font-size:24px}
.col label{display:block;font-size:15px}
.info{background-color:darkblue}
.success{background-color:green}
.warning{background-color:orange;color:#444}
.danger{background-color:red}
.disable{background-color:gray}
.langswitcher{position:relative}
.langswitcher button{padding:2px 4px;cursor:pointer}
.dropmenu{display:none;position:absolute;right:0;top:28px;padding:5px;width:80px;background-color:#FFF;border:1px solid #EEE}
.dropmenu li{list-style:none;padding:0;margin:3px 0;text-align:center}
@media(max-width:480px) {
h1 small{display:block}
}
</style>
</head>
<body>
<h1 class="text-center">HeroUnion <small>- Unión de rastreadores web de código abierto</small></h1>
<hr class="mt-d5">
<div class="text-right mt-d5 langswitcher">
<button data-status="closed">
<img src="/globe.svg" alt="Globe language switcher" class="icon">
Español
</button>
<ul class="dropmenu">
<li><a href="/">English</a></li>
<li><a href="/zh/">简体中文</a></li>
<li><a href="/ja/">日本語</a></li>
<li><a href="/es/">Español</a></li>
<li><a href="/de/">Deutsch</a></li>
<li><a href="/ru/">Русский</a></li>
<li><a href="/hi/">हिन्दी</a></li>
</ul>
</div>
<h3 class="mt-2">Estadísticas de HeroUnion Esta corriendo <span class="run_time">...</span></h3>
<h4 class="mt-d5">Estadísticas de tareas (Último <span class="cache_time">...</span>)</h4>
<div class="stats taskStatus">
<span class="col info">
<strong class="waiting">...</strong>
<label>Espera</label>
</span>
<span class="col warning">
<strong class="running">...</strong>
<label>Correr</label>
</span>
<div>
<span class="col">
<strong class="total">...</strong>
<label>Total</label>
</span>
<span class="col success">
<strong class="done">...</strong>
<label>Hecho</label>
</span>
<span class="col danger">
<strong class="failed">...</strong>
<label>Fallido</label>
</span>
</div>
</div>
<h4 class="mt-d5">Notificar estadísticas (Último <span class="cache_time">...</span>)</h4>
<div class="stats taskNotifyStatus">
<span class="col">
<strong class="total">...</strong>
<label>Total</label>
</span>
<span class="col success">
<strong class="done">...</strong>
<label>Hecho</label>
</span>
<span class="col danger">
<strong class="failed">...</strong>
<label>Fallido</label>
</span>
</div>
<h4 class="mt-d5">Estadísticas del bot</h4>
<div class="stats heroStatus">
<span class="col">
<strong class="total">...</strong>
<label>Total</label>
</span>
<span class="col success">
<strong class="idle">...</strong>
<label>Inactivo</label>
</span>
<span class="col warning">
<strong class="busy">...</strong>
<label>Ocupado</label>
</span>
<span class="col disable">
<strong class="offline">...</strong>
<label>Desconectado</label>
</span>
</div>
<h4 class="mt-d5">Datos JSON</h4>
<pre><code id="herounion_stats">...</code></pre>
<h3 class="mt-2">Pacto de la Alianza</h3>
<p class="mt-1">¡Por favor, respete las siguientes convenciones y cúmplalas para un mejor mañana para usted y para toda la sociedad!</p>
<ul class="mt-d5">
<li>Cumplir con las leyes y regulaciones locales/nacionales</li>
<li>La información protegida por la ley no será rastreada (Por ejemplo: Datos personales de privacidad: número de teléfono móvil, número de identificación, etc.)</li>
<li>No se rastrearán los datos que requieren inicio de sesión o estado VIP para acceder.</li>
<li>No se rastrearán los datos cuya recopilación esté explícitamente prohibida por el sitio web de destino.</li>
<li>No se rastrean los datos comerciales principales del sitio web de destino</li>
<li>Baja concurrencia, baja frecuencia, no afecta el funcionamiento normal del sitio web de destino.</li>
</ul>
<h3 class="mt-2">Bots</h3>
<dl class="mt-d5" id="herobots">...</dl>
<h3 class="mt-2">Aplicación HeroUnion</h3>
<ul class="mt-d5">
<li>
<strong>Monitor de sitios web:</strong>
<a href="https://monitor.filesite.io/d/ddntdyyhv943ke/e7bd91-e7ab99-e79b91-e68ea7?orgId=1" target="_blank">FileSite.io Monitor</a>,
<a href="https://github.com/filesite-io/monit-via-herounion" target="_blank">Monitor source code download</a>
</li>
<li>
<strong>Raspador web:</strong>
<a href="https://tajian.tv/" target="_blank">TaJian.tv - video box</a>,
<a href="https://github.com/filesite-io/machete" target="_blank">Machete source code download</a>
</li>
</ul>
<h3 class="mt-1">Descarga de HeroUnion</h3>
<p><a href="https://github.com/filesite-io/herounion" target="_blank">https://github.com/filesite-io/herounion</a></p>
<h3 class="mt-1">Descargar HeroBot</h3>
<p><a href="https://github.com/filesite-io/machete_hero" target="_blank">https://github.com/filesite-io/machete_hero</a></p>
<footer class="mt-4">
<p>
<strong>Descargo de responsabilidad:</strong>
<br>HeroUnion <strong>solo es responsable de la programación de rastreadores y tareas</strong> .
Los contratos respaldados por los rastreadores y el contenido específico de las tareas no tienen nada que ver con la alianza.
</p>
<p class="mt-2 text-center">&copy;copyright <a href="https://herounion.website/" target="_blank">HeroUnion.Website</a></p>
</footer>
<script src="/js/jquery-3.7.1.min.js"></script>
<script type="text/javascript">
var toggleLangSwitcher = function(evt) {
var btn = evt.target;
if (!btn) {return false;}
var status = $(btn).attr('data-status');
if (status == 'closed') {
$('.langswitcher .dropmenu').show();
$(btn).attr('data-status', 'opened');
}else {
$('.langswitcher .dropmenu').hide();
$(btn).attr('data-status', 'closed');
}
};
$('.langswitcher button').click(toggleLangSwitcher);
var formatSeconds = function(secs) {
var str = secs + ' seconds';
if (secs > 86400) {
str = Math.floor(secs/86400) + ' days';
}else if (secs > 3600) {
str = Math.floor(secs/3600) + ' hours';
}else if (secs > 300) {
str = Math.floor(secs/60) + ' minutes';
}else if (secs > 86400*365) {
str = Math.floor(secs/86400/365) + ' years'
+ Math.floor( (secs - Math.floor(secs/86400/365)) / 86400 ) + ' days';
}
return str;
};
var renderStats = function(parentCls, data) {
for (var key in data) {
$('.' + parentCls + ' .'+key).text(data[key]);
}
};
var htmlspecialchars = function(str) {
return str.replace('&', '&amp;').replace('<', '&lt;').replace('>', '&gt;');
};
var renderHeros = function(heros) {
if (!heros || heros.length == 0) {
$('#herobots').text('There is no bot online.');
return;
}
var txtStatus = {idle: 'Idle', busy: 'Busy', offline: 'Offline'};
var html = '', item;
for (var index in heros) {
item = heros[index];
html += '<dt>' + htmlspecialchars(item['name']) + ' <small>'
+ txtStatus[item['status']] + '</small></dt>';
html += '<dd>'
+ htmlspecialchars(item['description'])
+ '<br>Platforms: ' + JSON.stringify(item['platforms'])
+ ', Contracts: ' + JSON.stringify(item['contracts'])
+ ', Contact: ' + htmlspecialchars(item['contact'])
+ '</dd>';
}
$('#herobots').html(html);
};
var loadUnionStats = function() {
$('.run_time').text('...');
var api = '/api/stats/';
$.ajax({
url: api,
method: 'GET',
dataType: 'json'
}).done(function(data) {
$('#herounion_stats').text(JSON.stringify(data, null, 4));
$('.run_time').text( formatSeconds(data.run_seconds) );
$('.cache_time').text( formatSeconds(data.cache_time) );
renderStats('taskStatus', data.taskStatus);
renderStats('taskNotifyStatus', data.taskNotifyStatus);
renderStats('heroStatus', data.heroStatus);
});
};
var loadHeros = function() {
$('#herobots').text('...');
var api = '/api/heros/';
$.ajax({
url: api,
method: 'GET',
dataType: 'json'
}).done(function(data) {
renderHeros(data);
});
};
//init
loadUnionStats();
loadHeros();
setInterval(loadUnionStats, 20000);
</script>
</body>
</html>

283
public/hi/index.html

@ -0,0 +1,283 @@ @@ -0,0 +1,283 @@
<!doctype html>
<html lang="en-us">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width">
<title>हीरोयूनियन - ओपन सोर्स वेब क्रॉलर यूनियन।</title>
<meta name="author" content="HeroUnion.वेबसाइट">
<meta name="description" content="हीरोयूनियन - ओपन सोर्स वेब क्रॉलर यूनियन।">
<style>
*,body{margin:0;padding:0}
body{padding:8px;max-width:640px;margin:0 auto}
h1{font-size:2em;font-weight:500}
small{font-size:65%;font-weight:400}
pre{background-color:#DDD;padding-bottom:3px;padding-right:3px;border-radius:0 5px 0 5px;max-width:480px}
code{display:block;background-color:#EEE;padding:4px}
dt{background-color:#EEE;padding:4px 6px}
dd{text-indent:1em;margin:4px 0 8px 0}
li{margin-left:1em}
footer{padding-bottom:2em}
.text-center{text-align:center}
.text-right{text-align:right}
.mt-d5{margin-top:.5em}
.mt-1{margin-top:1em}
.mt-2{margin-top:2em}
.mt-4{margin-top:4em}
.mx-d2{margin-left:.5em;margin-right:.2em}
.icon{vertical-align:middle}
.stats{background-color:#EEE;padding:10px 10px 4px 10px}
.col{display:inline-block;padding:13px 4px;width:20%;background:#444;color:#FFF;margin-right:4px;margin-bottom:6px;text-align:center}
.col strong{font-size:24px}
.col label{display:block;font-size:15px}
.info{background-color:darkblue}
.success{background-color:green}
.warning{background-color:orange;color:#444}
.danger{background-color:red}
.disable{background-color:gray}
.langswitcher{position:relative}
.langswitcher button{padding:2px 4px;cursor:pointer}
.dropmenu{display:none;position:absolute;right:0;top:28px;padding:5px;width:80px;background-color:#FFF;border:1px solid #EEE}
.dropmenu li{list-style:none;padding:0;margin:3px 0;text-align:center}
@media(max-width:480px) {
h1 small{display:block}
}
</style>
</head>
<body>
<h1 class="text-center">हीरोयूनियन <small>- ओपन सोर्स वेब क्रॉलर यूनियन</small></h1>
<hr class="mt-d5">
<div class="text-right mt-d5 langswitcher">
<button data-status="closed">
<img src="/globe.svg" alt="Globe language switcher" class="icon">
हिन्दी
</button>
<ul class="dropmenu">
<li><a href="/">English</a></li>
<li><a href="/zh/">简体中文</a></li>
<li><a href="/ja/">日本語</a></li>
<li><a href="/es/">Español</a></li>
<li><a href="/de/">Deutsch</a></li>
<li><a href="/ru/">Русский</a></li>
<li><a href="/hi/">हिन्दी</a></li>
</ul>
</div>
<h3 class="mt-2">हीरोयूनियन आँकड़े यह काम कर रहा है <span class="run_time">...</span></h3>
<h4 class="mt-d5">कार्य आँकड़े (अंतिम <span class="cache_time">...</span>)</h4>
<div class="stats taskStatus">
<span class="col info">
<strong class="waiting">...</strong>
<label>इंतज़ार में</label>
</span>
<span class="col warning">
<strong class="running">...</strong>
<label>दौड़ना</label>
</span>
<div>
<span class="col">
<strong class="total">...</strong>
<label>कुल</label>
</span>
<span class="col success">
<strong class="done">...</strong>
<label>हो गया</label>
</span>
<span class="col danger">
<strong class="failed">...</strong>
<label>असफल</label>
</span>
</div>
</div>
<h4 class="mt-d5">आँकड़े सूचित करें (अंतिम <span class="cache_time">...</span>)</h4>
<div class="stats taskNotifyStatus">
<span class="col">
<strong class="total">...</strong>
<label>कुल</label>
</span>
<span class="col success">
<strong class="done">...</strong>
<label>हो गया</label>
</span>
<span class="col danger">
<strong class="failed">...</strong>
<label>असफल</label>
</span>
</div>
<h4 class="mt-d5">बॉट आँकड़े</h4>
<div class="stats heroStatus">
<span class="col">
<strong class="total">...</strong>
<label>कुल</label>
</span>
<span class="col success">
<strong class="idle">...</strong>
<label>निठल्ला</label>
</span>
<span class="col warning">
<strong class="busy">...</strong>
<label>व्यस्त</label>
</span>
<span class="col disable">
<strong class="offline">...</strong>
<label>ऑफलाइन</label>
</span>
</div>
<h4 class="mt-d5">JSON डेटा</h4>
<pre><code id="herounion_stats">...</code></pre>
<h3 class="mt-2">गठबंधन की वाचा</h3>
<p class="mt-1">कृपया निम्नलिखित परंपराओं का पालन करें और अपने तथा पूरे समाज के बेहतर कल के लिए इसका पालन करें!</p>
<ul class="mt-d5">
<li>स्थानीय/राष्ट्रीय कानूनों और विनियमों का अनुपालन करें</li>
<li>कानून द्वारा संरक्षित जानकारी को क्रॉल नहीं किया जाएगा (उदाहरण के लिए: व्यक्तिगत गोपनीयता डेटा, मोबाइल फोन नंबर, आईडी नंबर, आदि।)</li>
<li>जिस डेटा तक पहुंचने के लिए लॉगिन या वीआईपी स्टेटस की आवश्यकता होती है, उसे क्रॉल नहीं किया जाएगा</li>
<li>लक्ष्य वेबसाइट द्वारा एकत्र किए जाने से स्पष्ट रूप से प्रतिबंधित डेटा को क्रॉल नहीं किया जाएगा</li>
<li>लक्ष्य वेबसाइट का वाणिज्यिक कोर डेटा क्रॉल नहीं किया गया है</li>
<li>कम समवर्तीता, कम आवृत्ति, लक्ष्य वेबसाइट के सामान्य संचालन को प्रभावित नहीं करती है</li>
</ul>
<h3 class="mt-2">बॉट</h3>
<dl class="mt-d5" id="herobots">...</dl>
<h3 class="mt-2">हीरोयूनियन ऐप</h3>
<ul class="mt-d5">
<li>
<strong>वेबसाइट मॉनिटर:</strong>
<a href="https://monitor.filesite.io/d/ddntdyyhv943ke/e7bd91-e7ab99-e79b91-e68ea7?orgId=1" target="_blank">FileSite.io Monitor</a>,
<a href="https://github.com/filesite-io/monit-via-herounion" target="_blank">Monitor source code download</a>
</li>
<li>
<strong>वेब स्क्रैपर:</strong>
<a href="https://tajian.tv/" target="_blank">TaJian.tv - video box</a>,
<a href="https://github.com/filesite-io/machete" target="_blank">Machete source code download</a>
</li>
</ul>
<h3 class="mt-1">HeroUnion डाउनलोड</h3>
<p><a href="https://github.com/filesite-io/herounion" target="_blank">https://github.com/filesite-io/herounion</a></p>
<h3 class="mt-1">HeroBot डाउनलोड करें</h3>
<p><a href="https://github.com/filesite-io/machete_hero" target="_blank">https://github.com/filesite-io/machete_hero</a></p>
<footer class="mt-4">
<p>
<strong>अस्वीकरण:</strong>
<br>हीरोयूनियन <strong>केवल क्रॉलर्स और कार्यों के शेड्यूलिंग के लिए जिम्मेदार है</strong> ।
क्रॉलर्स द्वारा समर्थित अनुबंधों और कार्यों की विशिष्ट सामग्री का गठबंधन से कोई लेना-देना नहीं है।
</p>
<p class="mt-2 text-center">&copy;copyright <a href="https://herounion.website/" target="_blank">HeroUnion.Website</a></p>
</footer>
<script src="/js/jquery-3.7.1.min.js"></script>
<script type="text/javascript">
var toggleLangSwitcher = function(evt) {
var btn = evt.target;
if (!btn) {return false;}
var status = $(btn).attr('data-status');
if (status == 'closed') {
$('.langswitcher .dropmenu').show();
$(btn).attr('data-status', 'opened');
}else {
$('.langswitcher .dropmenu').hide();
$(btn).attr('data-status', 'closed');
}
};
$('.langswitcher button').click(toggleLangSwitcher);
var formatSeconds = function(secs) {
var str = secs + ' seconds';
if (secs > 86400) {
str = Math.floor(secs/86400) + ' days';
}else if (secs > 3600) {
str = Math.floor(secs/3600) + ' hours';
}else if (secs > 300) {
str = Math.floor(secs/60) + ' minutes';
}else if (secs > 86400*365) {
str = Math.floor(secs/86400/365) + ' years'
+ Math.floor( (secs - Math.floor(secs/86400/365)) / 86400 ) + ' days';
}
return str;
};
var renderStats = function(parentCls, data) {
for (var key in data) {
$('.' + parentCls + ' .'+key).text(data[key]);
}
};
var htmlspecialchars = function(str) {
return str.replace('&', '&amp;').replace('<', '&lt;').replace('>', '&gt;');
};
var renderHeros = function(heros) {
if (!heros || heros.length == 0) {
$('#herobots').text('There is no bot online.');
return;
}
var txtStatus = {idle: 'Idle', busy: 'Busy', offline: 'Offline'};
var html = '', item;
for (var index in heros) {
item = heros[index];
html += '<dt>' + htmlspecialchars(item['name']) + ' <small>'
+ txtStatus[item['status']] + '</small></dt>';
html += '<dd>'
+ htmlspecialchars(item['description'])
+ '<br>Platforms: ' + JSON.stringify(item['platforms'])
+ ', Contracts: ' + JSON.stringify(item['contracts'])
+ ', Contact: ' + htmlspecialchars(item['contact'])
+ '</dd>';
}
$('#herobots').html(html);
};
var loadUnionStats = function() {
$('.run_time').text('...');
var api = '/api/stats/';
$.ajax({
url: api,
method: 'GET',
dataType: 'json'
}).done(function(data) {
$('#herounion_stats').text(JSON.stringify(data, null, 4));
$('.run_time').text( formatSeconds(data.run_seconds) );
$('.cache_time').text( formatSeconds(data.cache_time) );
renderStats('taskStatus', data.taskStatus);
renderStats('taskNotifyStatus', data.taskNotifyStatus);
renderStats('heroStatus', data.heroStatus);
});
};
var loadHeros = function() {
$('#herobots').text('...');
var api = '/api/heros/';
$.ajax({
url: api,
method: 'GET',
dataType: 'json'
}).done(function(data) {
renderHeros(data);
});
};
//init
loadUnionStats();
loadHeros();
setInterval(loadUnionStats, 20000);
</script>
</body>
</html>

4
public/ja/index.html

@ -61,6 +61,10 @@ @@ -61,6 +61,10 @@
<li><a href="/">English</a></li>
<li><a href="/zh/">简体中文</a></li>
<li><a href="/ja/">日本語</a></li>
<li><a href="/es/">Español</a></li>
<li><a href="/de/">Deutsch</a></li>
<li><a href="/ru/">Русский</a></li>
<li><a href="/hi/">हिन्दी</a></li>
</ul>
</div>

283
public/ru/index.html

@ -0,0 +1,283 @@ @@ -0,0 +1,283 @@
<!doctype html>
<html lang="en-us">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width">
<title>HeroUnion — объединение веб-сканеров с открытым исходным кодом.</title>
<meta name="author" content="HeroUnion.сайт">
<meta name="description" content="HeroUnion — объединение веб-сканеров с открытым исходным кодом.">
<style>
*,body{margin:0;padding:0}
body{padding:8px;max-width:640px;margin:0 auto}
h1{font-size:2em;font-weight:500}
small{font-size:65%;font-weight:400}
pre{background-color:#DDD;padding-bottom:3px;padding-right:3px;border-radius:0 5px 0 5px;max-width:480px}
code{display:block;background-color:#EEE;padding:4px}
dt{background-color:#EEE;padding:4px 6px}
dd{text-indent:1em;margin:4px 0 8px 0}
li{margin-left:1em}
footer{padding-bottom:2em}
.text-center{text-align:center}
.text-right{text-align:right}
.mt-d5{margin-top:.5em}
.mt-1{margin-top:1em}
.mt-2{margin-top:2em}
.mt-4{margin-top:4em}
.mx-d2{margin-left:.5em;margin-right:.2em}
.icon{vertical-align:middle}
.stats{background-color:#EEE;padding:10px 10px 4px 10px}
.col{display:inline-block;padding:13px 4px;width:20%;background:#444;color:#FFF;margin-right:4px;margin-bottom:6px;text-align:center}
.col strong{font-size:24px}
.col label{display:block;font-size:15px}
.info{background-color:darkblue}
.success{background-color:green}
.warning{background-color:orange;color:#444}
.danger{background-color:red}
.disable{background-color:gray}
.langswitcher{position:relative}
.langswitcher button{padding:2px 4px;cursor:pointer}
.dropmenu{display:none;position:absolute;right:0;top:28px;padding:5px;width:80px;background-color:#FFF;border:1px solid #EEE}
.dropmenu li{list-style:none;padding:0;margin:3px 0;text-align:center}
@media(max-width:480px) {
h1 small{display:block}
}
</style>
</head>
<body>
<h1 class="text-center">HeroUnion <small>- Союз веб-сканеров с открытым исходным кодом</small></h1>
<hr class="mt-d5">
<div class="text-right mt-d5 langswitcher">
<button data-status="closed">
<img src="/globe.svg" alt="Globe language switcher" class="icon">
Русский
</button>
<ul class="dropmenu">
<li><a href="/">English</a></li>
<li><a href="/zh/">简体中文</a></li>
<li><a href="/ja/">日本語</a></li>
<li><a href="/es/">Español</a></li>
<li><a href="/de/">Deutsch</a></li>
<li><a href="/ru/">Русский</a></li>
<li><a href="/hi/">हिन्दी</a></li>
</ul>
</div>
<h3 class="mt-2">Статистика HeroUnion Он работает <span class="run_time">...</span></h3>
<h4 class="mt-d5">Статистика задач (Последний <span class="cache_time">...</span>)</h4>
<div class="stats taskStatus">
<span class="col info">
<strong class="waiting">...</strong>
<label>Ожидающий</label>
</span>
<span class="col warning">
<strong class="running">...</strong>
<label>Бег</label>
</span>
<div>
<span class="col">
<strong class="total">...</strong>
<label>Общий</label>
</span>
<span class="col success">
<strong class="done">...</strong>
<label>Сделанный</label>
</span>
<span class="col danger">
<strong class="failed">...</strong>
<label>Неуспешный</label>
</span>
</div>
</div>
<h4 class="mt-d5">Уведомить статистику (Последний <span class="cache_time">...</span>)</h4>
<div class="stats taskNotifyStatus">
<span class="col">
<strong class="total">...</strong>
<label>Общий</label>
</span>
<span class="col success">
<strong class="done">...</strong>
<label>Сделанный</label>
</span>
<span class="col danger">
<strong class="failed">...</strong>
<label>Неуспешный</label>
</span>
</div>
<h4 class="mt-d5">Статистика ботов</h4>
<div class="stats heroStatus">
<span class="col">
<strong class="total">...</strong>
<label>Общий</label>
</span>
<span class="col success">
<strong class="idle">...</strong>
<label>Праздный</label>
</span>
<span class="col warning">
<strong class="busy">...</strong>
<label>Занятый</label>
</span>
<span class="col disable">
<strong class="offline">...</strong>
<label>Оффлайн</label>
</span>
</div>
<h4 class="mt-d5">Данные JSON</h4>
<pre><code id="herounion_stats">...</code></pre>
<h3 class="mt-2">Соглашение Альянса</h3>
<p class="mt-1">Пожалуйста, соблюдайте следующие правила и придерживайтесь их ради лучшего будущего для себя и всего общества!</p>
<ul class="mt-d5">
<li>Соблюдайте местные/национальные законы и правила</li>
<li>Информация, защищенная законом, не будет сканироваться (например: персональные данные, номер мобильного телефона, номер удостоверения личности и т. д.)</li>
<li>Данные, для доступа к которым требуется вход в систему или VIP-статус, не будут сканироваться.</li>
<li>Данные, сбор которых явно запрещен целевым веб-сайтом, не будут сканироваться.</li>
<li>Коммерческие основные данные целевого веб-сайта не сканируются.</li>
<li>Низкая степень параллелизма, низкая частота, не влияет на нормальную работу целевого веб-сайта.</li>
</ul>
<h3 class="mt-2">Боты</h3>
<dl class="mt-d5" id="herobots">...</dl>
<h3 class="mt-2">Приложение HeroUnion</h3>
<ul class="mt-d5">
<li>
<strong>Монитор веб-сайта:</strong>
<a href="https://monitor.filesite.io/d/ddntdyyhv943ke/e7bd91-e7ab99-e79b91-e68ea7?orgId=1" target="_blank">FileSite.io Monitor</a>,
<a href="https://github.com/filesite-io/monit-via-herounion" target="_blank">Monitor source code download</a>
</li>
<li>
<strong>Веб-скрейпер:</strong>
<a href="https://tajian.tv/" target="_blank">TaJian.tv - video box</a>,
<a href="https://github.com/filesite-io/machete" target="_blank">Machete source code download</a>
</li>
</ul>
<h3 class="mt-1">HeroUnion скачать</h3>
<p><a href="https://github.com/filesite-io/herounion" target="_blank">https://github.com/filesite-io/herounion</a></p>
<h3 class="mt-1">HeroBot скачать</h3>
<p><a href="https://github.com/filesite-io/machete_hero" target="_blank">https://github.com/filesite-io/machete_hero</a></p>
<footer class="mt-4">
<p>
<strong>Отказ от ответственности:</strong>
<br>HeroUnion <strong>отвечает только за планирование работы сканеров и задач</strong> .
Контракты, поддерживаемые краулерами, и конкретное содержание задач не имеют никакого отношения к альянсу.
</p>
<p class="mt-2 text-center">&copy;copyright <a href="https://herounion.website/" target="_blank">HeroUnion.Website</a></p>
</footer>
<script src="/js/jquery-3.7.1.min.js"></script>
<script type="text/javascript">
var toggleLangSwitcher = function(evt) {
var btn = evt.target;
if (!btn) {return false;}
var status = $(btn).attr('data-status');
if (status == 'closed') {
$('.langswitcher .dropmenu').show();
$(btn).attr('data-status', 'opened');
}else {
$('.langswitcher .dropmenu').hide();
$(btn).attr('data-status', 'closed');
}
};
$('.langswitcher button').click(toggleLangSwitcher);
var formatSeconds = function(secs) {
var str = secs + ' seconds';
if (secs > 86400) {
str = Math.floor(secs/86400) + ' days';
}else if (secs > 3600) {
str = Math.floor(secs/3600) + ' hours';
}else if (secs > 300) {
str = Math.floor(secs/60) + ' minutes';
}else if (secs > 86400*365) {
str = Math.floor(secs/86400/365) + ' years'
+ Math.floor( (secs - Math.floor(secs/86400/365)) / 86400 ) + ' days';
}
return str;
};
var renderStats = function(parentCls, data) {
for (var key in data) {
$('.' + parentCls + ' .'+key).text(data[key]);
}
};
var htmlspecialchars = function(str) {
return str.replace('&', '&amp;').replace('<', '&lt;').replace('>', '&gt;');
};
var renderHeros = function(heros) {
if (!heros || heros.length == 0) {
$('#herobots').text('There is no bot online.');
return;
}
var txtStatus = {idle: 'Idle', busy: 'Busy', offline: 'Offline'};
var html = '', item;
for (var index in heros) {
item = heros[index];
html += '<dt>' + htmlspecialchars(item['name']) + ' <small>'
+ txtStatus[item['status']] + '</small></dt>';
html += '<dd>'
+ htmlspecialchars(item['description'])
+ '<br>Platforms: ' + JSON.stringify(item['platforms'])
+ ', Contracts: ' + JSON.stringify(item['contracts'])
+ ', Contact: ' + htmlspecialchars(item['contact'])
+ '</dd>';
}
$('#herobots').html(html);
};
var loadUnionStats = function() {
$('.run_time').text('...');
var api = '/api/stats/';
$.ajax({
url: api,
method: 'GET',
dataType: 'json'
}).done(function(data) {
$('#herounion_stats').text(JSON.stringify(data, null, 4));
$('.run_time').text( formatSeconds(data.run_seconds) );
$('.cache_time').text( formatSeconds(data.cache_time) );
renderStats('taskStatus', data.taskStatus);
renderStats('taskNotifyStatus', data.taskNotifyStatus);
renderStats('heroStatus', data.heroStatus);
});
};
var loadHeros = function() {
$('#herobots').text('...');
var api = '/api/heros/';
$.ajax({
url: api,
method: 'GET',
dataType: 'json'
}).done(function(data) {
renderHeros(data);
});
};
//init
loadUnionStats();
loadHeros();
setInterval(loadUnionStats, 20000);
</script>
</body>
</html>

4
public/template/index.html

@ -61,6 +61,10 @@ @@ -61,6 +61,10 @@
<li><a href="/">English</a></li>
<li><a href="/zh/">简体中文</a></li>
<li><a href="/ja/">日本語</a></li>
<li><a href="/es/">Español</a></li>
<li><a href="/de/">Deutsch</a></li>
<li><a href="/ru/">Русский</a></li>
<li><a href="/hi/">हिन्दी</a></li>
</ul>
</div>

4
public/zh/index.html

@ -61,6 +61,10 @@ @@ -61,6 +61,10 @@
<li><a href="/">English</a></li>
<li><a href="/zh/">简体中文</a></li>
<li><a href="/ja/">日本語</a></li>
<li><a href="/es/">Español</a></li>
<li><a href="/de/">Deutsch</a></li>
<li><a href="/ru/">Русский</a></li>
<li><a href="/hi/">हिन्दी</a></li>
</ul>
</div>

Loading…
Cancel
Save