STUDY/Python

HTML5 동영상 다운로드

sinawi95 2020. 9. 3. 11:32
728x90

인터넷 강의를 안쓰던 아이패드에 넣어서 보기 위해 방법을 찾아보았다.

인터넷강의를 다운받을수 있는 경로를 찾아내었기 때문에 가능한 방법이다.

하지만 경로를 입력했을때 HTML5 플레이어가 떴고 하나하나 다운받아야해서 번거로웠다.

그래서 파이썬을 사용해서 한꺼번에 다운을 받을 것이다.

 

환경: PYTHON 3.8.5, VS code

우선 기본적으로 html5에서 다운받는 코드이다. 여러 코드가 있었지만 동영상 파일이기때문에 용량이 클것이라 판단하여 이것을 사용하였다. 그리고 requests 모듈을 다운받지 않았으면 실행이 되지않으니 설치부터 해야한다.

import requests 

def download_file(url):
    local_filename = url.split('/')[-1]
    # NOTE the stream=True parameter
    r = requests.get(url, stream=True)
    with open(local_filename, 'wb') as f:
        for chunk in r.iter_content(chunk_size=1024): 
            if chunk: # filter out keep-alive new chunks
                f.write(chunk)
                #f.flush() commented by recommendation from J.F.Sebastian

    return local_filename
    
url=~~~~
download_file(url)

이후 url만 잘 넣어주면 함수를 실행시키면 해당 파이썬 파일이 있는 폴더에 다운로드가 된다.

url=~~~ 부터는 본인의 입맛대로 작성하면된다. 아래는 내가 짠 코드이지만 남보여주기는 상당히 부끄러워서 접어놓을것이다.

더보기

url 주소에 들어가는 파일 이름인데 규칙이 01_01 부터 하나씩 늘어나는 형태이다.

근데 파일의 이름이 어디까지 있는지 몰라서 01_01~16_31 까지 다 복사하는 것으로 했다.

물론 그렇게 하니까 없는 파일(404 Not Found)들은 0바이트(os상 270바이트)의 파일로 만들어졌다.

url_dl="~~~~" 

for i in range(1,17):
    for j in range(1,32):
        if i<10:
            url_dl_val="0"+str(i)
        else:
            url_dl_val=str(i)    
        if j<10:
            url_dl_val+="_0"+str(j)
        else:
            url_dl_val+="_"+str(j)

		url_dl_val+=".mp4"
        download_file(url_dl+url_dl_val)

 이후 빈 파일들을 삭제하는 코드도 사용해서 지웠다.

import os
from os.path import getsize

path_dir="영상이 있는 디렉토리"
file_list=os.listdir(path_dir)

for file_name in file_list:
    if(getsize(file_name)==270):
        os.remove(file_name)

 

나중에 효율적으로 다운로드하는 방법들도 찾아봐야겠다.

예를들면 url 디렉토리상에 있는 영상만 모두 다운을 받는다던가. 404 not found나 403 forbidden일때 다운을 받지 않는 형식으로 말이다.

어쨌든 이걸로 구형 아이패드에 인터넷 강의를 넣어서 볼수 있게 되었다.

야호!