최근 유튜브 노래를 가져오는 부분에서 문제가 있었다.
노래를 가져오려고하면 403 에러가 나기 시작했는데 아마 유튜브 쪽에서 막은것 같다.
한동안 방치해뒀다가 다시 실행해보니 정상적으로 실행이 되었는데 확인해보니
distubejs/ytdl-core 쪽에서 최근에 업데이트를 했다고 나와있었다.
어떤게 업데이트 되었나 변경된 코드를 확인해봤는데
WEB_CREATOR 라는것을 사용하던 것을
WEB_EMBEDDED 으로 바꿨다고 나와있었다.
어저 두개의 차이점을 검색해봤는데
WEB_CREATOR 는 크리에이터 전용 API,
WEB_EMBEDDED 는 YouTube API를 직접 호출하지 않고, iframe을 통해 YouTube 서버에서 자동으로 데이터를 가져옴
라고 되어있었다.
크리에이터 전용 api 라고 되어있지만 기본적으로 노래 정보는 제공하는듯 하다.
채널 수익 상태, 댓글 같은 데이터는 해당 크리에이터만 가져올수 있게 되어있는 api인것 같다.
구체적 차이점은 챗지피티에게 물어봤고 다음과 같았다.
🔹 1️⃣ WEB_CREATOR에서 가져오는 데이터
WEB_CREATOR는 크리에이터 대시보드에서 볼 수 있는 업로더 전용 정보를 제공.
이 데이터를 가져오려면 보통 OAuth 인증이 필요하고, 일반 사용자는 접근할 수 없음.
📌 예시: 유튜브 크리에이터 API가 제공하는 정보
- 업로드한 영상의 상세 정보 (비공개/공개 여부, 수익화 상태 등)
- 영상에 대한 통계 데이터 (조회수, 좋아요, 댓글 수 등)
- 업로더가 직접 설정한 메타데이터 (태그, 설명, 카테고리 등)
- 광고 및 수익 관련 정보
✅ 즉, WEB_CREATOR는 유튜브 영상의 "업로드자 전용 데이터"를 가져오는 기능.
✅ 업로드자 정보와 함께 비디오를 처리하는 방식
🔹 2️⃣ WEB_EMBEDDED에서 가져오는 데이터
반면 WEB_EMBEDDED는 일반 사용자가 YouTube 동영상을 iframe으로 불러와서 재생하는 방식.
YouTube에서 공개된 데이터만 가져올 수 있고, 업로더 전용 정보는 포함되지 않음.
📌 WEB_EMBEDDED에서 제공하는 정보
- 영상 제목, 설명, 썸네일 URL
- 영상 길이, 재생 횟수, 업로드 날짜
- 영상이 차단되었는지 여부 (예: 국가 제한, 연령 제한)
- 기본적인 재생 기능 (재생, 일시정지, 음소거, 속도 조절 등)
✅ 즉, WEB_EMBEDDED는 유튜브에서 "공개적으로 제공하는 데이터"만 가져와서 재생하는 방식.
✅ 비디오를 임베드하여 오디오 스트리밍만 처리하는 방식.
추가로
exports.applyPlayerClients = options => {
if (!options.playerClients || options.playerClients.length === 0) {
options.playerClients = ["WEB", "WEB_CREATOR", "IOS"]; // 변경 전
options.playerClients = ["WEB_EMBEDDED", "IOS", "ANDROID", "TV"]; //변경 후
}
};
이렇게 변경 전에서 변경 후 로 바뀐 코드도 확인해보니
WEB 방식에서 -> WEB_EMBEDDED 방식으로 바뀐게 확인이 되었다. (당연히 WEB_CREATOR도 사라짐)
403 에러때문에 업데이트 된 코드 중 중요한건 2가지였다.
1. WEB_CREATOR -> WEB_EMBEDDED
2. WEB방식에서 WEB_EMBEDDED 방식으로 바뀜
(웹클라이언트 -> 임베디드 웹 플레이어)
유튜브쪽에서
1. CREATOR 와 EMBEDDED 를 구별해서 막는건지
2. 아니면 가져오는 방식을 구별해서 막는건지
3. 아니면 너무 많은 양의 데이터를 지속적으로 요구해서 막은건지는
나로써는 알수없다.
업데이트 된 코드확인
https://github.com/distubejs/ytdl-core/commit/b92e5e558c7f10eca4b4adf728436607f0bf8a46
Fixes for 403 errors (by fixing clients) (#163) · distubejs/ytdl-core@b92e5e5
* Merged (TV Comp) * Merged (custom fetch) * Add webembedded * Remove console.log * Fix webEmbeed by downgrade * Update info.js * Update utils.js * Update index.d.ts * Updat...
github.com
403에러 해결을 위한 해결과정 및 대화들
https://github.com/distubejs/ytdl-core/pull/163
Fixes for 403 errors (by fixing clients) by ToddyTheNoobDud · Pull Request #163 · distubejs/ytdl-core
This should fix the 403 errors, as i tested it din't give me an issue when using for playback. The clients are MWEB (Not fully implemented yet) and WEBEMBEDDED (Fully implemented, ig)
github.com
'디스코드봇' 카테고리의 다른 글
[JS] 디스코드 노래 봇 7 (0) | 2025.01.13 |
---|---|
[JS] 디스코드 노래 봇 6 (1) | 2024.10.17 |
[JS] 디스코드 노래 봇 5 (0) | 2024.08.24 |
[JS] 디스코드 노래 봇 4 (1) | 2024.07.14 |
[JS] 디스코드 노래 봇 3 (0) | 2024.06.30 |