/parcel-tracker

택배 및 통관 조회 텔레그램 알람

Primary LanguagePythonMIT LicenseMIT

Parcel Tracker

해외에서 발송된 택배의 배송 및 통관 상태를 조회하고 이를 텔레그램 채널로 알람을 보내주는 봇입니다.

특징

택배 사의 서버에 직접 조회를 요청하며 결과를 파싱하여 알림을 보냅니다. 서드파티 서비스를 이용할 때 발생할 수 있는 개인정보의 유출을 방지할 수 있습니다. 한 번의 배송 조회로는 단편적인 정보만 얻을 수 있지만, 쿼리의 양이 많이 질수록 얻을 수 있는 정보는 많아집니다. 그리고 해외 상품의 경우 관세청의 통관서비스를 통해 상품명의 일부를 알아낼 수도 있습니다. 폐쇄적인 방식을 통해 이러한 위험을 사전에 차단합니다.

설치

패키지 설치

python3 -m pip install -r requirements.txt

config.yaml 파일 설정

cofing.tmpl.yaml 파일을 config.yaml로 복사한 뒤 각 항목을 채워줍니다. Telegram 봇의 발급 및 채널 생성 방식은 Telegram의 매뉴얼을 확인해 주세요. MongoDB를 사용할 경우 driver를 mongodb로 바꾸어 주세요.GG

database:
  driver: file # support: file, mongodb
  host: localhost
  port: 27017
  database: parcel-tracker
  user: '' # '' mean no authentication required
  pwd: ''
telegram:
  token: Telegram에서 생성한 봇의 토큰을 넣어줍니다.
  chat-id: 알람을 받을 채널 ID를 넣어줍니다.
  err-chat-id: Python의 에러 메시지를 받는 경우 이 알람을 받을 채널 ID를 넣어줍니다.

스케줄러 추가

봇은 데몬으로 동작하지 않으며 실행할 때에만 배송을 조회합니다. 주기적인 조회를 위해서는 스케줄러 또는 crontab 등에 추가합니다. 스케줄러에 등록할 때에는 -u 옵션을 주어야 합니다. 그리고 -e 옵션도 주는 것을 권장합니다.

사용법

배송 항목 추가

현재 봇을 통해 항목을 추가하거나 수정하는 기능은 지원하지 않습니다. parcels.tmpl.yaml 파일을 parcels.yaml 파일로 복사한 뒤 수동으로 관리합니다.

- Name: 택배의 이름을 지정합니다.
  LogiCodes: 택배 회사의 코드를 한개 또는 여러개 입력합니다. 코도는 쉼표(',')를 이용하여 구분합니다. 지원하는 코드는 -l 명령으로 확인할 수 있습니다.
  TrackNo: 택배 추적번호입니다.
  Year: 택배를 발송된 연도를 입력합니다. 통관 조회에 사용됩니다.

실행

위에서 설명한 config.yaml, parcels.yaml을 작성한 뒤 track을 실행합니다. 기본적으로 stdout으로 결과가 출력되며 -u 옵션을 준 경우 텔레그램 채널에 업데이트 되고, -e 옵션을 준 경우 스크립트 내에서 오류가 발생했을 때 이 오류 또한 지정한 채널을 알람이 갑니다.

./track [-u] [-e]

지원하는 택배사

현재 아래 두 곳의 조회만 지원하며 다른 택배사의 경우 추후 추가될 예정입니다.

패키지 내에는 다양한 택배사가 등록되어 있으나 해당 조회는 2020년 이전에 작성된 것이라 현재는 동작하지 않습니다.

기타

이 텔레그램 봇은 제가 직구하여 해외에서 받을 물건이 있을 때만 업데이트 됩니다.

ToDo

  • 봇 데몬으로 만들기
  • 여러 택배사 및 항공 조회 추가하기
  • 서드파티 조회 기능 추가하기 (다면 위에서 언급한 개인정보 문제는 감수하여야 함)