
티스토리 포스팅 alt 속성 입력 프로그램
Taedi
·2021. 2. 8. 02:00
반응형
| 다운로드
Alt 속성 생성기.zip
4.37MB
Alt 속성 생성기.z01
10.00MB
Alt 속성 생성기.z02
10.00MB
Alt 속성 생성기.z03
10.00MB
※ 분할압축으로 전체 파일을 다운로드하시면 됩니다!
| 설명
- 미흡한 실력으로 혹시 모를 오류가 존재할 수 있으니 사용 시 주의 부탁드립니다.
- 포스트 작성 시 사진 파일에 작성한 "이미지 설명"을 alt 속성으로 입력하는 프로그램입니다.
| 사용방법
1. 티스토리 에디터에서 1차 포스트 작성
- 작성 시 이미지 파일에 설명 작성하기
2. 티스토리 에디터 'html 모드'로 전환 및 본문 내용 복사
3. 프로그램에 html 전문 붙여넣기
4. 프로그램에서 'Alt 속성 생성' 버튼 클릭
5. 티스토리 에디터에 붙여 넣고'기본모드'로 전환하여 오류 여부 확인
6. 게시물 발행
| 화면 및 기능 안내
메뉴 | 설명 |
Alt 속성이 이미 존재할 경우? | - '변경 안 함' 선택 시 기존의 Alt 속성을 그대로 유지합니다. - '바꾸기' 선택 시 기존의 Alt 속성은 지우고 이미지 설명과 내용을 일치시킵니다. |
생성 후 이미지 설명? | - '그대로 두기' 선택 시 이미지 설명은 그대로 유지합니다. - '지우기' 선택 시 Alt 속성만 입력되고 이미지 설명은 |
결과? | - '검색 이미지' : html에서 찾아낸 이미지 태그의 숫자가 나타납니다. - 'Alt 변경' : Alt 속성 변경이 완료된 갯수 입니다. - 'Alt 유지' : '변경 안 함' 처리 된 갯수 입니다. - 'Alt 오류' : 이미지 설명이 누락되어 Alt 속성을 입력할 수 없는 경우입니다. (변환 된 html에서 '■■이미지 설명이 비어있습니다■■' 라고 표시됩니다.) |
더보기
from PyQt5 import QtCore, QtGui, QtWidgets
import re, webbrowser
import icon
hintword = "여기에 html을 붙여 넣고 \"Alt 속성 생성\" 버튼을 눌러주세요."
class Ui_MainWindow(object):
def setupUi(self, MainWindow):
MainWindow.setObjectName("MainWindow")
MainWindow.resize(1000, 800)
MainWindow.setWindowIcon(QtGui.QIcon(':/icon.png'))
self.centralwidget = QtWidgets.QWidget(MainWindow)
self.centralwidget.setMaximumSize(QtCore.QSize(1677215, 16777215))
self.centralwidget.setObjectName("centralwidget")
self.gridLayout_2 = QtWidgets.QGridLayout(self.centralwidget)
self.gridLayout_2.setObjectName("gridLayout_2")
self.gridLayout = QtWidgets.QGridLayout()
self.gridLayout.setObjectName("gridLayout")
self.verticalLayout_3 = QtWidgets.QVBoxLayout()
self.verticalLayout_3.setObjectName("verticalLayout_3")
self.gridLayout.addLayout(self.verticalLayout_3, 1, 1, 1, 1)
self.tedtOri = QtWidgets.QPlainTextEdit(self.centralwidget)
self.tedtOri.setPlainText("")
self.tedtOri.setObjectName("tedtOri")
self.gridLayout.addWidget(self.tedtOri, 0, 0, 1, 1)
self.verticalLayout_2 = QtWidgets.QVBoxLayout()
self.verticalLayout_2.setObjectName("verticalLayout_2")
self.btnRun = QtWidgets.QPushButton(self.centralwidget)
self.btnRun.setObjectName("btnRun")
self.verticalLayout_2.addWidget(self.btnRun)
self.groupBox = QtWidgets.QGroupBox(self.centralwidget)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Preferred)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.groupBox.sizePolicy().hasHeightForWidth())
self.groupBox.setSizePolicy(sizePolicy)
self.groupBox.setMinimumSize(QtCore.QSize(0, 0))
self.groupBox.setObjectName("groupBox")
self.gridLayout_3 = QtWidgets.QGridLayout(self.groupBox)
self.gridLayout_3.setObjectName("gridLayout_3")
self.rad1 = QtWidgets.QRadioButton(self.groupBox)
self.rad1.setObjectName("rad1")
self.gridLayout_3.addWidget(self.rad1, 0, 0, 1, 1)
self.rad2 = QtWidgets.QRadioButton(self.groupBox)
self.rad2.setObjectName("rad2")
self.gridLayout_3.addWidget(self.rad2, 1, 0, 1, 1)
self.verticalLayout_2.addWidget(self.groupBox, 0, QtCore.Qt.AlignTop)
self.groupBox_3 = QtWidgets.QGroupBox(self.centralwidget)
self.groupBox_3.setObjectName("groupBox_3")
self.gridLayout_5 = QtWidgets.QGridLayout(self.groupBox_3)
self.gridLayout_5.setObjectName("gridLayout_5")
self.rad3 = QtWidgets.QRadioButton(self.groupBox_3)
self.rad3.setObjectName("rad3")
self.gridLayout_5.addWidget(self.rad3, 0, 0, 1, 1)
self.rad4 = QtWidgets.QRadioButton(self.groupBox_3)
self.rad4.setObjectName("rad4")
self.gridLayout_5.addWidget(self.rad4, 1, 0, 1, 1)
self.verticalLayout_2.addWidget(self.groupBox_3)
self.groupBox_2 = QtWidgets.QGroupBox(self.centralwidget)
self.groupBox_2.setObjectName("groupBox_2")
self.gridLayout_4 = QtWidgets.QGridLayout(self.groupBox_2)
self.gridLayout_4.setObjectName("gridLayout_4")
self.labTotal = QtWidgets.QLabel(self.groupBox_2)
self.labTotal.setObjectName("labTotal")
self.gridLayout_4.addWidget(self.labTotal, 0, 0, 1, 1)
self.labAlt = QtWidgets.QLabel(self.groupBox_2)
self.labAlt.setObjectName("labAlt")
self.gridLayout_4.addWidget(self.labAlt, 2, 0, 1, 1)
self.labError = QtWidgets.QLabel(self.groupBox_2)
self.labError.setObjectName("labError")
self.gridLayout_4.addWidget(self.labError, 3, 0, 1, 1)
self.labKeep = QtWidgets.QLabel(self.groupBox_2)
self.labKeep.setObjectName("labKeep")
self.gridLayout_4.addWidget(self.labKeep, 1, 0, 1, 1)
self.verticalLayout_2.addWidget(self.groupBox_2)
self.btnHelp = QtWidgets.QPushButton(self.centralwidget)
self.btnHelp.setObjectName("btnHelp")
self.verticalLayout_2.addWidget(self.btnHelp)
spacerItem = QtWidgets.QSpacerItem(20, 40, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding)
self.verticalLayout_2.addItem(spacerItem)
self.gridLayout.addLayout(self.verticalLayout_2, 0, 1, 1, 1)
self.tedtMod = QtWidgets.QPlainTextEdit(self.centralwidget)
self.tedtMod.setObjectName("tedtMod")
self.gridLayout.addWidget(self.tedtMod, 1, 0, 1, 1)
self.gridLayout_2.addLayout(self.gridLayout, 0, 0, 1, 1)
MainWindow.setCentralWidget(self.centralwidget)
self.retranslateUi(MainWindow)
QtCore.QMetaObject.connectSlotsByName(MainWindow)
# ------------------------------------------------
# UI 이벤트 설정
# ------------------------------------------------
self.btnRun.clicked.connect(self.btnRun_clicked)
self.btnHelp.clicked.connect(self.btnHelp_clicked)
QtWidgets.qApp.focusChanged.connect(self.on_focusChanged)
def retranslateUi(self, MainWindow):
_translate = QtCore.QCoreApplication.translate
MainWindow.setWindowTitle(_translate("MainWindow", "Alt 속성 생성기"))
self.tedtOri.setPlainText(_translate("MainWindow", hintword))
self.btnRun.setText(_translate("MainWindow", "Alt 속성 생성"))
self.groupBox.setTitle(_translate("MainWindow", "Alt 속성이 이미 존재할 경우"))
self.rad1.setText(_translate("MainWindow", "변경 안 함"))
self.rad2.setText(_translate("MainWindow", "바꾸기"))
self.groupBox_3.setTitle(_translate("MainWindow", "생성 후 이미지 설명"))
self.rad3.setText(_translate("MainWindow", "그대로 두기"))
self.rad4.setText(_translate("MainWindow", "지우기"))
self.groupBox_2.setTitle(_translate("MainWindow", "결과"))
self.labTotal.setText(_translate("MainWindow", "검색 이미지 : "))
self.labKeep.setText(_translate("MainWindow", "Alt 변경"))
self.labAlt.setText(_translate("MainWindow", "Alt 유지 : "))
self.labError.setText(_translate("MainWindow", "Alt 오류 : "))
self.btnHelp.setText(_translate("btnHelp", "사용법"))
self.rad1.setChecked(True)
self.rad3.setChecked(True)
self.rad1.setFocus()
def on_focusChanged(self, old, now):
txt = self.tedtOri.toPlainText()
if now == self.tedtOri:
if txt == hintword:
self.tedtOri.clear()
else:
if txt == "":
self.tedtOri.setPlainText(hintword)
def btnRun_clicked(self):
# 결과 초기화
cTotal = 0; cAlt = 0; cKeep = 0; cError = 0
# 변경할 포스트 html을 변수화
txt = self.tedtOri.toPlainText()
if txt == hintword:
return
imgs = re.findall('\[##_Image.*?_##\]', txt) # [##_Image ~~ ] 형식 찾기
for img in imgs:
cTotal += 1
preimg = img
# 기존에 alt 속성이 있는지 확인
prealt = re.search('alt=".*?"', img)
if prealt != None and len(prealt.group()) <= 6:
# alt 속성이 있지만 공백일 경우
img = img.replace(prealt.group(),'')
elif prealt != None and len(prealt.group()) > 6:
if self.rad1.isChecked():
cKeep += 1
continue # 다음으로
elif self.rad2.isChecked():
img = img.replace(prealt.group(),'')
# alt 속성 입력
rpoint = re.search('\"\|.*?\|\|_##', img).group()
des = rpoint.strip('"|_#')
if des != '':
if self.rad4.isChecked():
img = re.sub('\"\|(.*)\|\|_##', r'" alt="\1"|||_##', img)
else:
img = re.sub('\"\|(.*)\|\|_##', r'" alt="\1"|\1||_##', img)
cAlt += 1
elif des == '':
# 이미지 설명이 공백일 경우
img = re.sub('\"\|(.*)\|\|_##', r'" alt="■■이미지 설명이 비어있습니다■■"|\1||_##', img)
cError += 1
txt = txt = txt.replace(preimg,img,1)
self.tedtMod.setPlainText(txt)
self.bulletin(cTotal, cAlt, cKeep, cError)
def btnHelp_clicked(self):
webbrowser.open('https://tae-di.tistory.com/16')
def bulletin(self, a, b, c, d):
self.labTotal.setText("검색 이미지 : " + str(a))
self.labAlt.setText("Alt 변경 : " + str(b))
self.labKeep.setText("Alt 유지 : " + str(c))
self.labError.setText("Alt 오류 : " + str(d))
if __name__ == "__main__":
import sys
app = QtWidgets.QApplication(sys.argv)
MainWindow = QtWidgets.QMainWindow()
ui = Ui_MainWindow()
ui.setupUi(MainWindow)
MainWindow.show()
sys.exit(app.exec_())
반응형
티스토리 아이디로 코멘트를 남기려면
여기를 눌러주세요!