mirror of
https://github.com/fabianonline/telegram_backup.git
synced 2024-11-23 01:06:17 +00:00
WIP: Using mustache as template engine for HTML exporter.
This commit is contained in:
parent
c62e6db3d3
commit
ecbca30a10
@ -94,5 +94,9 @@ least the folder `export` contains exported data.
|
|||||||
## Attribution
|
## Attribution
|
||||||
This tool uses libraries from other developers which are covered by other licenses,
|
This tool uses libraries from other developers which are covered by other licenses,
|
||||||
which are:
|
which are:
|
||||||
* [Kotlogram](https://github.com/badoualy/kotlogram) by Yannick Badoual, licensed under MIT License.
|
* [Kotlogram](https://github.com/badoualy/kotlogram) by Yannick Badoual, licensed
|
||||||
* [SQLite JDBC](https://bitbucket.org/xerial/sqlite-jdbc) by Taro L. Saito, licensed under Apache License version 2.0.
|
under MIT License.
|
||||||
|
* [SQLite JDBC](https://bitbucket.org/xerial/sqlite-jdbc) by Taro L. Saito,
|
||||||
|
licensed under Apache License version 2.0.
|
||||||
|
* [Mustache.java](https://github.com/spullara/mustache.java) by RightTime,
|
||||||
|
Inc., licensed under Apache License version 2.0.
|
||||||
|
@ -16,6 +16,7 @@ repositories {
|
|||||||
dependencies {
|
dependencies {
|
||||||
compile 'com.github.badoualy:kotlogram:0.0.6'
|
compile 'com.github.badoualy:kotlogram:0.0.6'
|
||||||
compile 'org.xerial:sqlite-jdbc:3.8.11.2'
|
compile 'org.xerial:sqlite-jdbc:3.8.11.2'
|
||||||
|
compile 'com.github.spullara.mustache.java:compiler:0.8.18'
|
||||||
}
|
}
|
||||||
|
|
||||||
run {
|
run {
|
||||||
@ -30,4 +31,8 @@ jar {
|
|||||||
from {
|
from {
|
||||||
configurations.compile.collect { it.isDirectory() ? it : zipTree(it) }
|
configurations.compile.collect { it.isDirectory() ? it : zipTree(it) }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
includes [
|
||||||
|
"*.mustache"
|
||||||
|
]
|
||||||
}
|
}
|
||||||
|
@ -17,6 +17,7 @@
|
|||||||
package de.fabianonline.telegram_backup;
|
package de.fabianonline.telegram_backup;
|
||||||
|
|
||||||
import de.fabianonline.telegram_backup.TelegramUpdateHandler;
|
import de.fabianonline.telegram_backup.TelegramUpdateHandler;
|
||||||
|
import de.fabianonline.telegram_backup.exporter.HTMLExporter;
|
||||||
|
|
||||||
import com.github.badoualy.telegram.api.Kotlogram;
|
import com.github.badoualy.telegram.api.Kotlogram;
|
||||||
import com.github.badoualy.telegram.api.TelegramApp;
|
import com.github.badoualy.telegram.api.TelegramApp;
|
||||||
|
@ -32,10 +32,7 @@ import java.io.ByteArrayInputStream;
|
|||||||
import java.io.ByteArrayOutputStream;
|
import java.io.ByteArrayOutputStream;
|
||||||
import java.util.LinkedList;
|
import java.util.LinkedList;
|
||||||
|
|
||||||
import de.fabianonline.telegram_backup.UserManager;
|
public class Database {
|
||||||
import de.fabianonline.telegram_backup.StickerConverter;
|
|
||||||
|
|
||||||
class Database {
|
|
||||||
private Connection conn;
|
private Connection conn;
|
||||||
private Statement stmt;
|
private Statement stmt;
|
||||||
private UserManager user_manager;
|
private UserManager user_manager;
|
||||||
|
@ -31,7 +31,7 @@ import java.security.NoSuchAlgorithmException;
|
|||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
|
|
||||||
class UserManager {
|
public class UserManager {
|
||||||
public TLUser user = null;
|
public TLUser user = null;
|
||||||
public String phone = null;
|
public String phone = null;
|
||||||
private String code = null;
|
private String code = null;
|
||||||
|
@ -14,7 +14,7 @@
|
|||||||
* You should have received a copy of the GNU General Public License
|
* You should have received a copy of the GNU General Public License
|
||||||
* along with this program. If not, see <http://www.gnu.org/licenses/>. */
|
* along with this program. If not, see <http://www.gnu.org/licenses/>. */
|
||||||
|
|
||||||
package de.fabianonline.telegram_backup;
|
package de.fabianonline.telegram_backup.exporter;
|
||||||
|
|
||||||
import de.fabianonline.telegram_backup.UserManager;
|
import de.fabianonline.telegram_backup.UserManager;
|
||||||
import de.fabianonline.telegram_backup.Database;
|
import de.fabianonline.telegram_backup.Database;
|
||||||
@ -25,8 +25,13 @@ import java.io.BufferedWriter;
|
|||||||
import java.io.FileWriter;
|
import java.io.FileWriter;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.util.LinkedList;
|
import java.util.LinkedList;
|
||||||
|
import java.util.HashMap;
|
||||||
|
|
||||||
class HTMLExporter {
|
import com.github.mustachejava.DefaultMustacheFactory;
|
||||||
|
import com.github.mustachejava.Mustache;
|
||||||
|
import com.github.mustachejava.MustacheFactory;
|
||||||
|
|
||||||
|
public class HTMLExporter {
|
||||||
public void export(UserManager user) {
|
public void export(UserManager user) {
|
||||||
try {
|
try {
|
||||||
Database db = new Database(user);
|
Database db = new Database(user);
|
||||||
@ -36,40 +41,36 @@ class HTMLExporter {
|
|||||||
new File(base).mkdirs();
|
new File(base).mkdirs();
|
||||||
new File(base + "dialogs").mkdirs();
|
new File(base + "dialogs").mkdirs();
|
||||||
|
|
||||||
PrintWriter index = new PrintWriter(new BufferedWriter(new FileWriter(base + "index.html")));
|
|
||||||
index.println("<!DOCTYPE html>");
|
|
||||||
index.println("<html>");
|
|
||||||
index.println("<head>");
|
|
||||||
index.println("<title>Telegram Backup for " + user.getUserString() + "</title>");
|
|
||||||
index.println("</head>");
|
|
||||||
|
|
||||||
index.println("<body>");
|
|
||||||
index.println("<h1>Telegram Backup</h1>");
|
|
||||||
index.println("<h2>" + user.getUserString() + "</h2>");
|
|
||||||
LinkedList<Database.Dialog> dialogs = db.getListOfDialogsForExport();
|
LinkedList<Database.Dialog> dialogs = db.getListOfDialogsForExport();
|
||||||
index.println("<h3>Dialogs</h3>");
|
LinkedList<Database.Chat> chats = db.getListOfChatsForExport();
|
||||||
index.println("<ul>");
|
|
||||||
for (Database.Dialog dialog : dialogs) {
|
|
||||||
index.println("<li><a href='dialogs/user_" + dialog.id + ".html'>" + dialog.first_name + " " + (dialog.last_name!=null ? dialog.last_name : "") + "</a> <span class='count'>(" + dialog.count + ")</span></li>");
|
HashMap<String, Object> scope = new HashMap<String, Object>();
|
||||||
|
scope.put("user", user.getUser());
|
||||||
|
scope.put("dialogs", dialogs);
|
||||||
|
scope.put("chats", chats);
|
||||||
|
|
||||||
|
MustacheFactory mf = new DefaultMustacheFactory();
|
||||||
|
Mustache mustache = mf.compile("templates/html/index.mustache");
|
||||||
|
FileWriter w = new FileWriter(base + "index.html");
|
||||||
|
mustache.execute(w, scope);
|
||||||
|
w.close();
|
||||||
|
|
||||||
|
for (Database.Dialog d : dialogs) {
|
||||||
|
//LinkedList<HashMap<String, Object>> messages = db.getMessagesForTemplate(dialog);
|
||||||
|
}
|
||||||
|
System.exit(0);
|
||||||
|
/*
|
||||||
String filename = base + "dialogs" + File.separatorChar + "user_" + dialog.id + ".html";
|
String filename = base + "dialogs" + File.separatorChar + "user_" + dialog.id + ".html";
|
||||||
final PrintWriter chatfile = new PrintWriter(new BufferedWriter(new FileWriter(filename)));
|
final PrintWriter chatfile = new PrintWriter(new BufferedWriter(new FileWriter(filename)));
|
||||||
db.getMessagesForExport(dialog, new ChatLineWriter(chatfile));
|
db.getMessagesForExport(dialog, new ChatLineWriter(chatfile));
|
||||||
chatfile.close();
|
chatfile.close();
|
||||||
}
|
|
||||||
LinkedList<Database.Chat> chats = db.getListOfChatsForExport();
|
|
||||||
index.println("<h3>Group chats</h3>");
|
|
||||||
index.println("<ul>");
|
|
||||||
for (Database.Chat chat : chats) {
|
|
||||||
index.println("<li><a href='dialogs/chat_" + chat.id + ".html'>" + chat.name + "</a> <span class='count'>(" + chat.count + ")</span></li>");
|
|
||||||
String filename = base + "dialogs" + File.separatorChar + "chat_" + chat.id + ".html";
|
String filename = base + "dialogs" + File.separatorChar + "chat_" + chat.id + ".html";
|
||||||
final PrintWriter chatfile = new PrintWriter(new BufferedWriter(new FileWriter(filename)));
|
final PrintWriter chatfile = new PrintWriter(new BufferedWriter(new FileWriter(filename)));
|
||||||
db.getMessagesForExport(chat, new ChatLineWriter(chatfile));
|
db.getMessagesForExport(chat, new ChatLineWriter(chatfile));
|
||||||
chatfile.close();
|
chatfile.close();
|
||||||
}
|
*/
|
||||||
index.println("</ul>");
|
|
||||||
index.println("</body>");
|
|
||||||
index.println("</html>");
|
|
||||||
index.close();
|
|
||||||
} catch (IOException e) {
|
} catch (IOException e) {
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
throw new RuntimeException("Exception above!");
|
throw new RuntimeException("Exception above!");
|
36
src/main/resources/templates/html/index.mustache
Normal file
36
src/main/resources/templates/html/index.mustache
Normal file
@ -0,0 +1,36 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<title>Telegram Backup for {{user.getUserString}}</title>
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<body>
|
||||||
|
<h1>Telegram Backup</h1>
|
||||||
|
<h2>{{user.getUserString}}</h2>
|
||||||
|
|
||||||
|
<h3>Dialogs</h3>
|
||||||
|
<ul class="dialogs">
|
||||||
|
{{#dialogs}}
|
||||||
|
<li>
|
||||||
|
<a href="dialogs/user_{{id}}.html">
|
||||||
|
<span class="name">{{first_name}} {{last_name}}</span>
|
||||||
|
{{#username}}<span class="username">(@{{username}})</span>{{/username}}
|
||||||
|
<span class="count">({{count}})</span>
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
{{/dialogs}}
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
<h3>Chats</h3>
|
||||||
|
<ul class="chats">
|
||||||
|
{{#chats}}
|
||||||
|
<li>
|
||||||
|
<a href="dialogs/chat_{{id}}.html">
|
||||||
|
<span class="name">{{name}}</span>
|
||||||
|
<span class="count">({{count}})</span>
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
{{/chats}}
|
||||||
|
</ul>
|
||||||
|
</body>
|
||||||
|
</html>
|
Loading…
Reference in New Issue
Block a user