tg-сессия в комбайне + панель: ключи/сессия в шапке + фикс пустого radar_sources
- omni/config.py: tg_cfg() читает data/tg.json (вне git), env приоритетнее
- omni/tgsess.py: enabled()/fetch() подтягивают креды из config
- tools/tg_pick.py: перебор пула сессий, проверка is_user_authorized, личные аккаунты исключены
- omni claw pump: 2 канала -> 27 постов через сессию (проверено)
- omni/serve.py: /api/stats += keys{totals}, tg{enabled}
- web/index.html: строка статуса в шапке (ключей / сервисов / TG сессия)
- omni/cli.py radar --apply: пишет полный набор, а не только новые (повторный прогон обнулял файл)
- omni/cli.py radar --import-posts: --since-days + скип известных url до simhash
This commit is contained in:
@@ -231,6 +231,9 @@ select:focus,input:focus{border-color:rgba(124,108,244,.6)}
|
||||
}
|
||||
|
||||
/* ---- меню v2 ---- */
|
||||
.stack{display:flex;gap:6px;flex-wrap:wrap;padding:2px 6px 10px}
|
||||
.stack em{font:10px var(--mono);color:var(--dim2);letter-spacing:.05em;text-transform:uppercase;background:#131822;border:1px solid var(--line);border-radius:20px;padding:2px 7px;font-style:normal}
|
||||
.stack em.on{color:#7fe3a1;border-color:#1f4a33;background:#0f1d16}
|
||||
.brand .ver{margin-left:auto;font:10.5px var(--mono);color:var(--dim2);background:#151a24;border:1px solid var(--line);border-radius:20px;padding:2px 8px}
|
||||
.menu-btn{display:flex;align-items:center;gap:9px;margin:0 0 12px;padding:9px 11px;width:100%;border:1px solid var(--line);
|
||||
background:#11151d;color:var(--dim);border-radius:11px;font:12.5px inherit;cursor:pointer;transition:.15s}
|
||||
@@ -284,6 +287,7 @@ select:focus,input:focus{border-color:rgba(124,108,244,.6)}
|
||||
<div><b>omni</b><span>source radar</span></div>
|
||||
<span class="ver" id="brand-n">—</span>
|
||||
</div>
|
||||
<div class="stack" id="brand-k"></div>
|
||||
|
||||
<button class="menu-btn" id="btn-palette"><i>⌘</i>Меню<span class="kbd">Ctrl K</span></button>
|
||||
|
||||
@@ -547,6 +551,12 @@ async function loadStats() {
|
||||
$('#nav-src-n').textContent = fmt(s.sources);
|
||||
$('#nav-runs-n').textContent = fmt(s.runs);
|
||||
$('#brand-n').textContent = fmt(s.alive) + '/' + fmt(s.sources);
|
||||
const _bk = $('#brand-k');
|
||||
if (_bk && s.keys) {
|
||||
const tge = !!(s.tg && s.tg.enabled);
|
||||
_bk.innerHTML = `<em>${fmt(s.keys.keys)} ключей</em><em>${fmt(s.keys.services)} сервисов</em>` +
|
||||
`<em class="${tge ? 'on' : ''}">TG ${tge ? 'сессия' : 'веб-превью'}</em>`;
|
||||
}
|
||||
$('#aside-foot').innerHTML =
|
||||
`<b>${fmt(s.sources)}</b> источников · <b>${fmt(s.sources_enabled)}</b> вкл<br>` +
|
||||
`<b>${fmt(s.alive)}</b> живых · <b>${fmt(s.tested)}</b> проверено<br>` +
|
||||
|
||||
Reference in New Issue
Block a user