[개발이야기#043] 내가 해보고 싶은 것 - 한국 스팀잇 M2E 사용자 모임 글 수집하기 - 게시글 정리하기
1 comment
안녕하세요 가야태자 @talkit 입니다.
관련글
[개발이야기#028] 내가 해보고 싶은 것 - 자동 보팅 프로그램 SQLite vs DuckDB [postingcuration]
[개발이야기#029] 내가 해보고 싶은 것 - 자동 보팅 프로그램 사용자 및 포스트 테이블 생성하기 [postingcuration]
[개발이야기#031] 내가 해보고 싶은 것 - 자동 보팅 프로그램 사용자 등록 프로그램 작성하기 [postingcuration]
[개발이야기#032] 내가 해보고 싶은 것 - 자동 보팅 프로그램 사용자 게시글 수집기 작성하기 [postingcuration]
[개발이야기#034] 내가 해보고 싶은 것 - 포스팅 큐레이션 글을 자동으로 정리해보자 [postingcuration]
[개발이야기#034] 내가 해보고 싶은 것 - 포스팅 큐레이션 글 목록을 자동 포스팅 하기 [postingcuration]
[개발이야기#035] 내가 해보고 싶은 것 - 자동 보팅 프로그램 하루에 한번 보팅하는 프로그램[postingcuration]\
[개발이야기#036] 내가 해보고 싶은 것 - 자동 보팅 프로그램 스케쥴러 프로그램 [postingcuration]
[개발이야기#037] 내가 해보고 싶은 것 - 자동 보팅 프로그램 정리 [postingcuration]
[개발이야기#040] 내가 해보고 싶은 것 - 한국 스팀잇 M2E 사용자 모임 글 수집하기
[개발이야기#041] 내가 해보고 싶은 것 - 한국 스팀잇 M2E 사용자 모임 글 수집하기 - 사용자 등록
[개발이야기#042] 내가 해보고 싶은 것 - 한국 스팀잇 M2E 사용자 모임 글 수집하기 - 게시글 수집하기
머릿말
지난 번 글에서는 게시글을 수집하는 프로그램을 마리아 디비 용으로 수정 했습니다. 이번에는 게시글을 정리하는 프로그램을 마리아 디비용으로 수정 하겠습니다.
지난 번글인 #034에 해당하는 내용입니다. DuckDB를 이용해서 진행 했었는데 그걸 마리아 디비로 볔경하고, 내용을 kr-m2e 게시글로 수정해서 프로그램을 변경 하려고 합니다.
게시글 정리용 코드
import mariadb
import pandas as pd
from datetime import datetime
# MariaDB에 연결 (MariaDB를 사용)
def connect_db():
try:
conn = mariadb.connect(
user="steemit",
password="비밀번호",
host="서버주소",
database="steemit_postings"
)
return conn
except mariadb.Error as e:
print(f"Error connecting to MariaDB: {e}")
return None
# 로그 함수
def log(message):
print(f"{datetime.now()} - {message}")
# 특정 태그가 'kr-m2e'인 게시물 조회 함수
def fetch_kr_m2e_posts(conn):
try:
# 사용자별로 'kr-m2e' 메인 태그를 가진 게시물 조회 (최근 7개의 글만)
query = """
SELECT user_id, post_id, title, posting_date
FROM postings
WHERE main_tag = 'kr-m2e'
ORDER BY user_id, posting_date DESC
"""
df = pd.read_sql(query, conn)
return df
except Exception as e:
log(f"An error occurred while fetching posts: {e}")
return None
# Markdown 생성 함수
def generate_markdown(df):
if df is None or df.empty:
return "No posts found with the 'kr-m2e' tag."
markdown_lines = ["# Posts with 'kr-m2e' Tag (Recent 7 posts per user)", ""]
# 사용자별로 정리하여 최근 7개의 글만 표시
grouped = df.groupby('user_id')
for user_id, group in grouped:
markdown_lines.append(f"## @{user_id}")
recent_posts = group.head(7) # 각 사용자별 최근 7개 글 선택
for _, row in recent_posts.iterrows():
post_url = row['post_id']
title = row['title']
posting_date = row['posting_date']
markdown_lines.append(f"- [{title}]({post_url}) (Posted on: {posting_date})")
markdown_lines.append("") # 사용자별 빈 줄 추가
return "\n".join(markdown_lines)
def save_markdown(content):
# 현재 날짜를 파일 이름에 추가
today_str = datetime.now().strftime('%Y-%m-%d')
filename = f"kr-m2e-posting-{today_str}.md"
try:
with open(filename, 'w', encoding='utf-8') as f:
f.write(content)
log(f"Markdown file '{filename}' has been created successfully.")
except Exception as e:
log(f"An error occurred while writing the markdown file: {e}")
def main():
# MariaDB 연결
conn = connect_db()
if conn is None:
return
# 'kr-m2e' 메인 태그가 포함된 게시물 조회
df = fetch_kr_m2e_posts(conn)
# Markdown 생성
markdown_content = generate_markdown(df)
# 결과를 파일로 저장
save_markdown(markdown_content)
# 연결 종료
conn.close()
if __name__ == "__main__":
main()
코드 실행하기
파일 저장하기
select_posting_m2e.py
위와 같이 파일을 저장 합니다.
파이썬 가상환경 실행하기
conda activate steemitm2e
프로그램 실행하기
python select_posting_m2e.py
맺음말
이번에도 DuckDB에서 MariaDB로 데이터베이스를 변경하는 작업을 했습니다.
그리고, 불러오는 데이터를 #kr-m2e 관련 데이터로 만들어서 진행 합니다.
다음 글에서는 수집하고, 정리한 글을 자동으로 포스팅 하는 프로그램을 생성하겠습니다.
감사합니다.
Posted through the ECblog app (https://blog.etain.club)
Comments