import os #フォルダの中身を探る
import sys #プログラム強制終了用
from wordpress_xmlrpc import Client, WordPressPost
from wordpress_xmlrpc.methods.posts import GetPosts, NewPost
from wordpress_xmlrpc.methods.users import GetUserInfo
# スニペット中のendを入力するまで繰り返し書かせる子プログラムの定義
def write_roop():
i=1
while True:
text=input('%s:' % i)
if text=='end':
break
else:
f.write('%s\n' % text)
i+=1
continue
# ディレクトリ選択
place=["Desktop","User"]
print("-----------------------")
for i in range(int(len(place))):
print("%s:%s" % (i,place[i]))
print("-----------------------")
while True:
select=input("どのディレクトリで作業しますか?:")
if select=="0":
directory="/Users/ユーザー名/Desktop"
break
elif select=="1":
directory="/Users/ユーザー名"
break
else:
continue
# どのアカウントを使用するか
account=["アカウント1","アカウント2"]
print("-----------------------")
for i in range(int(len(account))):
print("%s:%s" % (i,account[i]))
print("-----------------------")
while True:
page=input("どのアカウントで投稿しますか?:")
if page=="0":
url="アカウント1のURL"
username="アカウント1のユーザー名"
password="アカウント1ののパスワード"
break
elif page=="1":
url="アカウント2のURL"
username="アカウント2のユーザー名"
password="アカウント2ののパスワード"
break
else:
continue
while True: #最後の編集を続ける選択をした場合のループ
#書き始めを決定します
while True:
new=input('\n新規作成?(y/n):')
#新規作成を選んだ場合、タイトルを新たに決めて、ファイルを作成します
if new == "y":
while True:
title=input('タイトルを入力:')
if title=="":
print("タイトルが入力されていません。")
else:
break
break
#既存のファイルを開く場合、指定ディレクトリのフォルダからファイル一覧を出し、選択させます
elif new== "n":
files = os.listdir(directory)
while True:
for i in range(len(files)) : #フォルダ内のファイルリストを表示
print("%s:%s" % (i,files[i]))
#番号を入力させて、エラーが出なければbreakで次へ
try:
title=str(files[int(input("番号入力:"))]).replace(".txt","")
f=open("%s/%s.txt" % (directory,title),"r",encoding="utf-8")
print('''
-----------------------
ファイルの内容
-----------------------
''')
print(f.read())
print('''
-----------------------
-----------------------
''')
f.close()
break
#エラーが出れば(番号が違う、番号じゃないなど)ループさせる
except:
print("番号を入力してください")
break
#endと入力した場合、強制終了
elif new=="end":
sys.exit()
#yでもnでもendでもない入力の場合、ループさせる。
else:
continue
f=open("%s/%s.txt" % (directory,title),"a",encoding="utf-8")
#本文を繰り返し入力させる
while True:
content=input("文章を入力(or end):")
#endと打てば本文入力終了
if content=="end":
break
#見出し1
elif content=='#':
f.write('<h1>%s</h1>\n' % input("<h1>"))
print('</h1>')#視覚的な補助
#見出し2
elif content=='##':
f.write('<h2>%s</h2>\n' % input("<h2>"))
print('</h2>')#視覚的な補助
#見出し3
elif content=='###':
f.write('<h3>%s</h3>\n' % input("<h3>"))
print('</h3>')#視覚的な補助
#list
#見出し3
elif content=='li':
f.write('<li>%s</li>\n' % input("<li>"))
print('</>')#視覚的な補助
#pre
elif content=='pre':
f.write('<pre>')
print('<pre>')#視覚的な補助
write_roop()
f.write('</pre>\n')
print('</pre>')#視覚的な補助
#その他普通の文字列はそのまま書き込み
else:
f.write("%s\n" % content)
#最後にファイルを閉じる
f.close()
print("保存しました。")
#ワードプレスに投稿するかどうか
doupost=input('ワードプレスに投稿しますか?(y)')
if doupost=='y':
f=open("%s/%s.txt" % (directory,title),"r",encoding="utf-8")
#カテゴリー設定
category=[]
while True:
cat=str(input("カテゴリーを入力:"))
if cat=="end":
break
category.append(cat)
while True:
dp=input('下書き(draft)か公開(publish)を選択してください。(d/p)')
if dp=='p':
p_status='publish'
break
elif dp=='d':
p_status='draft'
break
else:
continue
print('投稿しています...Wait for a second...')
wp = Client('%s/xmlrpc.php' % url, username, password)
post = WordPressPost()
post.title = title
post.content = f.read()
post.terms_names = {'post_tag': [],'category': category}
post.status=p_status
wp.call(NewPost(post))
f.close()
print('投稿が完了しました。')
else:
print('投稿をやめました。')
#最後に、編集を続けるかどうかの条件。yで、最初に戻り、新規作成と既存のファイルの編集が出来る。
while True:
conti=input("編集を続けますか?(y/n)")
if conti=="y":
break
elif conti=="n":
print("作業を終了します。")
sys.exit()
else:
print("入力してください")
continue