Giter VIP home page Giter VIP logo

bus-hexa's Introduction

bus-hexa

Update Log

들어가기

시작하기에 앞서

본 프로젝트는 공공 데이터포털에 공개된 울산 버스 BIS를 기반으로 하고 있습니다. 울산 BUS API는 다음 사이트에서 얻을 수 있습니다. 울산 API API Key를 ./bushexa/crawler/key.txt, ./bushexa/chroniccrawler/crawler/key.txt에 넣으세요.

Secret Key는 본 레파지토리를 통해 공개가 되고 있지 않습니다. 안윤표([email protected])에게 문의하여, Secret Key를 얻은 후 ./bushexa/bushexa/secret_key.txt에 넣으세요.

MDN 장고 소개

첫 번째 장고 앱 작성하기

가상환경의 경우 requirements.txt에 적혀있습니다. 가상환경을 활성화 한 후 아래 명령을 실행하여서 필요한 모듈을 다운받아야 합니다.

pip3 install -r requirements.txt

테스트를 하기에 앞서 migration을 통하여 DB를 생성하여야 합니다. migration을 위하여 /bushexa 디렉토리에 들어가서 아래 명령어를 통해 DB를 마이그레이션 합니다.

python3 manage.py migrate

이제는 버스의 시간표를 가져와야 합니다. 울산 API에서 버스 시간표를 가져오는 작업은 상대적으로 오래 걸립니다. (1초 이상) 그러므로 이 작업은 사용하지 않는 시간대(새벽 즈음)에 긴 주기 (한 달 이상)로 가져오는 것을 권합니다. 테스팅을 위해서 가져오는 방법은 아래 코드를 실행시키면 됩니다.

python3 time_crawler.py

Migrate가 완료되었다면, 아래 명령어를 통해 서버를 실행합니다.

python3 manage.py runserver 0.0.0.0:<port>

port의 경우 본인이 원하는 포트 번호를 입력하세요. 만약 이미 사용중인 경우 다른 번호를 입력하여 다시 시도하시면 됩니다. Windows VS Code를 통해 진행된다면 표시되는 주소를 Ctrl키와 함께 클릭하면 자동으로 해당 포트로 연결이 되어 브라우저 상으로 표시됩니다.

실행 중 오류의 경우 log.txt에 남게 됩니다.

사용법

Chroniccrawler 사용 방법

배포하기에 앞서

배포 참고 자료

./bushexa/bushexa/settings.py반드시 DEBUG = False를 확인하시오.

임시적인 배포 주소

Bus Information

출발 정류장명 버스번호 방향번호 방면 Route ID
울산과학기술원 133 2 꽃바위 방면 194101332
농소차고지 233 3 농소차고지 방면 196102333
울산과학기술원 233 3 농소차고지 방면 196102334
율리 304 2 복합웰컴센터 방면 196103042
복합웰컴센터 방면 304 1 율리 방면 196103041
삼남신화 337 3 삼남 순환 196103373
태화강역 337 3 삼남신화 방면 196103374
삼남신화 337 3 태화강역 방면 196103375
울산과학기술원 733 2 덕하차고지 방면 196107332
울산과학기술원 743 2 태화강역 방면 193107432

Station Information

정류장명 정류소코드 경유버스
울산과학기술원 196040233 233
울산과학기술원 196040234 133, 233, 304, 337, 733, 743

Remain Works

  • 정리하기
  • 날씨 표시
  • 방학 식별
  • 마지막차 식별
  • 337 버스의 경우 서로 다른 버스가 운행중이더라도 하나의 버스가 2번 이상 출력이 되는 API 속 에러가 있음.

bus-hexa's People

Contributors

jaehwan1912 avatar raon1123 avatar 01joseph-hwang10 avatar

Stargazers

 avatar  avatar DeokHyeon Wi avatar Dongmin Kim avatar

Watchers

준화 avatar  avatar

bus-hexa's Issues

개별 노선별 정보 페이지

  • 노선 기본 정보
  • 노선 지나는 정류장
  • 노선 시간표
  • 노선 현재 운행중인 버스 위치
  • 노선 지나는 주요 정류장

individual_lane_description branch에서 진행중입니다

출발 시간별로 표시

  1. 먼저 출발하는 버스를 강조해서 표시
  2. 출발 순서대로 표시

두개의 사이트를 분리

Chroniccrawler정보

New dbs : Lane alias, Lane parts

여러 노선의 부분들을 하나의 노선 가명으로 묶을 수 있습니다

New function: next_n_bus_from_alias(alias, n) in chroniccrawler.helper.helper

한 alias의 도착/위치/배차 정보를 형식에 맞춰 return해줍니다.

all = []
for alias in aliases:
    all.append(next_n_bus_from_alias(alias, n))

이후 all을 입맛에 따라 사용하시면 됩니다

경유정류장정보 바뀔 시 LanePart 해제 관련

현재 경유정류장정보가 바뀌었을경우 LanePart설정이 풀려 그냥 오류를 뿜습니다.

예외처리를 하거나 자동으로 잡게 하거나 뭐가 문제인지 알 수 있게 해놓으면 좋을듯

울산 BIS의 "도착 정보" 가 불안정합니다

22년 4월 9일 5시 20분경 제대로 작동하지 않고 있음을 확인했습니다

분 예측을 포기하고 "역 전" 만 표시할지 아니면 어떻게든 살려볼지 고민해야 할 때입니다.

통계 내기

현재 버스헥사가 운영중이지만

누가 사용중인지 또는 누가 사용을 하고 있긴 한건지에 대해 정보가 없지 않은가 하는 생각이 듭니다.

따라서 통계를 낼 수 있는 수단을 마련해보고자 합니다.

혹시 이미 구글 애널리틱스라던가 있다면 알려주세요

DB 정규화

헤헤
아무튼 DB를 다시 쓰게 되지 않을까 싶습니다

For Docker

We need to move our project webpage from AWS to HeXA UNIST server.
Then, we need to construct docker compose.

막차

이 버스가 막차입니다. 빨리 타십쇼

버스 Tip 작성

  1. 울산시 버스 요금
  2. 버스 별 방면 및 예상 소요시간
  3. Tip...?

도착정보 crawling

도착정보의 경우 현재 요청이 들어오면 울산 API로 부터 가져오는 방식입니다.
이를 백엔드에서 주기적(30초 이내)로 크롤링을 시도하여, DB에 저장하고 DB에서 꺼내오는 방식으로 바꾸는 작업이 요구됩니다.

긴급 메세지 시스템 만들기

페이지를 띄울 때 뭐 왼쪽 아래나 어디에던 뭔가 긴급으로 표시해야 할 메세지가 있을 때 해당 메세지를 띄워주는 시스템 만들기

방학시간표 적용

방학 기간을 알아서 긁어오는건 뭔가 좀 안정적일거같지 않아서

대신 datetime ~ datetime 은 방학이다 라고 설정할 수 있게 만드려고 합니다

vacation_departure 에서 작업중입니다

337 방향

337 방향을 데이터 상으로 구별이 불가능하다. 이를 구별해서 어떻게 표시하는가?

API 등록 이슈

정식으로 나오게 된다면 API 신청을 하여 하루 요청량을 늘려야함.
늘리고 나면 해야할 일들

  • 주기적으로 울산 서버에서 크롤링하여서 DB에 저장해두기

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.