이전 내용
https://springdream0406.tistory.com/256
[Back] NAS에서 MusicData 체크 자동화 돌리기2 - NAS
이전 내용https://springdream0406.tistory.com/255 [Back] NAS에서 MusicData 체크 자동화 돌리기1 - TS발단CMWorld는 유튜브의 영상을 가져다가 BGM으로 활용한다.그런데 가끔 가져오는 유튜브 영상이 삭제되면 정
springdream0406.tistory.com
발단
오늘 노래를 재생하다가 유튭 노래가 없어서 못가져오는 현상을 보게 되었다.
확인해보니 NAS에서 체크 자동화는 매일 돌아가고 있는 상태라서, 자동화 이후에 노래가 내려간걸로 추측하고, 다음 자동화까지 기다리기 보다는 필요할 때 수동으로 체크를 돌릴 수 있도록 코드를 변경하기로 했다.
과정
기존 index.ts 파일에 있던 체크 로직을 함수화하여, cron에서는 해당 함수를 호출하도록 변경했다. 또한, 원하는 때에 수동으로 체크 로직을 실행할 수 있도록 run.ts 파일을 생성하고, 함수화된 코드를 가져와 실행하도록 구성했다.
처음에는 pm2를 이용해 실행하려 했으나, 다음과 같은 이유로 tsx로 변경했다.
• pm2로 실행하면 기존 자동화 코드에도 영향을 주지 않도록 추가적인 변경이 필요함
• 실행 후 pm2 list에 남아 delete 작업이 필요함
• 단순히 한 번 실행하고 끝나는 코드이므로, pm2보다 가볍고 간편한 방법이 필요함
이 과정에서 run.ts가 정상적으로 실행되지 않는 문제를 발견했고, 로컬에서 테스트하는 과정에서 tsx가 더 편리하다는 점을 확인해 최종적으로 tsx로 실행 방식을 변경했다.
오류 및 수정
수동 체크를 실행했지만, 문제의 노래를 찾지 못하는 오류가 발생했다. 직접 해당 노래를 찾아 API 응답을 확인해보니
status: {
uploadStatus: 'processed',
privacyStatus: 'unlisted',
license: 'youtube',
embeddable: true,
publicStatsViewable: true,
madeForKids: false
}
privacyStatus가 public이 아니라서, 노래 정보는 있지만, 내가 가져올 수 없는 상태였던걸 확인했다.
이를 반영하여 기존에 단순히 노래 정보가 있는지만 확인하던 로직에 privacyStatus가 public인지 추가로 체크하는 로직을 추가했고, 이후 수동 실행을 해보니 노래 4개가 정상적으로 체크되었다.
또한, 이메일 알림이 오지 않는 문제가 있어서 확인해보니, await 처리가 누락되어 있어 프로그램이 이메일을 보내기 전에 종료되고 있었다. 해당 부분에 await을 추가하여 정상적으로 이메일이 전송되도록 수정했다.
// index.ts
// 작업 로직을 함수로 분리
export async function runMusicCheck() {
console.log("checking", new Date().toLocaleString());
const result = await checkAllMusicData();
// 이상 있는 데이터 있을 경우 email 보내기
if (result.length > 0) {
console.log(result);
await sendErrorEmail(result);
}
}
// 매일 15시에 실행
cron.schedule("0 15 * * *", async () => {
await runMusicCheck();
});
# run.sh
export PATH=$PATH:/root/.nvm/versions/node/v22.14.0/bin
cd /home/check-youtube-music
git pull origin main
curl -o /home/check-youtube-music/src/data/musicData.ts \
https://raw.githubusercontent.com/SpringDream0406/CMWorld/main/src/data/musicData.ts
tsx src/run.ts
'Projects > CMWorld' 카테고리의 다른 글
[Back] NAS에서 MusicData 체크 자동화 돌리기2 - NAS (0) | 2025.03.03 |
---|---|
[Back] NAS에서 MusicData 체크 자동화 돌리기1 - TS (0) | 2025.03.01 |
Version Info (4) | 2024.12.09 |
2. 구상/구현 (2) | 2024.11.18 |
3. 구현 (4) | 2024.11.02 |