telegram_backup/src/main/java/de/fabianonline/telegram_backup/HTMLExporter.java

76 lines
2.7 KiB
Java

package de.fabianonline.telegram_backup;
import de.fabianonline.telegram_backup.UserManager;
import de.fabianonline.telegram_backup.Database;
import java.io.File;
import java.io.PrintWriter;
import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;
import java.util.LinkedList;
class HTMLExporter {
public void export(UserManager user) {
try {
Database db = new Database(user);
// Create base dir
String base = user.getFileBase() + "export" + File.separatorChar + "html" + File.separatorChar;
new File(base).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();
index.println("<h3>Dialogs</h3>");
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>");
String filename = base + "dialogs" + File.separatorChar + "user_" + dialog.id + ".html";
final PrintWriter chatfile = new PrintWriter(new BufferedWriter(new FileWriter(filename)));
db.getMessagesForExport(dialog, new ChatLineWriter(chatfile));
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";
final PrintWriter chatfile = new PrintWriter(new BufferedWriter(new FileWriter(filename)));
db.getMessagesForExport(chat, new ChatLineWriter(chatfile));
chatfile.close();
}
index.println("</ul>");
index.println("</body>");
index.println("</html>");
index.close();
} catch (IOException e) {
e.printStackTrace();
throw new RuntimeException("Exception above!");
}
}
class ChatLineWriter implements Database.ChatMessageProcessor {
PrintWriter w;
public ChatLineWriter(PrintWriter w) {
this.w = w;
}
public void process(Database.Message msg) {
w.println("" + msg.text + "<br>");
}
}
}