import re
from bs4 import BeautifulSoup
from openpyxl import Workbook
from datetime import datetime
from openpyxl.styles import Font, PatternFill, Alignment
from openpyxl.utils import get_column_letter

# Read the content from the .txt file
with open('combined_source_code.txt', 'r', encoding='utf-8') as file:
    content = file.read()

# Parse the HTML content
soup = BeautifulSoup(content, 'html.parser')

# Find all posts
posts = soup.find_all('tr', id=re.compile('^post-'))

# Prepare data extraction
data = []
for post in posts:
    # Extract Post Name (Tiêu đề bài viết)
    post_title_div = post.find('div', class_='post_title')
    if post_title_div:
        post_title = post_title_div.text.strip()
    else:
        continue  # Skip if no title found

    # Extract Keyword (Từ khóa chính của bài viết)
    input_focus_keyword = post.find('input', {'data-field': 'focus_keyword'})
    if input_focus_keyword:
        keyword = input_focus_keyword.get('value', '').strip()
    else:
        keyword = ''

    # Extract Link (Đường dẫn bài viết)
    view_link = None
    row_actions = post.find('div', class_='row-actions')
    if row_actions:
        view_action = row_actions.find('span', class_='view')
        if view_action and view_action.find('a'):
            view_link = view_action.find('a')['href']

    # Extract Date (Ngày đăng/Ngày dự kiến)
    date_td = post.find('td', class_='date column-date')
    if date_td:
        date_text = date_td.get_text(separator=' ').strip()
        # Extract date using regex
        match = re.search(r'(\d{2}/\d{2}/\d{4} lúc \d{1,2}:\d{2} (chiều|sáng))', date_text)
        if match:
            date_published = match.group(1)
        else:
            date_published = ''
    else:
        date_published = ''

    # Append to data list
    data.append({
        'Tiêu đề bài viết': post_title,
        'Từ khóa chính của bài viết': keyword,
        'Đường dẫn bài viết': view_link,
        'Ngày đăng/Ngày dự kiến': date_published
    })

# Create an Excel workbook and select the active worksheet
wb = Workbook()
ws = wb.active

# Set the font for the entire worksheet to Times New Roman
for row in ws.iter_rows():
    for cell in row:
        cell.font = Font(name='Times New Roman')

# Merge cells A1 to D1 and format
ws.merge_cells('A1:F1')
today_str = datetime.today().strftime('%d/%m/%Y')
ws['A1'] = f"Báo cáo An Nhiên Group Hòa Bình ngày {today_str} (Long)"
ws['A1'].font = Font(name='Times New Roman', size=20, bold=True)
ws['A1'].alignment = Alignment(horizontal='center')

# Set cell A3 with specified text
ws['A3'] = f"1. Bài viết đã đăng (Đăng bài viết ngày {today_str})"
ws['A3'].font = Font(name='Times New Roman', size=15, bold=True)

# Set headers starting from row 4
headers = [
    'Tiêu đề bài viết',
    'Từ khóa chính của bài viết',
    'Đường dẫn bài viết',
    'Ngày đăng/Ngày dự kiến',
    'Người đăng bài',
    'Ngày viết'
]
header_row = 4
for col_num, header in enumerate(headers, 1):
    cell = ws.cell(row=header_row, column=col_num, value=header)
    cell.font = Font(name='Times New Roman', bold=True)
    cell.fill = PatternFill(start_color='FFE4D5', end_color='FFE4D5', fill_type='solid')

# Adjust column widths
column_widths = [40, 30, 50, 25, 20, 15]
for i, width in enumerate(column_widths, 1):
    ws.column_dimensions[get_column_letter(i)].width = width

# Add extracted data to the worksheet
current_row = header_row + 1
for item in data:
    ws.cell(row=current_row, column=1, value=item['Tiêu đề bài viết']).font = Font(name='Times New Roman')
    ws.cell(row=current_row, column=2, value=item['Từ khóa chính của bài viết']).font = Font(name='Times New Roman')
    ws.cell(row=current_row, column=3, value=item['Đường dẫn bài viết']).font = Font(name='Times New Roman')
    ws.cell(row=current_row, column=4, value=item['Ngày đăng/Ngày dự kiến']).font = Font(name='Times New Roman')
    ws.cell(row=current_row, column=5, value='Nguyễn Ngọc Long').font = Font(name='Times New Roman')
    ws.cell(row=current_row, column=6, value=today_str).font = Font(name='Times New Roman')
    current_row += 1

# Save the workbook with the specified filename
filename = f"Báo cáo {datetime.today().strftime('%d.%m.%Y')} (Long).xlsx"
wb.save(filename)
print(f"Excel file '{filename}' has been created successfully.")

add 2 new columns named "Website" that contains the wordpress website name and "Đường dẫn chỉnh sửa bài viết" that contains the edit link (example: https://www.chungkhoan6688.com/wp-admin/post.php?post=1478&action=edit).