mirror of
https://github.com/house-of-vanity/libopenanal.git
synced 2025-07-07 13:44:07 +00:00
lib2chstat integration, refactoring
This commit is contained in:
31
templates/base.html
Normal file
31
templates/base.html
Normal file
@ -0,0 +1,31 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
{% block head %}
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
|
||||
<!-- Bootstrap CSS -->
|
||||
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/css/bootstrap.min.css"
|
||||
integrity="sha384-MCw98/SFnGE8fJT3GXwEOngsV7Zt27NXFoaoApmYm81iuXoPkFOJwJ8ERdknLPMO"
|
||||
crossorigin="anonymous">
|
||||
|
||||
<link rel="stylesheet" type="text/css" href="../static/css/style.css">
|
||||
<title>libOpenAnal appliance</title>
|
||||
{% endblock %}
|
||||
</head>
|
||||
<body>
|
||||
<div class="container" id="content">{% block content %}
|
||||
<h1>Hexor's conf_bot data extractor tool</h1>{% endblock %}</div>
|
||||
{% block scripts %}
|
||||
<script src="https://code.jquery.com/jquery-3.3.1.slim.min.js"
|
||||
integrity="sha384-q8i/X+965DzO0rT7abK41JStQIAqVgRVzpbzo5smXKp4YfRvH+8abtTE1Pi6jizo"
|
||||
crossorigin="anonymous"></script>
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.3/umd/popper.min.js"
|
||||
integrity="sha384-ZMP7rVo3mIykV+2+9J3UJ46jBk0WLaUAdn689aCwoqbBJiSnjAK/l8WvCWPIPm49"
|
||||
crossorigin="anonymous"></script>
|
||||
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/js/bootstrap.min.js"
|
||||
integrity="sha384-ChfqqxuZUCnJSK3+MXmPNIyE6ZbWh2IMqE241rYiqJxyMiZ6OW/JmZQ5stwEULTy"
|
||||
crossorigin="anonymous"></script>
|
||||
{% endblock %}
|
||||
</body>
|
||||
</html>
|
@ -1,83 +1,60 @@
|
||||
<!doctype html>
|
||||
<html lang="en">
|
||||
|
||||
<head>
|
||||
<!-- Required meta tags -->
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
|
||||
|
||||
<!-- Bootstrap CSS -->
|
||||
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/css/bootstrap.min.css" integrity="sha384-MCw98/SFnGE8fJT3GXwEOngsV7Zt27NXFoaoApmYm81iuXoPkFOJwJ8ERdknLPMO"
|
||||
crossorigin="anonymous">
|
||||
|
||||
<title>libOpenAnal appliance</title>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<div class="container">
|
||||
|
||||
<h1>Hexor's conf_bot data extractor tool</h1>
|
||||
<ul class="nav">
|
||||
<li class="nav-item">
|
||||
<a class="nav-link active" href="/">Users</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="/conf">Conferences</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="#">Link</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link disabled" href="#">Disabled</a>
|
||||
</li>
|
||||
{% extends "base.html" %}
|
||||
{% block head %}
|
||||
{{ super() }}
|
||||
{% endblock %}
|
||||
{% block content %}
|
||||
{{ super() }}
|
||||
<ul class="nav nav-pills">
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="/">Users</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link active" href="/conf">Conferences</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="/stat">2ch.hk Stats</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link disabled" href="#">Disabled</a>
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
<br>
|
||||
|
||||
<div class="row">
|
||||
<div class="col-sm-12">
|
||||
<h4>Totals</h4>
|
||||
<b>Users: </b> {{ totals.users[0] }}<br>
|
||||
<b>Unique words: </b> {{ totals.words[0] }}<br>
|
||||
<b>Words said: </b> {{ totals.relations[0] }}<br>
|
||||
<b>Chats fetched: </b> {{ totals.confs[0] }}<br>
|
||||
</div>
|
||||
<div class="col-sm-12">
|
||||
<h4>Totals</h4>
|
||||
<b>Users: </b> {{ totals.users[0] }}<br>
|
||||
<b>Unique words: </b> {{ totals.words[0] }}<br>
|
||||
<b>Words said: </b> {{ totals.relations[0] }}<br>
|
||||
<b>Chats fetched: </b> {{ totals.confs[0] }}<br>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<table class="table table-hover table-sm">
|
||||
<thead>
|
||||
<thead>
|
||||
<tr>
|
||||
<th scope="col">#</th>
|
||||
<th scope="col">Title</th>
|
||||
<th scope="col">ID</th>
|
||||
<th scope="col">Added</th>
|
||||
<th scope="col">Members</th>
|
||||
<th scope="col">Words said</th>
|
||||
<th scope="col">#</th>
|
||||
<th scope="col">Title</th>
|
||||
<th scope="col">ID</th>
|
||||
<th scope="col">Added</th>
|
||||
<th scope="col">Members</th>
|
||||
<th scope="col">Words said</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
</thead>
|
||||
<tbody>
|
||||
{% for conf in confs %}
|
||||
<tr>
|
||||
<th scope="row">{{loop.index}}</th>
|
||||
<td>{{ conf.0 }}</td>
|
||||
<td>{{ conf.1 }}</td>
|
||||
<td>{{ conf.2 }}</td>
|
||||
<td>{{ conf.4 }}</td>
|
||||
<td>{{ conf.3 }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th scope="row">{{ loop.index }}</th>
|
||||
<td>{{ conf.0 }}</td>
|
||||
<td>{{ conf.1 }}</td>
|
||||
<td>{{ conf.2 }}</td>
|
||||
<td>{{ conf.4 }}</td>
|
||||
<td>{{ conf.3 }}</td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
</tbody>
|
||||
</tbody>
|
||||
</table>
|
||||
<!-- Optional JavaScript -->
|
||||
<!-- jQuery first, then Popper.js, then Bootstrap JS -->
|
||||
<script src="https://code.jquery.com/jquery-3.3.1.slim.min.js" integrity="sha384-q8i/X+965DzO0rT7abK41JStQIAqVgRVzpbzo5smXKp4YfRvH+8abtTE1Pi6jizo"
|
||||
crossorigin="anonymous"></script>
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.3/umd/popper.min.js" integrity="sha384-ZMP7rVo3mIykV+2+9J3UJ46jBk0WLaUAdn689aCwoqbBJiSnjAK/l8WvCWPIPm49"
|
||||
crossorigin="anonymous"></script>
|
||||
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/js/bootstrap.min.js" integrity="sha384-ChfqqxuZUCnJSK3+MXmPNIyE6ZbWh2IMqE241rYiqJxyMiZ6OW/JmZQ5stwEULTy"
|
||||
crossorigin="anonymous"></script>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
|
||||
</html>
|
||||
{% endblock %}
|
||||
{% block scripts %}
|
||||
{{ super() }}
|
||||
{% endblock %}
|
@ -1,91 +1,78 @@
|
||||
<!doctype html>
|
||||
<html lang="en">
|
||||
|
||||
<head>
|
||||
<!-- Required meta tags -->
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
|
||||
|
||||
<!-- Bootstrap CSS -->
|
||||
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/css/bootstrap.min.css" integrity="sha384-MCw98/SFnGE8fJT3GXwEOngsV7Zt27NXFoaoApmYm81iuXoPkFOJwJ8ERdknLPMO"
|
||||
crossorigin="anonymous">
|
||||
|
||||
<title>libOpenAnal appliance</title>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<div class="container">
|
||||
|
||||
<h1>Hexor's conf_bot data extractor tool</h1>
|
||||
<ul class="nav">
|
||||
<li class="nav-item">
|
||||
<a class="nav-link active" href="/">Users</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="/conf">Conferences</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="#">Link</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link disabled" href="#">Disabled</a>
|
||||
</li>
|
||||
{% extends "base.html" %}
|
||||
{% block head %}
|
||||
{{ super() }}
|
||||
{% endblock %}
|
||||
{% block content %}
|
||||
{{ super() }}
|
||||
<ul class="nav nav-pills">
|
||||
<li class="nav-item">
|
||||
<a class="nav-link active" href="/">Users</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="/conf">Conferences</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="/stat">2ch.hk Stats</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link disabled" href="#">Disabled</a>
|
||||
</li>
|
||||
</ul>
|
||||
<br>
|
||||
<div class="row">
|
||||
<div class="col-sm-12">
|
||||
<h4>Totals</h4>
|
||||
<b>Users: </b> {{ totals.users[0] }}<br>
|
||||
<b>Unique words: </b> {{ totals.words[0] }}<br>
|
||||
<b>Words said: </b> {{ totals.relations[0] }}<br>
|
||||
<b>Chats fetched: </b> {{ totals.confs[0] }}<br>
|
||||
</div>
|
||||
<div class="col-sm-12">
|
||||
<h4>Totals</h4>
|
||||
<b>Users: </b> {{ totals.users[0] }}<br>
|
||||
<b>Unique words: </b> {{ totals.words[0] }}<br>
|
||||
<b>Words said: </b> {{ totals.relations[0] }}<br>
|
||||
<b>Chats fetched: </b> {{ totals.confs[0] }}<br>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<br>
|
||||
<table class="table table-hover table-sm">
|
||||
<thead>
|
||||
<thead>
|
||||
<tr>
|
||||
<th scope="col">#</th>
|
||||
<th scope="col"><a href="./?order=first_name&sorting={%- if sorting == 'ASC' -%}DESC{%- else -%}ASC{%- endif -%}">First
|
||||
name</a></th>
|
||||
<th scope="col"><a href="./?order=last_name&sorting={%- if sorting == 'ASC' -%}DESC{%- else -%}ASC{%- endif -%}">Last
|
||||
name</a></th>
|
||||
<th scope="col"><a href="./?order=username&sorting={%- if sorting == 'ASC' -%}DESC{%- else -%}ASC{%- endif -%}">Username</a></th>
|
||||
<th scope="col"><a href="./?order=id&sorting={%- if sorting == 'ASC' -%}DESC{%- else -%}ASC{%- endif -%}">User
|
||||
ID</a></th>
|
||||
<th scope="col"><a href="./?order=firstly_seen&sorting={%- if sorting == 'ASC' -%}DESC{%- else -%}ASC{%- endif -%}">Firstly
|
||||
seen</a></th>
|
||||
<th scope="col"><a href="./?order=last_activity&sorting={%- if sorting == 'ASC' -%}DESC{%- else -%}ASC{%- endif -%}">Last
|
||||
activity</a></th>
|
||||
<th scope="col"><a href="./?order=count&sorting={%- if sorting == 'ASC' -%}DESC{%- else -%}ASC{%- endif -%}">Word
|
||||
count</a></th>
|
||||
<th scope="col">#</th>
|
||||
<th scope="col"><a
|
||||
href="./?order=first_name&sorting={%- if sorting == 'ASC' -%}DESC{%- else -%}ASC{%- endif -%}">First
|
||||
name</a></th>
|
||||
<th scope="col"><a
|
||||
href="./?order=last_name&sorting={%- if sorting == 'ASC' -%}DESC{%- else -%}ASC{%- endif -%}">Last
|
||||
name</a></th>
|
||||
<th scope="col"><a
|
||||
href="./?order=username&sorting={%- if sorting == 'ASC' -%}DESC{%- else -%}ASC{%- endif -%}">Username</a>
|
||||
</th>
|
||||
<th scope="col"><a href="./?order=id&sorting={%- if sorting == 'ASC' -%}DESC{%- else -%}ASC{%- endif -%}">User
|
||||
ID</a></th>
|
||||
<th scope="col"><a
|
||||
href="./?order=firstly_seen&sorting={%- if sorting == 'ASC' -%}DESC{%- else -%}ASC{%- endif -%}">Firstly
|
||||
seen</a></th>
|
||||
<th scope="col"><a
|
||||
href="./?order=last_activity&sorting={%- if sorting == 'ASC' -%}DESC{%- else -%}ASC{%- endif -%}">Last
|
||||
activity</a></th>
|
||||
<th scope="col"><a
|
||||
href="./?order=count&sorting={%- if sorting == 'ASC' -%}DESC{%- else -%}ASC{%- endif -%}">Word
|
||||
count</a></th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
</thead>
|
||||
<tbody>
|
||||
{% for user in users %}
|
||||
<tr>
|
||||
<th scope="row">{{loop.index}}</th>
|
||||
<td><a href="/overview/user/{{ user.0 }}">{{ user.2 }}</a></td>
|
||||
<td>{% if user.3 != '_null' %}{{ user.3 }}{% else %}<span class="badge badge-warning">N/D</span>{% endif %}</td>
|
||||
<td>{% if user.1 != '_null' %}{{ user.1 }}{% else %}<span class="badge badge-warning">N/D</span>{% endif %}</td>
|
||||
<td><a class="badge badge-dark " href="/overview/user/{{ user.0 }}">{{ user.0 }}</a></td>
|
||||
<td>{{ user.4 }}</td>
|
||||
<td>{{ user.5 }}</td>
|
||||
<td>{{ user.6 }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th scope="row">{{ loop.index }}</th>
|
||||
<td><a href="/overview/user/{{ user.0 }}">{{ user.2 }}</a></td>
|
||||
<td>{% if user.3 != '_null' %}{{ user.3 }}{% else %}
|
||||
<span class="badge badge-warning">N/D</span>{% endif %}</td>
|
||||
<td>{% if user.1 != '_null' %}{{ user.1 }}{% else %}
|
||||
<span class="badge badge-warning">N/D</span>{% endif %}</td>
|
||||
<td><a class="badge badge-dark " href="/overview/user/{{ user.0 }}">{{ user.0 }}</a></td>
|
||||
<td>{{ user.4 }}</td>
|
||||
<td>{{ user.5 }}</td>
|
||||
<td>{{ user.6 }}</td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
</tbody>
|
||||
</tbody>
|
||||
</table>
|
||||
<!-- Optional JavaScript -->
|
||||
<!-- jQuery first, then Popper.js, then Bootstrap JS -->
|
||||
<script src="https://code.jquery.com/jquery-3.3.1.slim.min.js" integrity="sha384-q8i/X+965DzO0rT7abK41JStQIAqVgRVzpbzo5smXKp4YfRvH+8abtTE1Pi6jizo"
|
||||
crossorigin="anonymous"></script>
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.3/umd/popper.min.js" integrity="sha384-ZMP7rVo3mIykV+2+9J3UJ46jBk0WLaUAdn689aCwoqbBJiSnjAK/l8WvCWPIPm49"
|
||||
crossorigin="anonymous"></script>
|
||||
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/js/bootstrap.min.js" integrity="sha384-ChfqqxuZUCnJSK3+MXmPNIyE6ZbWh2IMqE241rYiqJxyMiZ6OW/JmZQ5stwEULTy"
|
||||
crossorigin="anonymous"></script>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
|
||||
</html>
|
||||
{% endblock %}
|
||||
{% block scripts %}
|
||||
{{ super() }}
|
||||
{% endblock %}
|
79
templates/stat.html
Normal file
79
templates/stat.html
Normal file
@ -0,0 +1,79 @@
|
||||
{% extends "base.html" %}
|
||||
{% block head %}
|
||||
{{ super() }}
|
||||
{% endblock %}
|
||||
{% block content %}
|
||||
{{ super() }}
|
||||
<ul class="nav nav-pills">
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="/">Users</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="/conf">Conferences</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link active" href="/stat">2ch.hk Stats</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link disabled" href="#">Disabled</a>
|
||||
</li>
|
||||
</ul>
|
||||
<br>
|
||||
<form action="/" method="get">
|
||||
<div class="input-group mb-3">
|
||||
<input type="text" class="form-control" placeholder="Board" aria-label="Board"
|
||||
aria-describedby="button-stat" name="board">
|
||||
<div class="input-group-append">
|
||||
<button class="btn btn-primary" type="submit" id="button-stat">Get stat</button>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
<div class="row">
|
||||
<div class="col-sm-12">
|
||||
<h4>Info</h4>
|
||||
<b>Board: </b> {{ board }}<br>
|
||||
<b>Threads: </b> {{ threads|length }}<br>
|
||||
<b>Total posts: </b> {{ posts }}<br>
|
||||
</div>
|
||||
</div>
|
||||
<br>
|
||||
<table class="table table-hover table-sm">
|
||||
<thead>
|
||||
<tr>
|
||||
<th scope="col">#</th>
|
||||
<th scope="col">Subject</th>
|
||||
<th scope="col"><a
|
||||
href="./stat?board={{ board }}&order=posts&sorting={%- if sorting == 'ASC' -%}DESC{%- else -%}ASC{%- endif -%}">Posts</a>
|
||||
</th>
|
||||
<th scope="col"><a
|
||||
href="./stat?board={{ board }}&order=views&sorting={%- if sorting == 'ASC' -%}DESC{%- else -%}ASC{%- endif -%}">Views</a>
|
||||
</th>
|
||||
<th scope="col"><a
|
||||
href="./stat?board={{ board }}&order=score&sorting={%- if sorting == 'ASC' -%}DESC{%- else -%}ASC{%- endif -%}">Score</a>
|
||||
</th>
|
||||
<th scope="col"><a
|
||||
href="./stat?board={{ board }}&order=timestamp&sorting={%- if sorting == 'ASC' -%}DESC{%- else -%}ASC{%- endif -%}">Created</a>
|
||||
</th>
|
||||
<th scope="col"><a
|
||||
href="./stat?board={{ board }}&order=lasthit&sorting={%- if sorting == 'ASC' -%}DESC{%- else -%}ASC{%- endif -%}">Lasthit</a>
|
||||
</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
{% for thread in threads %}
|
||||
<tr>
|
||||
<th scope="row">{{ loop.index }}</th>
|
||||
<td><a href="https://2ch.hk/b/res/{{ thread['num'] }}.html">{{ thread['subject'] }}</a></td>
|
||||
<td>{{ thread['posts_count'] }}</td>
|
||||
<td>{{ thread['views'] }}</td>
|
||||
<td>{{ "%.2f"|format(thread['score']|float) }}</td>
|
||||
<td>{{ thread['timestamp'] | time }}</td>
|
||||
<td>{{ thread['lasthit'] | time }}</td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
</tbody>
|
||||
</table>
|
||||
{% endblock %}
|
||||
{% block scripts %}
|
||||
{{ super() }}
|
||||
{% endblock %}
|
@ -1,140 +1,114 @@
|
||||
<!doctype html>
|
||||
<html lang="en">
|
||||
|
||||
<head>
|
||||
<!-- Required meta tags -->
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
|
||||
|
||||
<!-- Bootstrap CSS -->
|
||||
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/css/bootstrap.min.css" integrity="sha384-MCw98/SFnGE8fJT3GXwEOngsV7Zt27NXFoaoApmYm81iuXoPkFOJwJ8ERdknLPMO"
|
||||
crossorigin="anonymous">
|
||||
|
||||
<title>libOpenAnal appliance</title>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<div class="container">
|
||||
|
||||
<h1>Hexor's conf_bot data extractor tool</h1>
|
||||
<ul class="nav">
|
||||
<li class="nav-item">
|
||||
<a class="nav-link active" href="/">Users</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="/conf">Conferences</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="#">Link</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link disabled" href="#">Disabled</a>
|
||||
</li>
|
||||
</ul>
|
||||
<hr>
|
||||
<h4>{{ user_info.first_name }} user's data</h4>
|
||||
<hr>
|
||||
<div class="card-columns">
|
||||
<div class="card">
|
||||
<div class="card-body">
|
||||
<h5 class="card-title">Identity</h5>
|
||||
<hr>
|
||||
<p class="card-text">
|
||||
<b>First name: </b>{{ user_info.first_name }}<br>
|
||||
<b>Last name: </b>{% if user_info.last_name != '_null' %}{{ user_info.last_name }}{% else %}<span class="badge badge-warning">N/D</span>{% endif %}<br>
|
||||
<b>Username: </b>{% if user_info.username != '_null' %}{{ user_info.username }}{% else %}<span class="badge badge-warning">N/D</span>{% endif %}<br>
|
||||
<b>Telegram ID: </b>{{user_info.id }}<br>
|
||||
<b>Firstly seen: </b>{{user_info.first_date }}<br>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="card">
|
||||
<div class="card-body">
|
||||
<h5 class="card-title">Activity</h5>
|
||||
<hr>
|
||||
<p class="card-text">
|
||||
<b>First message: </b>{{user_info.first_date }}<br>
|
||||
<b>Last message: </b>{{user_info.last_message }}<br>
|
||||
<b>Days known: </b>{{user_info.day_known }}<br>
|
||||
<b>Word said: </b>{{ user_info.word_count }}<br>
|
||||
<b>Words per day: </b>{{'%0.2f'| format((user_info.word_count / user_info.day_known)|float)}}<br>
|
||||
<b>Words per message: </b>~{{'%0.2f'| format(user_info.avg|float)}}<br>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="card">
|
||||
<div class="card-body">
|
||||
<h5 class="card-title">Top</h5>
|
||||
<hr>
|
||||
<p class="card-text">
|
||||
<table class="table table-hover table-sm">
|
||||
<thead>
|
||||
<tr>
|
||||
<th scope="col">#</th>
|
||||
<th scope="col">Word</th>
|
||||
<th scope="col">Said</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
{% for word in user_info.top %}
|
||||
<tr>
|
||||
<th scope="row">{{loop.index}}</th>
|
||||
<td>{{word[0]}}</td>
|
||||
{% if not loop.last %}
|
||||
{% if (word[1]/loop.nextitem[1]) > 2 %}
|
||||
<td><span class="badge badge-danger" data-toggle="tooltip" data-placement="right" title="Must have been abused">{{word[1]}} </span></td>
|
||||
{% else %}
|
||||
<td><span class="badge badge-secondary">{{word[1]}} </span></td>
|
||||
{% endif %}
|
||||
{% else %}
|
||||
<td><span class="badge badge-secondary">{{word[1]}} </span></td>
|
||||
{% endif %}
|
||||
</tr>
|
||||
{% endfor %}
|
||||
</tbody>
|
||||
</table>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="card">
|
||||
<div class="card-body">
|
||||
<h5 class="card-title">Chats</h5>
|
||||
<p class="card-text">
|
||||
<table class="table table-hover table-sm">
|
||||
<thead>
|
||||
<tr>
|
||||
<th scope="col">#</th>
|
||||
<th scope="col">Chat</th>
|
||||
<th scope="col">Words said</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
{% for chat in user_info.chats %}
|
||||
<tr>
|
||||
<th scope="row">{{loop.index}}</th>
|
||||
<td>{{chat[0]}}</td>
|
||||
<td><span class="badge badge-secondary">{{chat[1]}} </span></td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
</tbody>
|
||||
</table>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
{% extends "base.html" %}
|
||||
{% block head %}
|
||||
{{ super() }}
|
||||
{% endblock %}
|
||||
{% block content %}
|
||||
{{ super() }}
|
||||
<ul class="nav nav-pills">
|
||||
<li class="nav-item">
|
||||
<a class="nav-link active" href="/">Users</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="/conf">Conferences</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="/stat">2ch.hk Stats</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link disabled" href="#">Disabled</a>
|
||||
</li>
|
||||
</ul>
|
||||
<br>
|
||||
<hr>
|
||||
<h4>{{ user_info.first_name }} user's data</h4>
|
||||
<hr>
|
||||
<div class="card-columns">
|
||||
<div class="card">
|
||||
<div class="card-body">
|
||||
<h5 class="card-title">Identity</h5>
|
||||
<hr>
|
||||
<p class="card-text">
|
||||
<b>First name: </b>{{ user_info.first_name }}<br>
|
||||
<b>Last name: </b>{% if user_info.last_name != '_null' %}{{ user_info.last_name }}{% else %}
|
||||
<span class="badge badge-warning">N/D</span>{% endif %}<br>
|
||||
<b>Username: </b>{% if user_info.username != '_null' %}{{ user_info.username }}{% else %}
|
||||
<span class="badge badge-warning">N/D</span>{% endif %}<br>
|
||||
<b>Telegram ID: </b>{{ user_info.id }}<br>
|
||||
<b>Firstly seen: </b>{{ user_info.first_date }}<br>
|
||||
</p>
|
||||
</div>
|
||||
|
||||
|
||||
<!-- Optional JavaScript -->
|
||||
<!-- jQuery first, then Popper.js, then Bootstrap JS -->
|
||||
<script src="https://code.jquery.com/jquery-3.3.1.slim.min.js" integrity="sha384-q8i/X+965DzO0rT7abK41JStQIAqVgRVzpbzo5smXKp4YfRvH+8abtTE1Pi6jizo"
|
||||
crossorigin="anonymous"></script>
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.3/umd/popper.min.js" integrity="sha384-ZMP7rVo3mIykV+2+9J3UJ46jBk0WLaUAdn689aCwoqbBJiSnjAK/l8WvCWPIPm49"
|
||||
crossorigin="anonymous"></script>
|
||||
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/js/bootstrap.min.js" integrity="sha384-ChfqqxuZUCnJSK3+MXmPNIyE6ZbWh2IMqE241rYiqJxyMiZ6OW/JmZQ5stwEULTy"
|
||||
crossorigin="anonymous"></script>
|
||||
</div>
|
||||
<div class="card">
|
||||
<div class="card-body">
|
||||
<h5 class="card-title">Activity</h5>
|
||||
<hr>
|
||||
<p class="card-text">
|
||||
<b>First message: </b>{{ user_info.first_date }}<br>
|
||||
<b>Last message: </b>{{ user_info.last_message }}<br>
|
||||
<b>Days known: </b>{{ user_info.day_known }}<br>
|
||||
<b>Word said: </b>{{ user_info.word_count }}<br>
|
||||
<b>Words per day: </b>{{ '%0.2f'| format((user_info.word_count / user_info.day_known)|float) }}<br>
|
||||
<b>Words per message: </b>~{{ '%0.2f'| format(user_info.avg|float) }}<br>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="card">
|
||||
<div class="card-body">
|
||||
<h5 class="card-title">Top</h5>
|
||||
<hr>
|
||||
<p class="card-text">
|
||||
<table class="table table-hover table-sm">
|
||||
<thead>
|
||||
<tr>
|
||||
<th scope="col">#</th>
|
||||
<th scope="col">Word</th>
|
||||
<th scope="col">Said</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
{% for word in user_info.top %}
|
||||
<tr>
|
||||
<th scope="row">{{ loop.index }}</th>
|
||||
<td>{{ word[0] }}</td>
|
||||
{% if not loop.last %}
|
||||
{% if (word[1]/loop.nextitem[1]) > 2 %}
|
||||
<td><span class="badge badge-danger" data-toggle="tooltip" data-placement="right"
|
||||
title="Must have been abused">{{ word[1] }} </span></td>
|
||||
{% else %}
|
||||
<td><span class="badge badge-secondary">{{ word[1] }} </span></td>
|
||||
{% endif %}
|
||||
{% else %}
|
||||
<td><span class="badge badge-secondary">{{ word[1] }} </span></td>
|
||||
{% endif %}
|
||||
</tr>
|
||||
{% endfor %}
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
|
||||
</html>
|
||||
<div class="card">
|
||||
<div class="card-body">
|
||||
<h5 class="card-title">Chats</h5>
|
||||
<p class="card-text">
|
||||
<table class="table table-hover table-sm">
|
||||
<thead>
|
||||
<tr>
|
||||
<th scope="col">#</th>
|
||||
<th scope="col">Chat</th>
|
||||
<th scope="col">Words said</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
{% for chat in user_info.chats %}
|
||||
<tr>
|
||||
<th scope="row">{{ loop.index }}</th>
|
||||
<td>{{ chat[0] }}</td>
|
||||
<td><span class="badge badge-secondary">{{ chat[1] }} </span></td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{% endblock %}
|
Reference in New Issue
Block a user