위키백과:데이터베이스 보고서/사용되지 않는 비자유 저작물/구성

# -*- coding: utf-8 -*-

import pymysql as pms
import pywikibot as pwb
from datetime import datetime
from zoneinfo import ZoneInfo
import locale

def asof():
    locale.setlocale(locale.LC_TIME, "ko_KR.UTF-8")
    KST = ZoneInfo("Asia/Seoul")
    return datetime.now(KST).strftime('%Y년 %-m월 %-d일 (%a) %H:%M (KST)')

site = pwb.Site()
page = pwb.Page(site, "위키백과:데이터베이스 보고서/사용되지 않는 비자유 저작물")
text = f'''사용되지 않는 비자유 저작물(최대 1000개)을 정리한 보고서입니다.

마지막 갱신: <onlyinclude>{asof()}</onlyinclude>

{{| class="wikitable sortable plainlinks" style="width: 100%; margin: auto;"
|- style="white-space: nowrap;"
! 순번
! 파일 이름
! 업로드 시각
'''

conn = pms.connect(host='kowiki.analytics.db.svc.wikimedia.cloud', user='#####', password='#####', db='kowiki_p')
cursor = conn.cursor()
cursor.execute('''SELECT img_name, img_timestamp
FROM image
JOIN page
  ON page_title = img_name
JOIN categorylinks
  ON cl_from = page_id
WHERE
  page_namespace = 6
  AND NOT EXISTS (
    SELECT 1
    FROM imagelinks
    WHERE
      il_to = img_name
  )
  AND cl_to = '모든_비자유_미디어'
ORDER BY img_timestamp ASC
LIMIT 1000;''')

kowiki_ns = {-2: '미디어', -1: '특', 1: '토론', 2: '사', 3: '사토', 4: '백', 5: '백토', 6: '파일', 7: '파일토론', 8: '미디어위키', 9: '미디어위키토론', 10: '틀', 11: '틀토론', 12: '도움말', 13: '도움말토론', 14: '분류', 15: '분류토론', 100: '들', 101: '들토', 102: '프', 103: '프토', 118: '초안', 119: '초안토론', 828: '모듈', 829: '모듈토론', 710: 'TimedText', 711: 'TimedText talk'}
for i, row in enumerate(cursor.fetchall(), start=1):
    table_row = (
        f'|-\n'
        f'| {i}\n'
        f"| [[:파일:{row[0].decode('utf-8').replace('_', ' ')}]]\n"
        f"| {row[1].decode('utf-8')}\n"
    )
    text += table_row

text += '|}\n\n'

print(text)
page.text = text
page.save("database report")
Prefix: a b c d e f g h i j k l m n o p q r s t u v w x y z 0 1 2 3 4 5 6 7 8 9

Portal di Ensiklopedia Dunia

Kembali kehalaman sebelumnya