[미니프로젝트] 스팀 신작 알리미 봇

seulzzang·2022년 9월 21일
0

프로젝트

목록 보기
1/1
post-thumbnail

금요일에 있을 프로젝트 발표에 도움이 될 것 같아 파이썬/크롤링파이썬/RPA의 내용들을 종합하여 글을 작성하고자 한다.
사실 정확하게는 스팀 신작 알리미 봇(근데 시스템 요구사항을 곁들인) 이지만 아침에 정기적으로 스팀의 신작을 알려주는 기능을 하는 것이 더 메인인것 같아서.. 처음에 내가 생각했던 방향과는 다르지만ㅎㅎ
프로젝트..라고하기엔 너무 소소한 기능이라 미니프로젝트라고 명명함.

📍스팀이란


스팀(영어: Steam)은 밸브 코퍼레이션에서 개발한 디지털 관리 멀티플레이어 플랫폼이다. 처음의 스팀 서비스는 2003년 9월 12일 시작되어 현재에도 서비스 되고 있으며, 일인칭 슈팅 게임부터 롤플레잉 게임, 레이싱 게임 그리고 독립 게임까지 다양한 게임을 디지털로 관리하며 배급한다. 테이크투 인터랙티브, 락스타 게임즈, 에이도스 인터랙티브, 인트로버전 소프트웨어, 스트레티지 퍼스트, 팝캡 게임즈, 캡콤, 이드 소프트웨어, THQ, 일렉트로닉 아츠, 유비소프트, 2K 게임즈, 워너 브라더스, 액티비전, 에픽 게임즈 등이 스팀에서 게임을 판매하고 있다.

수많은 게임이 이용 가능하며, 2억 명의 사람들이 가입, 동시접속자는 약 1000 ~ 1300 만 규모이다. 2010년 3월 8일에는 macOS도 지원하기 시작하였다. 2013년 2월 14일부터 우분투를 비롯한 리눅스에서도 플레이가 가능해졌다. (출처: 위키백과 - 스팀(서비스))

스팀게임으로 유명한것이 최근들어서는 폴가이즈, 어몽어스 이런것들이 있을 것이고 스팀의 인지도가 대중들 사이에서도 높아진건 2017년에 배틀그라운드를 서비스하기 시작하면서..인것 같다! 아마 게임에 관심없고 게임을 잘 모르는 사람들은 스팀이 뭔지 잘 모를 것 같은데, 아마 배틀그라운드~ 하면 알지 않을까.. (나는 살면서 게임에 한번도 관심이 없어봤던 적이 없어서 게임이 취미가 아닌 사람들의 견해를 잘 모름..)

📍주제

1. 개발목적

프로젝트 개발 초기의 목적

처음에는 스팀의 게임들을 시스템요구사항별로 볼 수 있다면 좋지않을까? 라는 생각에서 시작했다.
스팀의 카테고리에 들어가보면 장르별로, 게임패드는 이용가능한지, 멀티플레이인지, 맥인지 윈도우인지..만 구분할 수 있게 해뒀고 게임할때 가장 중요한 부분인 그래픽카드나 메모리에 대해서 구분하는 방법은 없길래 착안해낸 주제이다. 그래서 권장되는 시스템 요구사항별로 어떤 게임이 있는지, 내 컴퓨터사양에 플레이할 수 있는 게임이 무엇인지를 구별해주는 작은 프로그램을 개발하려고 했다.
근데.. 치명적인 문제점이 있었다. 개발사마다 게임마다 시스템 요구사항을 적는 법이 달랐다. 게임을 하기위해서 가장 중요한 컴퓨터부품이 그래픽카드라고 생각하는데, 그 부분에서도 어떤 게임은 Nvidia GTX 960 (4GB) or AMD Radeon Pro 570 (4GB) or comparable 이렇게, 어떤 게임은 GTX1060/RX5500XT 이렇게만.. 어떤게임은 또 NVIDIA® GeForce® GTX 1050 이렇게..ㅎ 각 게임마다 그래픽카드를 표기해서 넣는 방법이 달랐다. 데이터를 전처리하는 과정이 나같은 응애코더에게는 하기 힘들다는 생각이 들었다. 강사님도 이런 방향으로 가길 원하셨지만 나는 결국 난이도를 존나게 낮추기로 결심함..

2. 메인기능

(1) 스팀홈페이지 크롤링

결국은 이런 방향으로 틀었다. 스팀 스마트폰 앱에서도 이 기능 까지는 제공하지 않는 걸로 알고 있다. 찜목록에 있는 아이템이 세일을 시작하면 그정도 알림까지만 받아봤기 때문에.. 사실 아무리 게임을 좋아하는 사람이더라도 스팀의 모든 신작을 알림받고 싶어하진 않을 것 같지만..;; 어쨌든. 내가 원하는 방향은 하루에 한번 스팀의 신작을 텔레그램 메시지로 전송받는 것이었다.
그러기 위해선 신규 출시 인기 제품에서 각 게임별로 app id를 수집해야 했다.👉[파이썬/크롤링] 스팀홈페이지 크롤링(1)
이후 수집한 app id를 바탕으로 그 게임별로 시스템 요구사항을 크롤링하면 끝. 👉[파이썬/크롤링] 스팀홈페이지 크롤링(2)
애석하게도 스팀의 app id에는 일정한 규칙이 없었다. 숫자가 일정하게 늘어나는 것도 아니고 그냥 무작위로 app id를 부여하는 듯 했다. 그래서 나는 새로운 app id를 수집하기 위해서는 containment test를 진행해야 했다. 내가 정보를 업데이트하는 방식은 id_list를 받아놓고 새로 크롤링할 시 id_list에 없는 app id는 신작으로 간주해서 new_id로 저장해주고 갱신해주는 방식으로 하였다. 👉[파이썬/크롤링] 스팀홈페이지 크롤링 (4)

(2) 텔레그램 메시지 전송

이후에 이렇게 저장된 정보들로 텔레그램 메시지를 전송시키기만 하면 끝!
👉[파이썬/RPA] 텔레그램

📍구조설명

[파이썬/크롤링] 스팀홈페이지 크롤링(3)

📍프로세스

2. 메인기능에서 설명했으므로 생략

📍앞으로의 방향

1. 개발초기 목적으로 개발하기

위에 언급했다시피 이 방향으로 미니프로그램을 개발하는 것도 좋을 것 같다.

2. 다수의 사용자들 상대로

현재는 봇이 나와의 채팅에서만 작동을 한다. telegram_main.py에서 내 챗 아이디로만 오게 설정을 해놨기 때문이다. 용아맥 알리미처럼(현재는 관짝갔지만) 이 봇을 추가한 상대들에게 정기적으로 메시지를 전송하는 방향으로도 업데이트할 수 있을 것이다.

3. 스팀링크 첨부

링크 첨부를 해서 직접 들어가 볼 수 있게 하는것도 좋은 방향일듯 하다. 이 부분은 금요일 전에 추가될 수도 있을듯!

profile
중요한 것은 꺾이지 않는 마음

0개의 댓글