Youtube mp3 download


youtube-dl


이 툴을 사용하여 Youtube.com에 업로드 된 비디오 영상의 오디오를 추출하여 mp3 파일로 저장할 수 있다.

예제는 유튜브 재생목록을 다운받는다.


Installation

youtube-dl 설치 (wget 또는 curl)


1
2
curl -L https://yt-dl.org/downloads/latest/youtube-dl -/usr/local/bin/youtube-dl
chmod a+rx /usr/local/bin/youtube-dl
cs


ffmpeg 설치


1
2
3
4
5
6
7
cd /opt
curl -O https://johnvansickle.com/ffmpeg/releases/ffmpeg-release-64bit-static.tar.xz
 
tar -xf ffmpeg-release-64bit-static.tar.xz
rm ffmpeg-release-64bit-static.tar.xz
 
ln -/opt/ffmpeg-[VERSION]/ff* /usr/bin
cs



Usage

유튜브 재생목록 url 리스트를 playlist 파일에 넣고 해당 파일을 지정해 준다.

1
youtube-dl --extract-audio --audio-format mp3 --batch-file="/full/path/to/playlist"
cs


플라스크 앱 디렉토리에 일반 아파치 웹 서버 처럼 DocumentRoot 경로에 파일을 업로드하고 요청을 시도하면 404 또는 500 에러를 응답 받는다.




flask 앱에서는 send_from_directory 모듈을 사용하여 일반 아파치 서버 처럼 파일을 업로드하고 다운로드 받을 수 있다.


1
2
3
4
5
6
7
from flask import send_from_directory
 
...
 
 @app.route('/file/<path:filename>', methods=['GET', 'POST'])
 def download(filename):
     return send_from_directory(directory='file', filename=filename)
cs


file 이라는 서브 디렉토리 생성 후, 해당 위치에 파일을 업로드하고, flask 앱 라우팅을 통해 해당 경로에서 파일을 다운로드 받을 수 있도록 설정하면 된다.

'Python' 카테고리의 다른 글

pipsi - pip script installer  (1) 2019.06.04
SSH with python3  (0) 2019.01.25
Flask on apache via mod_wsgi  (0) 2018.12.06
Python 2.6 to 2.7 (or 3.x)  (0) 2018.11.23
Django: 1. Start first application  (0) 2018.05.30

Flask on apache via mod_wsgi

Install Flask with python which you want


1
2
3
# python3.6 -m pip install --upgrade pip
 
# python3.6 -m pip install flask
cs


실행하려는 파이썬 버전의 pip 모듈로 flask를 설치 해야 apache에서 인식하고 flask 모듈들을 import 할 수 있다.

Install mod_wsgi for apache


1
2
3
# ./configure --with-apxs=/PATH_TO_APACHE/bin/apxs --with-python=/usr/local/bin/python3.6
 
# make && make install
cs


yum으로 설치하는 것 보다 python path를 제공해서 컴파일하고 설치하는 것을 권장한다. 버전에 맞는 mod_wsgi가 로드되어야 아파치에서 해당 모듈로 파이썬 어플리케이션을 문제 없이 실행 할 수 있다.

Configure httpd.conf or vhost.conf

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
...
 
# Outside of VirtualHost
 
WSGISocketPrefix /var/www/flaskprj
 
<VirtualHost *:80>
 
        DocumentRoot /var/www/flaskprj
 
        ServerName flask.com
 
# Location for .wsgi file
 
WSGIScriptAlias / /var/www/flaskprj/flask_app.wsgi
 
WSGIDaemonProcess flask_app python-path=/usr/local/ threads=5
 
# Flask application name
 
WSGIProcessGroup flask_app
 
<Directory /var/www/flaskprj>
 
  WSGIApplicationGroup %{GLOBAL}
 
  Order deny,allow
 
  Allow from all
 
</Directory>
 
</VirtualHost>
cs


가상 호스트 설정 시에 wsgi 모듈과 관련된 지시어들을 최소한으로 지정한 내용이니 참고

Make .wsgi file


1
2
3
4
5
6
7
8
9
10
11
# vim APP_NAME.wsgi
 
import sys
 
# Flask application path
 
sys.path.insert(0,'/var/www/flaskprj')
 
# Should import as application
 
from APP_NAME import app as application
cs


wsgi 파일에서 아파치로 들어온 요청을 파이썬 어플리케이션으로 요청을 전달한다.

Link shared library for python

1
2
3
4
5
6
7
8
9
# vim /etc/ld.so.conf
 
# Add python library path
 
# /sbin/ldconfig -v
 
 
 
# service httpd restart
cs


If you want to trouble shoot with your work

I recommand http access log and error log


파이썬 라이브러리를 제대로 로드할  수 없을 때 설정

'Python' 카테고리의 다른 글

SSH with python3  (0) 2019.01.25
flask: download file from directory  (0) 2019.01.02
Python 2.6 to 2.7 (or 3.x)  (0) 2018.11.23
Django: 1. Start first application  (0) 2018.05.30
Django: 0. Preparing environment  (0) 2018.05.28

Python 2.6 to 2.7 (or 3.x)


Linux 배포판에는 기본적으로 2.6 버전의 파이썬이 설치되어 있다. 이 때, 파이썬 가상 환경을 이용하여, 독립된 환경의 파이썬 개발환경을(2.7 또는 3.x) 설정 할 수 있다.


ref: https://danieleriksson.net/2017/02/08/how-to-install-latest-python-on-centos/


# yum update


# yum groupinstall -y "development tools"


# yum install -y zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel expat-devel


# yum install -y wget


Python 2.7.14:

# wget http://python.org/ftp/python/2.7.14/Python-2.7.14.tar.xz

# tar xf Python-2.7.14.tar.xz

# cd Python-2.7.14

# ./configure --prefix=/usr/local --enable-unicode=ucs4 --enable-shared LDFLAGS="-Wl,-rpath /usr/local/lib"

# make && make altinstall

 

Python 3.6.3:

#wget http://python.org/ftp/python/3.6.3/Python-3.6.3.tar.xz

#tar xf Python-3.6.3.tar.xz

#cd Python-3.6.3

#./configure --prefix=/usr/local --enable-shared LDFLAGS="-Wl,-rpath /usr/local/lib"

# make && make altinstall


altinstall을 사용하는 이유

일반적인 make install을 사용하는 경우, 하나의 시스템에 설치된 각 다른 버전의 파이썬들이 진단하거나 해결하기 어려운 문제를 일으킬 수 있기 때문이다.


Python 2.7.14:

# wget http://python.org/ftp/python/2.7.14/Python-2.7.14.tar.xz

# tar xf Python-2.7.14.tar.xz

# cd Python-2.7.14

# ./configure --prefix=/usr/local --enable-unicode=ucs4 --enable-shared LDFLAGS="-Wl,-rpath /usr/local/lib"

# make && make altinstall


Python 3.6.3:

# wget http://python.org/ftp/python/3.6.3/Python-3.6.3.tar.xz

# tar xf Python-3.6.3.tar.xz

# cd Python-3.6.3

# ./configure --prefix=/usr/local --enable-shared LDFLAGS="-Wl,-rpath /usr/local/lib"

# make && make altinstall


virtualenv를 설치하여 분리된 파이썬 환경 설정

# pip2.7 install virtualenv

# virtualenv my27project

 

Python 3.6

# python3.6 -m venv my36project

 

파이썬 버전 확인

# python --version

'Python' 카테고리의 다른 글

flask: download file from directory  (0) 2019.01.02
Flask on apache via mod_wsgi  (0) 2018.12.06
Django: 1. Start first application  (0) 2018.05.30
Django: 0. Preparing environment  (0) 2018.05.28
파이썬 장단점  (0) 2018.05.24

nc (NetCat)


# nc -w [TIMEOUT_SEC] -v [HOST] [PORT] </dev/null; echo $?


or


Just check the HOST's PORT opened

# nc -vz [HOST] [PORT]


Result examples on RHEL 6


Success:

Connection to [HOST] [PORT] port [PROTOCOL] succeeded!

0



Failure:

nc: connect to [HOST] port [PORT] ([PROTOCOL]) timed out: Operation now in progress

1


RHEL 6 (nc):


# yum install nc


RHEL 7 (nmap-ncat):


# yum install nmap-ncat

'System Engineering > Network' 카테고리의 다른 글

Tool: MRTG  (0) 2018.08.28
Protocol: SNMP  (0) 2018.08.21
HTTP Header Sample Analysis - www.ebay.com  (0) 2018.07.24
HTTP Header Sample Analysis - www.amazon.com  (0) 2018.07.24
HTTP Header Sample Analysis - Google.com  (0) 2018.07.24

+ Recent posts