본문 바로가기
C 언어

C언어로 만든 Youtube 플레이리스트 추출 프로그램

by treeCoder 2021. 9. 12.

C언어로 만든 Youtube 플레이리스트  추출  프로그램이다.

 

유튜브를 볼 때  다음 그림과 같이 여러개의 Video 리스트가 뜨는 경우가 있는데

 이를 플레이 리스트라 한다. 이  Playlist를 C 언어를 사용해서 추출하는 방법을 알아 보고자 한다.

 

1) 화면의 빈 곳에서 우클릭을 한 후 "페이지 소스 보기"를 클릭한다.

 

2) 그러면 아래와 그림과 비슷한 창이 열릴 것이다. 여기서 전체 텍스트를 선택한 후 Ctrl + C 를 누른다.

 

 

3) test.txt 라는 문서를 만들고, Ctrl + V 를 누른 후 저장한다.

 

4) 아래 프로그램을 컴파일 한다. (이 때 실행 파일 이름을 txt2PlayList.exe 라고 지정한다.)

#include <stdio.h>
#include <string.h>

int main() {

    int c; char tmp[214800]; //16585

    int i =0;
    while( ( c = fgetc(stdin) ) != EOF ) {
           tmp[i++] = c;

           if(c == 34 ) {
             tmp[i]= 0;  if( strstr(tmp, "u0026index=") ) { printf("https://www.youtube.com"); puts(tmp); } i = 0;
           }
    }
    
    tmp[i]= 0;  if( strstr(tmp, "u0026index=") ) { printf("https://www.youtube.com"); puts(tmp); } 
 
    return 0;

}

 

5) txt2PlayList  < test.txt > list.txt 라는 명령어를 Console 창에 입력한다.

 

6) list.txt 를 열어보면 다음 그림과 같을 것이다.

 

7) 이 중에서 빨간색 네모 부분만 남기고 다른 부분은 지우면 Playlist가 추출 작업이 완성된다.

 

 

**********************************

updated program:  좀더 편리하게 업데이트 되었다. 아래의 프로그램을 사용하면, 위 사진에서 노란색으로 표기된 부분은

출력되지 않는다.

**********************************

#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
#include <string.h>

// check if string is a number, returns an integer.
// returns 0 if it the string is not number
 
int is_num( char str[] ) {
    char *p = str;
    int dotcnt = 0;
 
    while( *p ) {
       if( !isdigit( *p ) && *p!='.' ) 
           return 0;
       if( *p == '.' && ++dotcnt > 1 ) 
           return 0;
       p++;
    }
  
    return atoi( str );
}

int main() {

    char *p;
    int num = 0;
    int sav = 0;

    int c; char tmp[214800]; //16585

    int i =0;
    while( ( c = fgetc(stdin) ) != EOF ) {
           tmp[i++] = c;

           if(c == 34 ) {
             tmp[i-1]= 0x00; 
             if( (p = strstr(tmp, "u0026index=")) ) { 
                 if( (num = is_num( p + 11 )) ) {  /* if it's number */
                     if( num - sav < 0 ) break; /* if the number decreases, get out of the loop */
                     printf("https://www.youtube.com%s\n",tmp); 
                     sav = num; 
                 }
             } 
             i = 0;
           }
    }
 
    return 0;

}

 

위의 프로그램을 사용하여 List를 추출한 다음에 아래 링크이 파이썬 프로그램을 이용하여

실제로 다운로드 받는다.

 

https://green-tree-program.tistory.com/111

 

파이썬으로 유튜브 동영상 연속으로 받기

# -*- coding: utf-8 -*- import sys import pytube lst = ''' https://www.youtube.com/watch?v=iFyVb5pM0ec&list=PL-NHXz46zx-XuVNOjrBYFV0E8pz-RKtH5&index=97 https://www.youtube.com/watch?v=sjN3yak9S2M&list=PL-NHXz46zx-XuVNOjrBYFV0E8pz-RKtH5&index=98 https://www

green-tree-program.tistory.com

 

댓글