hdhomerun을 쓰는분들이 간간히 있으시네요.
tvheadend epg 설정하실때 참고해보세요.
인터넷에서 한국 방송 epg xml 파일 가져오는 방법 올려봅니다.
위 사이트에서 여러나라 epg를 배포하고 있습니다. 매일 업데이트하고 대충 4~5년 정도 계속 운영되고있다네요.
https://epgshare01.online/epgshare01/epg_ripper_KR1.xml.gz
한국 채널 258개
이렇게 gz 파일 형식으로 배포해서 이 파일을 자동으로 받아와서 압축 풀고 배포하는걸 제미나이랑 삽질해봤습니다
(배포되는 주소 https://[내_깃허브_아이디].github.io/[저장소_이름]/epg_ripper_KR1.xml)
GitHub 계정 생성 및 저장소(Repository) 만들기: 무료로 가입하고 저장소를 만듭니다.
자동화 스크립트 작성 (YAML): 저장소에 .github/workflows/deploy.yml 이라는 파일을 만들고 자동화 명령어를 입력합니다.
1. 스크립트 파일 만들기
GitHub 저장소 페이지에서 화면 중간쯤에 있는 Add file 버튼을 누르고 Create new file을 선택합니다. 파일 이름 입력창에 아래와 같이 슬래시(/)를 포함해서 입력하면 폴더와 파일이 자동으로 만들어집니다.
입력할 경로: .github/workflows/deploy.yml
2. 전체 스크립트 복사해 넣기
빈 화면에 아래 코드를 그대로 복사해서 붙여넣기 하세요. 코드를 넣은 후 우측 상단의 Commit changes... 버튼을 누르면 저장됩니다.
(매일 오전 5시 23분 실행, 60일 비활성 정책 방지용 keepalive_log.txt 만들기)
----------------------------------------------------------
name: Auto Download and Deploy
on:
schedule:
- cron: '23 20 * * *'
workflow_dispatch:
permissions:
contents: write
env:
FORCE_JAVASCRIPT_ACTIONS_TO_NODE24: true
jobs:
build-and-deploy:
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Prevent Cron Suspension
run: |
date > keepalive_log.txt
git config --global user.name "github-actions[bot]"
git config --global user.email "github-actions[bot]@users.noreply.github.com"
git add keepalive_log.txt
git commit -m "Auto Keepalive Update" echo "No changes"
# 길을 잃지 않도록 main 또는 master 브랜치로 정확히 지정해서 밀어 넣습니다.
git push origin HEAD:main git push origin HEAD:master
- name: Download and Extract
run: |
mkdir -p public
cd public
wget "https://epgshare01.online/epgshare01/epg_ripper_KR1.xml.gz"
gunzip epg_ripper_KR1.xml.gz
- name: Deploy to GitHub Pages
uses: peaceiris/actions-gh-pages@v4
with:
github_token: ${{ secrets.GITHUB_TOKEN }}
publish_dir: ./public
----------------------------------------------------------
Actions 탭으로 가셔서 우측에 Auto Download and Deploy 선택
Run workflow 버튼을 눌러 수동으로 한 번 실행해 보실 수 있습니다.(녹색 체크 확인)
자동화 작업이 무사히 끝났으니, 이제 그 결과물인 epg_ripper_KR1.xml 파일에 접속할 수 있는 나만의 고유한 웹 주소(URL)를 만들 차례입니다.
우리가 작성한 스크립트는 압축을 푼 파일을 저장소 내의 gh-pages라는 전용 공간에 모아두도록 설정되어 있습니다. 이 공간을 세상에 공개(웹 호스팅)하는 설정을 해주어야 합니다.
아래 순서대로 따라 해 주세요.
1단계: GitHub Pages 웹사이트 켜기
내 GitHub 저장소(Repository) 메인 화면에서 상단 우측에 있는 Settings(설정) 탭(톱니바퀴 아이콘)을 클릭합니다.
왼쪽 메뉴 목록을 밑으로 조금 내려서 Pages를 클릭합니다.
화면 중앙의 Build and deployment 항목을 봅니다.
Source는 Deploy from a branch로 그대로 둡니다.
그 아래 Branch 설정에서 None으로 되어 있는 버튼을 눌러 gh-pages를 선택합니다.
바로 옆의 폴더 설정은 /(root)로 둔 상태에서 Save(저장) 버튼을 누릅니다.
참고: Save를 누르고 나면 GitHub가 웹사이트를 생성하는 데 약 1~2분 정도 시간이 걸립니다. 잠시 후 새로고침을 해보시면 페이지 상단에 Your site is live at https://... 라는 메시지와 함께 주소가 나타납니다.
2단계: 내 EPG 파일의 최종 주소 완성하기
GitHub Pages가 만들어준 기본 주소는 다음과 같은 형태를 띱니다.
https://[내_깃허브_아이디].github.io/[저장소_이름]/
이제 우리가 호스팅하는 파일인 epg_ripper_KR1.xml을 이 기본 주소 맨 뒤에 붙여주기만 하면 됩니다.
최종 EPG 주소 예시:
👉 https://[내_깃허브_아이디].github.io/[저장소_이름]/epg_ripper_KR1.xml
(예: 내 아이디가 gildong이고 저장소 이름이 epg-auto라면 주소는 https://gildong.github.io/epg-auto/epg_ripper_KR1.xml 이 됩니다.)
3단계: 접속 테스트하기
완성하신 최종 주소를 복사합니다.
인터넷 브라우저(크롬, 사파리 등)의 주소창에 붙여넣고 엔터를 칩니다.
화면에 복잡한 글자들(XML 코드)이 쫙 나타나거나 파일이 다운로드된다면 100% 완벽하게 성공한 것입니다!
사실 여기까지가 끝인데요.
이 깃허브 스케즐이 제 시간에 작동을 안하더라구요 ㅎㅎㅎ
제미나이 밀로는 고질병이라는데,,,
그냥 놔두면 어찌어찌 하루에 한번은 실행되는것 같더라구요
찝찝 하시면 아래 작업해주시면 됩니다.
GitHub 스케줄러가 잘 작동되지 않아서 Cron-job.org 설정하기
외부 서비스(Cron-job.org 등)에서 깃허브 액션을 원격으로 실행하려면 깃허브 API 주소를 사용해야 합니다.
외부 서비스에 등록할 최종 주소(Address)는 아래와 같은 형태입니다.
https://api.github.com/repos/[내_깃허브_아이디]/[저장소_이름]/actions/workflows/deploy.yml/dispatches
1단계: 깃허브 비밀번호(토큰) 발급받기
깃허브 웹사이트 오른쪽 맨 위 내 프로필 아이콘을 누르고 Settings로 갑니다.
왼쪽 메뉴 맨 아래에 있는 Developer settings를 클릭합니다.
Personal access tokens -> Tokens (classic)를 클릭합니다.
Generate new token -> Generate new token (classic)을 누릅니다.
설정 입력:
Note (이름): cron-job (아무거나 적으셔도 됩니다.)
Expiration (만료일): No expiration (만료 없음)을 선택해야 평생 자동으로 돕니다.
Select scopes (권한): 맨 위에 있는 repo 항목에 체크합니다. (저장소 접근 권한)
맨 아래 Generate token 버튼을 누르면 영어와 숫자가 섞인 긴 비밀번호(ghp_...)가 나옵니다.
⚠️ 주의: 이 코드는 창을 닫으면 다시 안 보여주니, 메모장에 꼭 복사(Copy)해 두세요!
2단계: Cron-job.org에 등록하기
이제 준비된 주소와 신분증을 외부 서비스에 입력할 차례입니다.
Cron-job.org에 무료로 가입하고 크론잡 생성(Create Cronjob) 화면으로 갑니다.
-COMMON-
Title : GitHub Cron
URL : 위에 조립해 둔 주소를 넣습니다.
https://api.github.com/repos/[내_깃허브_아이디]/[저장소_이름]/actions/workflows/deploy.yml/dispatches
Execution schedule
원하는 시간 선택
-ADVANCED-
Headers (헤더 설정):
+ ADD 버튼을 누르고 칸을 추가해서 아래와 같이 총 세 줄을 만들어 주시면 됩니다.
순서 Key (키) Value (값)
첫 번째 줄 Accept application/vnd.github+json
두 번째 줄 Authorization Bearer ghp_내토큰값어쩌구저쩌구...
세 번째 줄 Content-Type application/json
Value 칸에 토큰을 넣으실 때, Bearer라는 글자를 쓰고 반드시 한 칸 띄운 뒤에 복사해 두신 ghp_로 시작하는 토큰 값을 붙여넣으셔야 합니다. (예시: Bearer ghp_1a2b3c...)
Request Method (요청 방식): 기본값인 GET을 클릭해서 POST로 변경합니다. (아주 중요합니다. 깃허브에게 실행하라고 '명령'을 내리는 것이기 때문에 꼭 POST여야 합니다.)
Request Body (요청 본문):
어떤 브랜치를 실행할지 알려주는 필수 코드입니다.
{ "ref": "main" }
저장하기 전에 '테스트 런' 하고 GitHub Actions 탭에서 실행 확인