Skip to content

hletrd/slopes

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1,100 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

전국 스키장 실시간 웹캠 뷰어

배포 날씨 업데이트 웹캠 링크 업데이트

preview

  • 전국 스키장의 실시간 웹캠 뷰를 제공합니다.
  • 전국 스키장의 실시간 날씨 정보를 제공합니다.
  • 본 사이트는 스키장에서 공식적으로 제공하는 서비스가 아니며, 각 스키장의 공식 웹캠 스트림을 중계하여 제공합니다. 스키장의 사정에 따라 웹캠 스트림은 일시적 또는 영구적으로 중단될 수 있습니다.

지원 스키장 및 웹캠 목록

경기권

곤지암리조트
  • 정상 휴게소
  • 정상부 슬로프
  • 중간 슬로프
  • 초중급 베이스
  • 중상급 베이스
지산 포레스트 리조트
  • 레몬 탑승장
  • 오렌지 / 뉴오렌지 탑승장
  • 5번 / 6번 슬로프
  • 블루 탑승장
  • 실버 탑승장
엘리시안 강촌
  • 유튜브 채널

강원권

비발디파크
  • 슬로프 전경
  • 발라드 상단
  • 발라드 하단
  • 재즈 상단
  • 재즈 하단
  • 테크노 상단
  • 테크노 하단
  • 블루스
  • 클래식
  • 레게
  • 펑키 상단
  • 펑키 하단
  • 힙합
  • 스키월드 정상
  • 스노위랜드1
  • 스노위랜드2
오크밸리
  • 스키광장
  • I 슬로프
  • G 슬로프
  • F 슬로프
  • 플라워리프트 하차장
웰리힐리파크
  • 알파
  • 베이스
  • 브라보
  • 정상 광장
  • 패밀리
  • 워터플래닛
휘닉스파크
  • 호크 / 스패로우
  • 도도
  • 불새마루
  • 베이스
  • 펭귄
  • 스노우 빌리지
알펜시아 리조트
  • 알펜시아 리조트 라이브캠
모나 용평
  • 발왕산 氣 스카이워크
  • 발왕산 천년주목숲길
  • 베이스 전경 / 레드 슬로프
  • 모나 용평 진입로
  • 옐로우 슬로프
  • 핑크 슬로프
  • 메가그린 슬로포
  • 골드 슬로프 전경
  • 골드 슬로프 정상
  • 레인보우 전경
  • 레인보우 파라다이스 입구
  • 피크 아일랜드
하이원리조트
  • 하이원탑 (제우스1 입구)
  • 하이원탑 (헤라2 입구)
  • 하이원탑 (아폴로1 입구)
  • 마운틴허브 (스노우월드 입구)
  • 마운틴허브 (아폴로3 입구)
  • 마운틴허브 (아테나2 입구)
  • 마운틴 베이스 (아테나 리프트)
  • 아테나2 하단
  • 밸리탑 (빅토리아1 입구)
  • 제우스2 합류구간
  • 밸리허브 (헤라 리프트 입구)
  • 밸리허브 (아폴로3 합류)
  • 밸리허브 (제우스3)
  • 제우스3 중단
  • 아폴로4 중단
  • 아폴로 베이스
  • 제우스3 하단
  • 밸리 베이스
오투리조트
  • 스키하우스
  • 오렌지
  • 버금마루
  • 으뜸마루
  • 4번 웹캠
  • 5번 웹캠
  • 6번 웹캠
  • 7번 웹캠

전라 및 경상권

무주리조트
  • 설천봉 정상
  • 설천상단슬로프
  • 모차르트, 미뉴에트
  • 폴카
  • 실크로드, 미뉴에트 하단
  • 만선봉 정상
  • 하이디하우스
  • 서역기행, 썬다운
  • 커넥션
  • 설천하우스
  • 만선하우스
에덴밸리리조트
  • 베이직
  • 슬로프 광장

로컬에서 돌리는 법

$ python3 server.py && open http://localhost:3001

Release notes

12-06

  • 영상 재생 재시도 버튼 추가
  • 동시 스트림 수 제한
  • 4분할 뷰 재생 시 다른 영상 일시정지되도록 수정
  • 영상 재생 시 백그라운드에서 재생중인 다른 오디오가 끊기지 않게 수정
  • 모바일에서 캡처 시 파일 다운로드가 아닌 공유로 연결되게 변경
  • 4분할 뷰에 캡처 및 PiP 추가
  • 4분할 뷰를 별개의 PWA로 분리
  • 영상 플레이할 때 백그라운드에서 재생되던 미디어 끊김 방지
    • PiP 모드일 때는 정책상 안 되는 것 같음.

12-02

  • 휘닉스파크 몽블랑 추가

11-23

  • 엘리시안, 알펜시아, 에덴벨리 링크 자동 업데이트 기능 추가
  • 오투리조트 카메라 4개 추가
  • 라이트 모드 추가
  • 4분할 뷰 추가

11-12

  • 재오픈 준비, 링크 자동 업데이트 액션 살림.

05-02

  • OpenWeatherMap 기반 날씨 데이터 추가

05-01

  • Video.js 및 Bootstrap Icon 경량화
  • 모든 리소스 및 데이터에 gzip 또는 brotli 압축 적용 완료.

04-30

  • 전반적인 사이트 코드 구조 개선 및 최적화
  • Git에서 고치면 알아서 minify 후 deploy되는 액션 작성 완료.
  • 날씨랑 웹캠 링크 정보는 서버에서 불러와서 저장함. (links.json, preview.png, weather.json, videos+ld.json, sitemap.xml)
    • 현재 전체 페이지 로드 용량 993kB, 리소스 포함 시 2.3MB 정도.
    • 무거운 리소스들
      • Pretendard font (484kB)
      • Video.js (202kB)
      • bootstrap-icons (131kB)

앞으로 할 일

기능

  • 비발디파크 영상 추가
    • 24/25 시즌 종료 후 영상 스트리밍 페이지가 사라져서 확인할 수 없는 상태
      • 이거 클라이언트 사이드에서만 막아놓은 거라 알아서 잘 해결함
    • 일단 추가해놓긴 했는데 매우 불안정함. 개선 필요.
      • 거의 되는 듯? 다만 서버 자체가 불안정한 문제는 있음.
    • 비발디파크는 굉장히 특이한 솔루션으로 영상을 스트리밍중이라 조금 답이 없는 상태.
    • SDK 자체가 한 페이지에서 여러 영상을 동시 재생하지 못하도록 되어 있음.
      • iframe을 쓰면 되긴 하는데 나중에 하는걸로..
      • 완료
  • 비발디파크 리버스 엔지니어링 및 기능 구현
    • Wesp JS SDK 웹소켓 프로토콜 분석 및 기능 구현
    • wss://skirds.daemyung.com:8081/wesp로 binary websocket 연결을 날린 뒤 모종의 로그인을 함
      • 로그인 요청이 없으면 서버가 웹소켓 연결을 닫아버림.
    • 웹캠 스트리밍 영상은 JFIF 스트림으로 날아옴.
  • 오투리조트 직접 스트리밍 지원
  • 날씨 지도 추가 (구상중)
    • 특정 지역에 핀을 추가해서 날씨를 확인할 수 있게
  • 날씨 예보 추가
  • 스트리밍 데이터 절약을 위해 모바일에서 자동재생 끄기 옵션 추가
  • 리프트 및 슬로프 오픈 정보
    • 이거 어떻게 자동화하지?
    • 일단 링크부터가 리조트마다 맘대로라 자동으로 긁어오기가 쉽지 않을 것 같음. 고민중.
      • 현황 페이지가 아닌 공지사항으로 오픈 정보를 올리는 리조트가 있음...
  • 리조트별 주요 정보 링크
    • 식당 등 편의시설
    • 장비 렌탈
    • 스키 레슨 정보 (보드 레슨은 안 넣어도 됨)
    • 셔틀 및 교통

성능 개선

  • Github Action 퍼포먼스 개선
    • 웹캠 링크 수집이 느려서 자주 업데이트하지 못하고 있음.
    • Self-hosted runner로 바꿔서 해결 완료
  • Repo commit 대신 다른 방법으로 데이터 서비스
    • 우선 서버에 파일을 저장하는 방식으로 셋업해놓긴 했는데 기본적인 목표가 stateless한 시스템을 만들자였기 때문에 맘에 들지는 않음.
    • 이럴거면 차라리 DB에 저장하는 게 맞지 않나?
  • HLS relay 셋업
    • 스키장 웹캠을 보는 사람이 늘어날수록 스키장의 트래픽 부하가 늘어날 것이므로 결국에는 본 서비스에서 프록시 서비스를 제공하여 스키장으로 전달되는 부하를 경감시켜 주어야 할 것임.

    • 유튜브 라이브가 아닌 이상 대부분 스키장의 라이브캠은 자체 DVR 서버로 서비스되고 있고, 처리 가능한 트래픽 용량이 크지 않음. 프록시를 도입한다면 스키장 측의 부하를 크게 줄이면서 더 많은 사용자에 대한 scalability를 확보할 수 있을 것으로 보임.

      CDN / 스트리밍 서비스를 쓰는 스키장
      • 곤지암리조트 (클라우드앤)
      • 엘리시안 강촌 (유튜브)
      • 오크밸리 (KT CDN)
      • 웰리힐리파크 (클라우드앤)
      • 알펜시아 리조트 (유튜브)
      • 모나 용평 (KT CDN)
      • 무주 덕유산 리조트 (클라우드앤)
      • 에덴밸리 (RTSP.ME)
      자체 서버를 쓰는 것으로 추측되는 스키장
      • 지산 포레스트 리조트
      • 비발디파크
      • 웰리힐리파크
      • 휘닉스파크
      • 하이원리조트
      • 오투리조트
    • 이건 서비스하면서 정확한 metric을 확보해 보아야 할 듯.

    • HLS relay를 도입하면 모든 연결을 HTTPS로 옮길 수 있다는 장점도 있음.

디자인 개선

  • PWA 레이아웃 수정
    • safe area 밖(홈 버튼)에 footer가 렌더링되는 문제를 인지하고 있음.
  • 드롭다운 메뉴 동작 고민
    • 드롭다운을 눌렀을 때 리조트가 바로 열리는 게 맞는지 잘 모르겠음.
    • 일단 토글버튼(⌄)을 눌렀을 땐 리조트 페이지로 이동하지 않도록 해 놓음.

급하진 않지만 할 생각은 있는 일

  • 스키장 타임랩스 영상 수집

    • 시간대별 혼잡도 분석을 할 수 있을지 고민 중
  • TypeScript / Next.js로 포팅

    • 최대한 간단하고 가볍게 만들려고 했는데 이미 일이 너무 커져버림
    • 일단 Next를 쓰는 순간 용량이 꽤 커지기 때문에 페이지 용량이 (외부 리소스 및 라이브러리 제외) 500kB가 넘기 전까지는 보류 예정

Credits

About

전국 스키장 실시간 웹캠 모음

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 2

  •  
  •