68 lines
1.9 KiB
Python
68 lines
1.9 KiB
Python
|
|
# -*- coding: utf-8 -*-
|
|||
|
|
"""
|
|||
|
|
导出网站数据
|
|||
|
|
生成CSV文件,方便批量导入
|
|||
|
|
"""
|
|||
|
|
import csv
|
|||
|
|
import sys
|
|||
|
|
from app import create_app
|
|||
|
|
from models import Site, Tag
|
|||
|
|
|
|||
|
|
def export_sites_to_csv():
|
|||
|
|
"""导出网站数据到CSV"""
|
|||
|
|
app = create_app('development')
|
|||
|
|
|
|||
|
|
with app.app_context():
|
|||
|
|
sites = Site.query.order_by(Site.sort_order.desc()).all()
|
|||
|
|
|
|||
|
|
if not sites:
|
|||
|
|
print("没有找到任何网站数据")
|
|||
|
|
return
|
|||
|
|
|
|||
|
|
# 导出为CSV
|
|||
|
|
filename = 'sites_export.csv'
|
|||
|
|
with open(filename, 'w', newline='', encoding='utf-8-sig') as f:
|
|||
|
|
writer = csv.writer(f)
|
|||
|
|
|
|||
|
|
# 写入表头
|
|||
|
|
writer.writerow([
|
|||
|
|
'网站名称',
|
|||
|
|
'URL',
|
|||
|
|
'简短描述',
|
|||
|
|
'详细描述',
|
|||
|
|
'特色功能',
|
|||
|
|
'标签(逗号分隔)',
|
|||
|
|
'排序值',
|
|||
|
|
'是否可见'
|
|||
|
|
])
|
|||
|
|
|
|||
|
|
# 写入数据
|
|||
|
|
for site in sites:
|
|||
|
|
tags_str = ', '.join([tag.name for tag in site.tags])
|
|||
|
|
writer.writerow([
|
|||
|
|
site.name,
|
|||
|
|
site.url,
|
|||
|
|
site.short_desc or '',
|
|||
|
|
site.description or '',
|
|||
|
|
site.features or '',
|
|||
|
|
tags_str,
|
|||
|
|
site.sort_order,
|
|||
|
|
'是' if site.is_visible else '否'
|
|||
|
|
])
|
|||
|
|
|
|||
|
|
print(f"✓ 成功导出 {len(sites)} 个网站")
|
|||
|
|
print(f" 文件: {filename}")
|
|||
|
|
print("\n网站列表:")
|
|||
|
|
print("-" * 80)
|
|||
|
|
|
|||
|
|
for i, site in enumerate(sites, 1):
|
|||
|
|
tags = ', '.join([tag.name for tag in site.tags])
|
|||
|
|
print(f"{i}. {site.name}")
|
|||
|
|
print(f" URL: {site.url}")
|
|||
|
|
print(f" 描述: {site.short_desc}")
|
|||
|
|
print(f" 标签: {tags}")
|
|||
|
|
print()
|
|||
|
|
|
|||
|
|
if __name__ == '__main__':
|
|||
|
|
export_sites_to_csv()
|