사용자:하늘/양식

< 사용자:하늘
하늘 (토론 | 기여)님의 2021년 12월 6일 (월) 20:52 판

ceruleanbot

/bot/__init__.py

봇으로도 가벼운 편집기로도 사용할 수 있음. 미디어위키 편집기, GUI 봇. 나무위키는 난이도가 급상승이라 나무위키 편집기는 안 만들 예정.

MIT License

https://www.geeksforgeeks.org/how-to-use-html-in-tkinter-python/

https://bio-info.tistory.com/46

https://github.com/martin-majlis/Wikipedia-API/blob/master/wikipediaapi/__init__.py

wget 'https://librewiki.net/wiki/사용자:Cerulean/소스/ceruleanbot/init.py?action=raw' -O init.py

사용자:하늘/양식/init.py GUI 부분 CLI 부분 독립 시키기

로그인 GUI 구현 안함

  • 페이지 객체에 분류 정보 딕셔너리 추가 query로 조회. 아니면 그냥 텍스트에서 분류 찾기. 가칭 전자는 깊은 분류 후자는 얕은 분류(onlyinclude includeonly를 생각하지 않음)
  • tkinter 안쓰고 장고로 확장. 브라우저 필요. 지금은 아직 배우지 않아서 봇부터 보완하기.
  • cli 모드
  • 반자동 <-> 자동
  • 분류 바꾸기
  • 분류 이름을 바꿨을 때 분류 바꾸기
  • 분류 정렬키
  • 정규식 치환모드, 단순 텍스트 치환모드, 미리보기 기능.
  • 틀 치환
#!/usr/bin/python3
import tkinter as tk
import tkinter.ttk as ttk
from bot import *

wikisite = wiki('https://librewiki.net', apiprefix='')
print(wikisite)
def setText(self, text):  # for tk obj
	self.delete(1.0, tk.END)
	self.insert(1.0, text)

class mainframe:
	def __init__(self) -> None:
		self.window = tk.Tk()
		self.style = ttk.Style(self.window)
		#for item in self.style.theme_names():
		#	print(item)
		self.style.theme_use('clam')
		self.window.title("cerulWikiBot")
		self.label = tk.Label(self.window, text='문서 제목 입력하고 소스보기', height=2); self.label.pack()
		self.text = tk.Text(self.window)
		self.text.focus();	self.text.pack()
		self.entry = tk.Entry(self.window, width=50)
		self.entry.pack()
		self.viewsource = ttk.Button(
			self.window, text='소스 보기', command=self.searchdoc)
		self.viewsource.pack(pady=0, side='left')
		self.savebutton = ttk.Button(
			self.window, text='편집 저장', command=self.save)  # 미구현
		self.savebutton.pack(pady=0, side='left')

		self.addtolistb = ttk.Button(
			self.window, text='작업 목록에 추가', command=self.addtolist)  # 미구현
		self.addtolistb.pack(pady=0, side='left')

		self.loginb = ttk.Button(self.window, text='로그인', command=self.login)
		self.loginb.pack(pady=0, side='left')
		self.logoutb = ttk.Button(self.window, text='로그아웃', command=self.logout)
		self.logoutb.pack(pady=0, side='left')

		self.window.mainloop()

	def login(self):
		wikisite.login('cerulean', 'zcxv')

	def logout(self):
		wikisite.logout()

	def searchdoc(self):
		self.title = self.entry.get()
		if self.title == '':
			self.label.configure(text='?')
			setText(self.text, '?')
		else:
			self.label.configure(text=self.title)
			wikisite.setpage(self.title)
			wikisite.page.get()
			setText(self.text, wikisite.page.cont)

	def save(self):
		wikisite.page.cont = self.text.get(1.0, tk.END)
		wikisite.page.save()

	def addtolist(self):
		wikisite.addpage()

	#def __del__(self):
	#	wikisite.__del__()

window = mainframe()