Twitch에서 동영상, 구독용 동영상, 댓글을 다운로드할 수 있는 라이브러리입니다.
$ npm i twitch-video-downloader
m3u8에서 mkv로 비디오 파일을 트랜스코딩하려면 FFMPEG 라이브러리가 필요합니다.
import { Join } from "path";import { writeFileSync } from "fs"; import { VideoDownloader, verifyDirectoryExists } from "twitch-video-downloader";(async () => {try {const downloader = new VideoDownloader("https ://www.twitch.tv/videos/800558240");downloader.on("progress-download", (진행) => console.log(`다운로드됨 ${progress.toFixed(2)}%`));downloader.on("progress-transcode", (progress) => console.log(`트랜스코딩됨 ${progress.toFixed(2)} %`));downloader.on("start-download", (e) => console.log(``에서 다운로드가 시작되었습니다!, e));downloader.on("start-transcode", () => console.log(`트랜스코딩 시작됨!`));// 이 비디오에 사용 가능한 모든 해상도 가져오기const 해상도 = wait downloader.getVideoResolutionsAvailable();// 특정 해상도 다운로드const download = wait downloader.download(solutions[0] );// 다운로드한 hls 파일의 정보 및 경로console.log(download);// HLS에서 MKVconst 트랜스코드로 트랜스코딩된 비디오 = 대기 downloader.transcode(download);// 트랜스코딩된 videoconsole.log(transcode)의 정보 및 경로(transcode);// 오프라인 chatconst 댓글 다운로드 = wait downloader.downloadChat();// 디렉토리가 존재하는지 확인하십시오. itensureDirectoryExists(join( __dirname, "./../downloads/chats"));// 모든 댓글 저장writeFileSync(join(__dirname, `./../downloads/chats/${comments.vodID}.chat`), comments.content);} catch (error) {console.log(error);}})();
이 코드는 라이브러리에 대한 간략한 개요를 보는 데 매우 유용할 수 있습니다. 저장소를 복제하면 다음 경로에서 동일한 파일을 찾을 수 있습니다.
twitch-video-downloader │ └───example │ index.ts
프로젝트 종속성이 설치되면
$ npm 설치
이 파일을 수정하고 관심 있는 비디오를 다운로드하여 재생할 수 있습니다. 스크립트를 실행하려면 다음 명령을 실행하십시오.
$ npm 실행 시작:시계
라이브러리가 수행하는 모든 작업을 알고 싶다면 다음 명령을 실행하여 디버그 모드에서 스크립트를 실행하세요.
$ npm 실행 개발:시계
또는 옵션에 디버그 매개변수를 전달할 수도 있습니다.
const downloader = new VideoDownloader("https://www.twitch.tv/videos/800558240", {debug: true});
VideoDownloader는 라이브러리의 기본 클래스이며 비디오 다운로드 또는 채팅을 시작하는 진입점입니다.
const defaultOptions = {clientID: "kimne78kx3ncx6brgo4mv6wki5h1ko",debug: false,downloadFolder: process.cwd(),oAuthToken: "",poolLimit: 20};const downloader = new VideoDownloader("https://www.twitch.tv/videos /800558240", defaultOptions);
옵션 | 정의 | 기본 |
---|---|---|
클라이언트 ID | 이는 트위치 플랫폼에서 사용하는 매개변수이며, 어떤 계정을 사용하더라도 값은 동일하므로 변경하면 안 됩니다. | kimne78kx3ncx6brgo4mv6wki5h1ko |
디버그 | 디버그 모드에서 라이브러리를 시작하려면 라이브러리가 수행하는 모든 작업이 저장되는 debug.log 파일이 생성됩니다. | 거짓 |
다운로드폴더 | 영상이 저장될 폴더입니다. 기본값은 작업 디렉터리입니다. | 프로세스.cwd() |
oAuth토큰 | 이 매개변수는 구독자에게만 비디오를 다운로드할 수 있기 때문에 매우 중요합니다. 이는 마술이 아닙니다. 동영상을 다운로드하려면 Twitch 계정에 이미 액세스 권한이 있어야 합니다. | "" |
poolLimit | 비디오를 다운로드할 때 최대 병렬 다운로드 수입니다. | 20 |
두 가지 옵션이 있습니다. 로그인한 후 Twitch 쿠키에서 추출할 수 있습니다. 필드는 auth-token이라고 합니다. 따라야 할 단계는 다음과 같습니다.
* Sign in to your Twitch account * With the Twitch tab open, open the chrome devtools (press f12) * With the devtools window open, now go to the application tab * Select 'https://www.twitch.tv' in the Cookies section * And look in the 'name' column for the field that says 'auth-token' and copy what is in the 'value' column
두 번째 옵션(아직 개발 중이므로 권장하지 않음)은 TwitchOAuth 클래스를 사용하는 것입니다.
import { TwitchOAuth, LoginOptions } from "twitch-video-downloader";const loginDefaultOptions: LoginOptions = {authy_token: "", // 이것이 유일하게 유용한 옵션입니다. 2단계 인증이 활성화된 경우 이를 사용하고 인증기 애플리케이션에서 코드를 복사하세요. client_id: "kimne78kx3ncx6brgo4mv6wki5h1ko",remember_me: true,}const twitchOAuth = new TwitchOAuth();twitchOAuth.login("<YOUR TWITCH USER>", "<YOUR PASSWORD>", loginDefaultOptions 메소드를 실행할 때 코드가 여전히 유효한지 확인하세요. ).then(async (oAuthToken) => {const downloader = new VideoDownloader("https://www.twitch.tv/videos/800558240", {oAuthToken: oAuthToken,});...});
Warning: THIS CLASS IS NOT YET FINISHED DEVELOPING, so problems may arise. And we have not yet developed the option to solve the catchas when Twitch asks you to log in IT IS RECOMMENDED THAT YOU USE THE FIRST METHOD TO GET YOUR OAUTH TOKEN FROM COOKIES BEFORE THIS METHOD
이벤트 이름 | 설명 | 매개변수 |
---|---|---|
진행-다운로드 | 다운로드 진행 상황이 업데이트될 때마다 이벤트가 호출됩니다. | 소수 |
진행 트랜스코드 | 트랜스코드 진행 상황이 업데이트될 때마다 이벤트가 호출됩니다. | 소수 |
시작-다운로드 | 다운로드가 시작되면 이벤트가 호출됩니다. | { vodID: 문자열, 품질: 문자열, 폴더 경로:문자열} |
시작-트랜스코딩 | 트랜스코드가 시작되면 이벤트가 호출됩니다. | 무효의 |
청취자를 등록하는 예
const downloader = new VideoDownloader("https://www.twitch.tv/videos/800558240");downloader.on("<이벤트 이름>", (param) => console.log(param));
const 다운로더 = 새로운 VideoDownloader("https://www.twitch.tv/videos/800558240");const 해상도 = wait downloader.getVideoResolutionsAvailable();
이 함수는 다음 정보가 포함된 배열을 반환합니다.
[{품질: '1080p60',해상도: '1920x1080',url: 'https://...index-dvr.m3u8'},{품질: '1080p',해상도: '1920x1080',url: 'https: //...index-dvr.m3u8'},{품질: '720p60',해상도: '1080x720',url: 'https://...index-dvr.m3u8'},...]
이 기능을 사용하면 품질, 해상도 및 URL 필드가 포함된 개체를 전달해야 하는 매개변수로 특정 해상도를 다운로드할 수 있습니다.
const downloader = new VideoDownloader("https://www.twitch.tv/videos/800558240");const 해상도 = wait downloader.getVideoResolutionsAvailable();// 특정 해상도 다운로드const download = wait downloader.download(해상도[0]) ;
함수 실행이 완료되면 다음 정보가 포함된 객체를 반환합니다.
{vodID: '800558240', 품질: '1080p60', 폴더 경로: 'D:Projectstwitch-video-downloaderdownloadsvideos800558240hls1080p60'}
이 기능을 사용하면 품질, 해상도 및 폴더 경로 필드가 있는 객체를 전달해야 하는 매개변수로 비디오를 트랜스코딩할 수 있습니다. 이 필드는 다운로더 메소드에 의해 반환됩니다.
const 다운로더 = 새로운 VideoDownloader("https://www.twitch.tv/videos/800558240");const 해상도 = wait downloader.getVideoResolutionsAvailable();const download = wait downloader.download(solutions[0]);// 트랜스코딩됨 비디오, HLS에서 MKVconst 트랜스코드로 = wait downloader.transcode(download);
또한 이 함수는 추가 설정이 포함된 개체 형태로 선택적 두 번째 인수를 받습니다.
const transcode = wait downloader.transcode(download, {deleteHslFiles: false, // 기본값outputPath: "<WORKING DIRECTORY>/downloads/videos/<VIDEO ID>/mkv/", // 기본값});
함수 실행이 완료되면 다음 정보가 포함된 객체를 반환합니다.
{vodID: '800558240', 품질: '1080p60', 파일 경로: 'D:Projectstwitch-video-downloaderdownloadsvideos800558240mkv1080p60.mkv'}
이 기능을 사용하면 비디오 채팅을 다운로드할 수 있습니다. 함수의 반환은 트위치 API의 원시 데이터입니다.
const downloader = new VideoDownloader("https://www.twitch.tv/videos/800558240");// 오프라인 채팅 다운로드const 댓글 = wait downloader.downloadChat();
일부 코드는 twitch-m3u8 및 twitch-tools와 같은 라이브러리에서 가져온 것입니다.