Skip to content

제 μ·¨λ―ΈλŠ” 🚲 μžμ „κ±° 타기 🚲 μž…λ‹ˆλ‹€.

Notifications You must be signed in to change notification settings

pkeugine/Seoul-Bike-Helper

Repository files navigation

Seoul-Bike-Helper (따릉봇)

μ œκ°€ 따릉이λ₯Ό νƒˆ λ•Œ μ‚¬μš©ν•˜κΈ° μœ„ν•œ 따릉이 ν—¬νΌμž…λ‹ˆλ‹€.
μΆ”κ°€ κΈ°λŠ₯ μ•„μ΄λ””μ–΄λ‚˜ 도움이 ν•„μš”ν•˜λ‹€λ©΄ [email protected] 으둜 μ—°λ½μ£Όμ„Έμš”.
챗봇은 μ„œλ²„(제 λ…ΈνŠΈλΆ)을 켜 놓고 μžˆμ§€ μ•ŠμœΌλ©΄ μž‘λ™ν•˜μ§€ μ•Šμ„ 수 μžˆμŠ΅λ‹ˆλ‹€.πŸ˜…

ꡬ쑰

κΈ°λŠ₯

μ£Όμ†Œ 기반 μ‹€μ‹œκ°„ λŒ€μ—¬μ†Œ 정보 제곡

λ„λ‘œλͺ… μ£Όμ†Œλ„ κ°€λŠ₯ν•©λ‹ˆλ‹€.

즐겨찾기 λŒ€μ—¬μ†Œ μ‹€μ‹œκ°„ 정보 제곡

μ„ νƒν•œ 따릉이 λŒ€μ—¬μ†Œ μœ„μΉ˜, 경둜 제곡

일간, μ£Όκ°„, μ›”κ°„ μ‚¬μš©μž 정보 제곡

  • μ£Όν–‰ μ‹œκ°„
  • μ£Όν–‰ 거리
  • μ†ŒλΉ„ 칼둜리
  • νƒ„μ†Œ 절감 효과

μ£Όκ°„/μ›”κ°„ 따릉이 이용 λž­ν‚Ή 및 등락 폭 ν‘œμ‹œ

μ‹€ν–‰ 방법

# ν•„μš”ν•œ νŒ¨ν‚€μ§€ μ„€μΉ˜
pip install -r requirements.txt

# μ„œλ²„ μ‹€ν–‰
python3 main.py

# cron ν™œμ„±ν™”
flask crontab add

# cron 제거
crontab -r
  • 크둀링을 μœ„ν•΄ ChromeDriverκ°€ μ„€μΉ˜λ˜μ–΄ μžˆμ–΄μ•Όν•©λ‹ˆλ‹€.
  • λ§Œμ•½ Chrome λΈŒλΌμš°μ €λ₯Ό μ‚¬μš©ν•˜μ§€ μ•ŠλŠ”λ‹€λ©΄ Chrome도 μ„€μΉ˜ν•΄μ•Ό ν•©λ‹ˆλ‹€.
  • python3κ°€ ν•„μš”ν•©λ‹ˆλ‹€. μ €λŠ” 3.8.9 버전을 μ‚¬μš©ν–ˆμŠ΅λ‹ˆλ‹€.

챗봇 연동 방법

λ§Œμ•½ μ„œλ²„λ₯Ό 챗봇과 μ—°κ²°ν•˜κ³  μ‹Άλ‹€λ©΄ μΉ΄μΉ΄μ˜€ν†‘ 채널과 챗봇이 ν•„μš”ν•©λ‹ˆλ‹€.
따릉봇은 무료둜 μš΄μ˜ν•  수 μžˆλŠ” κΈ°λŠ₯λ§Œμ„ ν™œμš©ν–ˆμŠ΅λ‹ˆλ‹€.
μœ μ €μ˜ μ‹€μ‹œκ°„ μœ„μΉ˜λ₯Ό μ–»κ³  μ‹Άλ‹€λ©΄ 카카였 λΉ„μ¦ˆλ‹ˆμŠ€ μ—­μ‹œ ν™œμš©ν•΄μ•Ό ν•˜λŠ”λ°, μ΄λŠ” μ‚¬μ—…μž 등둝이 μš°μ„ μ‹œ λ˜μ–΄μ•Ό ν•©λ‹ˆλ‹€ πŸ₯²

μ‚¬μš©μž λ°œν™”λ₯Ό λ°›μœΌλ €λ©΄ 이λ₯Ό 챗봇(카카였i λΉŒλ”)μ—μ„œ ꡬ뢄해야 ν•˜λŠ”λ°, λ‹€μ–‘ν•œ ν˜•νƒœλ‘œ λ“€μ–΄μ˜¬ 수 μžˆλŠ” μ£Όμ†Œλ₯Ό μ²˜λ¦¬ν•˜λŠ” 것이 ν¬μΈνŠΈμž…λ‹ˆλ‹€.
λ‹€μŒκ³Ό 같이 μ£Όμ†Œλ₯Ό μ„Έ 가지 λ°©μ‹μœΌλ‘œ λ‚˜λˆ„μ–΄ 받을 수 μžˆλ„λ‘ ν•˜λ©΄ λŒ€μ—¬μ†Œ 검색 κΈ°λŠ₯을 ꡉμž₯히 νŽΈλ¦¬ν•˜κ²Œ μ‚¬μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€: Screen Shot 2022-07-12 at 4 13 52 AM

이러면 λͺ¨λ“  ν˜•νƒœμ˜ μ£Όμ†Œλ₯Ό μ²˜λ¦¬ν•  수 있게 λ©λ‹ˆλ‹€:
Screen Shot 2022-07-12 at 4 23 51 AM

μ„œμ΄ˆκ΅¬λ‚˜ μ’…λ‘œκ΅¬μ²˜λŸΌ 'ꡬ' λ‹¨μœ„, 그리고 'μ„œμšΈνŠΉλ³„μ‹œ' μ—­μ‹œ μ²˜λ¦¬ν•  수 μžˆμ§€λ§Œ μ‹œκ°„μ΄ 였래 κ±Έλ €μ„œ μΉ΄μΉ΄μ˜€ν†‘μœΌλ‘œλΆ€ν„° 응닡이 차단 λ‹Ήν•  수 μžˆμŠ΅λ‹ˆλ‹€.
λ”°λΌμ„œ 'μ„œμšΈμ‹œ', 'μ„œμšΈνŠΉλ³„μ‹œ'λŠ” λ”°λ‘œ 응닡을 λ§Œλ“€κ³  λ‹€μŒκ³Ό 같은 μ„€λͺ…을 챗봇에 μΆ”κ°€ν•˜μ˜€μŠ΅λ‹ˆλ‹€:
Screen Shot 2022-07-12 at 4 41 49 AM

repository 정보

main.py

λ”°λ¦‰λ΄‡μ˜ μ„œλ²„ μ½”λ“œμž…λ‹ˆλ‹€.
μ•„λž˜ 정보λ₯Ό μƒμ„±ν•˜μ—¬ μ†ŒμŠ€μ½”λ“œμ— μΆ”κ°€ν•΄μ•Ό μ„œλ²„κ°€ μ‹€ν–‰λ©λ‹ˆλ‹€:

  • openapi 인증킀
  • 따릉이 계정과 λΉ„λ°€λ²ˆν˜Έ
  • 카카였맡 api 인증 정보

{your-μ–΄μ©Œκ΅¬-μ €μ©Œκ΅¬} ν˜•νƒœλ‘œ λ˜μ–΄μžˆμ–΄μ„œ your을 κ²€μƒ‰ν•˜μ—¬ μœ„μΉ˜λ₯Ό μ°ΎμœΌμ‹€ 수 μžˆμŠ΅λ‹ˆλ‹€.

station_info.csv

μ„œμšΈμ— μžˆλŠ” λͺ¨λ“  따릉이 λŒ€μ—¬μ†Œμ˜ 정보가 λ‹΄κ²¨μžˆμŠ΅λ‹ˆλ‹€.
μ£Όμ†Œλ₯Ό ν™œμš©ν•˜κΈ° μœ„ν•΄ ν•„μš”ν•©λ‹ˆλ‹€.
openapi λ₯Ό 톡해 λ°›λŠ” μ •λ³΄μ΄λ―€λ‘œ μ‹€ν–‰ν•˜κΈ° μ „ μ΅œμ‹ ν™”ν•˜λŠ” 것을 ꢌμž₯ν•©λ‹ˆλ‹€.
μ˜ˆμ‹œλ‘œ 2022λ…„ 6μ›” μ–΄λŠ ν•œ μ‹œμ μ˜ 정보λ₯Ό λ„£μ—ˆμŠ΅λ‹ˆλ‹€.

live_station_info.csv

μ‹€μ‹œκ°„ 따릉이 λŒ€μ—¬μ†Œ μ •λ³΄μž…λ‹ˆλ‹€.
λŒ€μ—¬ κ°€λŠ₯ν•œ 따릉이 수, λŒ€μ—¬μ†Œ μœ„λ„, λŒ€μ—¬μ†Œ 경도, λŒ€μ—¬μ†Œ 이름을 μ–»κΈ° μœ„ν•΄ μ‚¬μš©λ©λ‹ˆλ‹€.
cron 을 ν™œμ„±ν™”ν•˜λ©΄ 5뢄에 ν•œ λ²ˆμ”© μ΅œμ‹ ν™”λ©λ‹ˆλ‹€.
μ˜ˆμ‹œλ‘œ 2022λ…„ 6μ›” μ–΄λŠ ν•œ μ‹œμ μ˜ 정보λ₯Ό λ„£μ—ˆμŠ΅λ‹ˆλ‹€.

***_info_history.csv, ***_rank_hisotry.csv

μœ μ €μ˜ 주행정보와 λž­ν‚Ήμ„ λ‹΄λŠ” νŒŒμΌμž…λ‹ˆλ‹€. μ˜ˆμ‹œλ‘œ 정보 λͺ‡ 개 λ„£μ—ˆμŠ΅λ‹ˆλ‹€.
cron 을 ν™œμ„±ν™”ν•˜λ©΄ 정보가 각각의 주기에 맞게 μ΅œμ‹ ν™”λ©λ‹ˆλ‹€.

requirements.txt

μ„œλ²„λ₯Ό μ‹€ν–‰ν•˜κΈ° μœ„ν•΄ ν•„μš”ν•œ νŒ¨ν‚€μ§€ μ •λ³΄μž…λ‹ˆλ‹€.
venv ν™˜κ²½μ„ λ§Œλ“€ λ•Œ 이 파일둜 ν•„μš”ν•œ λͺ¨λ“  νŒ¨ν‚€μ§€λ₯Ό λ‹€μš΄ 받을 수 μžˆμŠ΅λ‹ˆλ‹€.

μΆ”κ°€ μ„€λͺ…

μ‹€μ‹œκ°„ λŒ€μ—¬μ†Œ 정보λ₯Ό cron 으둜 μ΅œμ‹ ν™” ν•˜λŠ” 이유

openapi λ₯Ό 톡해 λŒ€μ—¬μ†Œ 정보λ₯Ό 가지고 μ˜€λŠ” 경우 λ‹€μŒκ³Ό 같은 λΆˆνŽΈν•¨μ΄ μžˆμŠ΅λ‹ˆλ‹€:

  • open api 에 νŠΉμ • λŒ€μ—¬μ†Œ μ •λ³΄λ§Œ μš”μ²­ν•  수 μ—†μŒ
  • open api 에 λŒ€μ—¬μ†Œ 수λ₯Ό 보내면 κ·Έ 수만큼의 정보가 λ‚˜μ˜€λŠ”λ°, μ •λ ¬λ˜μ–΄ μžˆμ§€λ„ μ•ŠμŒ
  • ꡳ이 λŒ€μ—¬μ†Œ 정보 api κ°€ 두 κ°œμž„
  • κ·Έλž˜μ„œ μ‚¬μš©μžμ˜ μš”μ²­μ΄ 올 λ•Œλ§ˆλ‹€ μ΅œμ‹  정보λ₯Ό μ œκ³΅ν•˜λ €λ©΄ open api 에 λͺ¨λ“  λŒ€μ—¬μ†Œμ— λŒ€ν•œ 정보λ₯Ό μš”μ²­ν•˜κ³  그것을 가곡해야함
  • ν•œ λ²ˆμ— 1000 개의 λŒ€μ—¬μ†Œ μ •λ³΄λ§Œ μš”μ²­ κ°€λŠ₯ (λŒ€μ—¬μ†ŒλŠ” 총 2600κ°œκ°€ λ„˜μŒ)
  • μ‘λ‹΅μ˜ 각 λŒ€μ—¬μ†Œλ§ˆλ‹€ 카카였맡 정보와 μ‚¬μš©μžμ—κ²Œ 보여쀄 사진을 λ§Œλ“€μ–΄μ•Ό 함
  • 카카였 챗봇은 μ„œλ²„λ‘œλΆ€ν„°μ˜ 응닡이 3~4μ΄ˆκ°€ λ„˜μ–΄κ°€λŠ” 경우 닡변을 포기함

이런 ν•˜λ“œμ½”μ–΄ν•œ... ν™˜κ²½μ΄λ‹€λ³΄λ‹ˆ λŒ€μ—¬μ†Œμ˜ μ •λ³΄λŠ” μ‚¬μš©μž μš”μ²­κ³ΌλŠ” λ³„κ°œλ‘œ μ΅œμ‹ ν™”ν•˜λŠ” 방법을 νƒν–ˆμŠ΅λ‹ˆλ‹€.
따릉이 λŒ€μ—¬μ†Œ νŠΉμ„±μƒ 5λΆ„ 사이에 κ·Ήλ‹¨μ μœΌλ‘œ λŒ€μ—¬ κ°€λŠ₯ μžμ „κ±° μˆ˜κ°€ λ°”λ€Œμ§€ μ•ŠμœΌλ―€λ‘œ μΆ©λΆ„νžˆ μ‹ λ’°ν•  수 μžˆλŠ” 정보라 νŒλ‹¨ν–ˆμŠ΅λ‹ˆλ‹€.

thanks to

kakaomap api κ΄€λ ¨ 아이디어 및 도움을 μ€€ μ•ˆμŠΉμˆ˜(@ssahn0806)λ‹˜ κ°μ‚¬ν•©λ‹ˆλ‹€ πŸ™

About

제 μ·¨λ―ΈλŠ” 🚲 μžμ „κ±° 타기 🚲 μž…λ‹ˆλ‹€.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages