# https://t.me/ZGQinc

import sqlite3
import re

# SBrowser.db, SELECT title, url FROM BOOKMARKS
db_path_sbrowser = 'SBrowser.db'
output_html_bookmarks = 'bookmarks.html'

conn_sbrowser = sqlite3.connect(db_path_sbrowser)
cursor_sbrowser = conn_sbrowser.cursor()

cursor_sbrowser.execute("SELECT title, url FROM BOOKMARKS")

html_template_bookmarks = """
<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Bookmarks</title>
</head>
<body>
    <h1>Bookmarks</h1>
    <ul>
        {bookmarks}
    </ul>
</body>
</html>
"""

bookmarks = []
for row in cursor_sbrowser.fetchall():
    title, url = row
    bookmark_entry = f'<li><a href="{url}">{title}</a></li>'
    bookmarks.append(bookmark_entry)

html_content_bookmarks = html_template_bookmarks.format(bookmarks='\n'.join(bookmarks))

with open(output_html_bookmarks, 'w', encoding='utf-8') as f:
    f.write(html_content_bookmarks)

# SBrowser.db, SELECT path, title, description FROM READINGLIST
output_html_readinglist = 'readinglist.html'

cursor_sbrowser.execute("SELECT path, title, description FROM READINGLIST")

html_template_readinglist = """
<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Reading List</title>
</head>
<body>
    <h1>Reading List</h1>
    <ul>
        {reading_list}
    </ul>
</body>
</html>
"""

reading_list = []
for row in cursor_sbrowser.fetchall():
    path, title, description = row
    path = re.sub(r'^content://com\.sec\.android\.app\.sbrowser', '', path)
    reading_entry = f'<li><a href=".{path}">{title}</a><p>{description}</p></li>'
    reading_list.append(reading_entry)

html_content_readinglist = html_template_readinglist.format(reading_list='\n'.join(reading_list))

with open(output_html_readinglist, 'w', encoding='utf-8') as f:
    f.write(html_content_readinglist)

# SyncMetaInfo.db, SELECT url, title FROM HISTORY
db_path_syncmetainfo = 'SyncMetaInfo.db'
output_html_history = 'history.html'

conn_syncmetainfo = sqlite3.connect(db_path_syncmetainfo)
cursor_syncmetainfo = conn_syncmetainfo.cursor()

cursor_syncmetainfo.execute("SELECT url, title FROM HISTORY")

html_template_history = """
<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>History</title>
</head>
<body>
    <h1>History</h1>
    <ul>
        {history}
    </ul>
</body>
</html>
"""

history = []
for row in cursor_syncmetainfo.fetchall():
    url, title = row
    history_entry = f'<li><a href="{url}">{title}</a></li>'
    history.append(history_entry)

html_content_history = html_template_history.format(history='\n'.join(history))

with open(output_html_history, 'w', encoding='utf-8') as f:
    f.write(html_content_history)

conn_syncmetainfo.close()

# quickaccess.db, SELECT url, title FROM quickaccess_item
db_path_quickaccess = 'quickaccess.db'
output_html_quickaccess = 'quickaccess.html'

conn_quickaccess = sqlite3.connect(db_path_quickaccess)
cursor_quickaccess = conn_quickaccess.cursor()

cursor_quickaccess.execute("SELECT url, title FROM quickaccess_item")

html_template_quickaccess = """
<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Quick Access</title>
</head>
<body>
    <h1>Quick Access</h1>
    <ul>
        {quickaccess}
    </ul>
</body>
</html>
"""

quickaccess = []
for row in cursor_quickaccess.fetchall():
    url, title = row
    quickaccess_entry = f'<li><a href="{url}">{title}</a></li>'
    quickaccess.append(quickaccess_entry)

html_content_quickaccess = html_template_quickaccess.format(quickaccess='\n'.join(quickaccess))

with open(output_html_quickaccess, 'w', encoding='utf-8') as f:
    f.write(html_content_quickaccess)

conn_quickaccess.close()
conn_sbrowser.close()

print('success')
