본문 바로가기
카테고리 없음

상장알림 프로그램의 업그레이드

by 아재데이타사이언티스트 2025. 2. 14.

 

https://link.coupang.com/a/ceBgWU

 

쿠팡이 추천하는 노트북 관련 혜택과 특가

쿠팡이 추천하는 노트북 특가를 만나보세요. 로켓와우 회원은 다양한 할인과 무료 배송 및 반품 혜택도 누릴 수 있어요.

www.coupang.com

 

 

1️⃣ 디스코드 & 카카오톡 & 이메일 알림 추가

📌 목적:

  • 텔레그램 외에도 다양한 플랫폼에서 알람을 받을 수 있도록 확장
  • 사용자가 선호하는 플랫폼에서 실시간으로 신규 공시 확인 가능

📌 구현 방법:

디스코드(Discord) 알림 추가

  • Webhook을 이용하여 디스코드 채널에 메시지 전송
  • requests 라이브러리를 사용하여 POST 요청을 보내면 됨.
  • 예제 코드:
  • python
  • import requests

    DISCORD_WEBHOOK_URL = "YOUR_DISCORD_WEBHOOK_URL"

    def send_discord_alert(message):
        data = {"content": message}
        requests.post(DISCORD_WEBHOOK_URL, json=data)

카카오톡 알림 추가

  • 카카오톡 메시지 API를 활용하여 알림 메시지 전송
  • 카카오 개발자 계정 등록 후, REST API 키 발급 필요
  • access_token을 이용해 메시지를 보낼 수 있음.
  • 예제 코드:
  • python
  • import requests

    KAKAO_TOKEN = "YOUR_ACCESS_TOKEN"

    def send_kakao_alert(message):
        url = "https://kapi.kakao.com/v2/api/talk/memo/default/send"
        headers = {"Authorization": f"Bearer {KAKAO_TOKEN}"}
        data = {
            "template_object": json.dumps({"object_type": "text", "text": message, "link": {"web_url": "https://upbit.com"}})
        }
        requests.post(url, headers=headers, data=data)

이메일 알림 추가

  • SMTP 서버를 이용하여 이메일로 공시 알림 전송
  • smtplib 라이브러리를 사용
  • 예제 코드:
  • python
  • import smtplib
    from email.mime.text import MIMEText

    SMTP_SERVER = "smtp.gmail.com"
    SMTP_PORT = 587
    EMAIL_SENDER = "your_email@gmail.com"
    EMAIL_PASSWORD = "your_email_password"
    EMAIL_RECEIVER = "receiver_email@gmail.com"

    def send_email_alert(subject, message):
        msg = MIMEText(message)
        msg["Subject"] = subject
        msg["From"] = EMAIL_SENDER
        msg["To"] = EMAIL_RECEIVER

        server = smtplib.SMTP(SMTP_SERVER, SMTP_PORT)
        server.starttls()
        server.login(EMAIL_SENDER, EMAIL_PASSWORD)
        server.sendmail(EMAIL_SENDER, EMAIL_RECEIVER, msg.as_string())
        server.quit()

📌 필요 기술:

  • requests (디스코드, 카카오톡 API)
  • smtplib (이메일 전송)
  • 웹훅(Webhook) 활용

2️⃣ MySQL DB에 저장하여 기록 관리

📌 목적:

  • 공시 데이터 기록을 저장하여 이전 공시와 비교 가능
  • 로그 및 히스토리 관리 → 언제 어떤 공시가 나왔는지 분석 가능

📌 구현 방법:

MySQL 테이블 생성

CREATE DATABASE notice_alert;
USE notice_alert;

CREATE TABLE notices (
    id INT AUTO_INCREMENT PRIMARY KEY,
    source VARCHAR(50), -- (업비트, 빗썸, 코인원 등)
    title TEXT,
    link TEXT,
    timestamp TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

파이썬에서 MySQL에 데이터 저장

  • mysql-connector-python 라이브러리 사용
  • 새로운 공시가 감지되면 데이터베이스에 저장
  • 예제 코드:
  • python
  • import mysql.connector

    def save_notice(source, title, link):
        conn = mysql.connector.connect(host="localhost", user="root", password="password", database="notice_alert")
        cursor = conn.cursor()
        sql = "INSERT INTO notices (source, title, link) VALUES (%s, %s, %s)"
        cursor.execute(sql, (source, title, link))
        conn.commit()
        conn.close()

📌 필요 기술:

  • MySQL 설치 및 설정
  • mysql-connector-python 라이브러리 활용
  • 공시 데이터 저장 및 조회 로직 추가

3️⃣ 더 많은 거래소(코인원, 코빗 등) 지원

📌 목적:

  • 업비트 & 빗썸 외에도 코인원, 코빗, 바이낸스 등 거래소의 공시 정보를 추가 감지
  • 다양한 거래소의 신규 상장 정보를 빠르게 확보

📌 구현 방법:

코인원 공시 크롤링 (예시)

python

COINONE_NOTICE_URL = "https://coinone.co.kr/notice/"

def get_coinone_latest_notice():
    response = requests.get(COINONE_NOTICE_URL)
    soup = BeautifulSoup(response.text, "html.parser")
    latest_notice = soup.select_one(".notice-list a")
    if latest_notice:
        title = latest_notice.text.strip()
        link = "https://coinone.co.kr" + latest_notice["href"]
        print(f"[코인원] {title} → {link}")

추가 거래소 리스트

📌 필요 기술:

  • BeautifulSoup을 활용한 웹 크롤링
  • 다양한 거래소 API 활용

4️⃣ 크론탭을 이용해 주기적으로 실행 (서버 환경일 경우)

📌 목적:

  • 프로그램을 자동 실행하여 지속적으로 공시 감지
  • 수동 실행 없이 서버에서 주기적으로 실행

📌 구현 방법:

크론탭 설정 (리눅스 환경)

  1. 터미널에서 크론탭 편집
  2. bash
  3. crontab -e
  4. 매 1분마다 실행하도록 설정
  5. bash
  6. * * * * * /usr/bin/python3 /home/user/notice_alert.py

📌 필요 기술:

  • Linux cron 스케줄러
  • 백그라운드 실행 (nohup 또는 systemd 활용)

5️⃣ UI 추가 (웹 대시보드 형태로 모니터링)

📌 목적:

  • 웹 대시보드를 만들어 공시 정보를 시각적으로 확인
  • 신규 공시 발생 시 알람을 웹사이트에서 실시간 확인

📌 구현 방법:

Flask를 활용한 간단한 대시보드

python

from flask import Flask, render_template
import mysql.connector

app = Flask(__name__)

@app.route("/")
def home():
    conn = mysql.connector.connect(host="localhost", user="root", password="password", database="notice_alert")
    cursor = conn.cursor()
    cursor.execute("SELECT * FROM notices ORDER BY timestamp DESC LIMIT 10")
    notices = cursor.fetchall()
    conn.close()
    return render_template("index.html", notices=notices)

if __name__ == "__main__":
    app.run(debug=True)

HTML 대시보드 예제 (templates/index.html)

html

<!DOCTYPE html>
<html>
<head><title>Crypto Notice Alerts</title></head>
<body>
    <h1>🚀 신규 공시 리스트</h1>
    <ul>
        {% for notice in notices %}
            <li>📢 {{ notice[1] }} - <a href="{{ notice[2] }}">{{ notice[2] }}</a></li>
        {% endfor %}
    </ul>
</body>
</html>

📌 필요 기술:

  • Flask + HTML/CSS 활용
  • MySQL 데이터 연동

 


📌 결론

💡 위 기능을 하나씩 추가하면 더 강력한 실시간 신규 상장 공시 알림 시스템이 완성됩니다!