かさやぬすの日記

後で思い出したいことを書く

たったの30行でYouTubeの動画を簡単ダウンロード!【Python】

pythonは僕が好きなプログラミング言語の一つです。
その魅力はそれなりに使えるスクリプトを自分で簡単にかけることだと思います。

自分はよくYoutubeを利用するので、好きな動画や曲を簡単にダウンロードできたらいいなぁ
ということで、youtubeの動画ダウンロード用スクリプトを昔作りました。

すでにオンラインサービスやCravingExplorerなどでyoutubeの動画をダウンロードできる既存のアプリは
存在するのですが、自分で書いたスクリプトなので愛着もあり、
このスクリプトを今でも愛用しています。

以下簡単に使い方を説明します。


1. python3コマンドでこのスクリプトを起動します。

python3 download.py


2. 起動したら下の画像のようにURLを聞かれるので落としたい動画のURLを入力してENTERします。


      f:id:kasayanus:20180705001036p:plain


3.  数秒後、スクリプトと同じディレクトリにmp4とmp3のファイルが保存されます。

    f:id:kasayanus:20180705001230p:plain




下のコードが今回紹介したdownload.pyです。
(このスクリプトではダウンロードしたmp4をmp3に変換するためにfffmpegを併用しています)

みていただければわかるように非常に短いコードで、簡単に
使える実用的なスクリプトが作れます。
pythonは学習コストも低く初心者でも勉強しやすいことで知られています。
新しいフレームワークやライブラリのインストールもコマンド一つで簡単にでき、知っているととても便利な言語だと思います!

import pytube
import subprocess
import os
import sys

while(True):
 input_text=input("URL or EXIT:")

 if(input_text=="exit"):
  sys.exit()
 else:
  yt = pytube.YouTube(input_text)
   if(yt==None):
    print("invalid URL")
   else:
    vids= yt.streams.all()
    parent_dir = r""
    vids[0].download(parent_dir)
    default_filename = vids[0].default_filename 
    new_filename = default_filename+".mp3"
    subprocess.call(['ffmpeg', '-i', 
			    os.path.join(parent_dir, default_filename),
			    os.path.join(parent_dir, new_filename)
			])

    print('done')

"はじめてのハッカソン"に参加してきました

今日は六本木一丁目の泉ガーデンというコワーキングスペースハッカソンのイベントに参加しました。

4〜6人のグループを4つ作りそれぞれのグループがアイデアを出し合って、一からWebサービスを開発するというものでした。

率直に言えば自分は今まで共同開発の経験がなかったので、未熟さを感じました。

それは技術力の未熟さでもあるし、自分の考えていることをうまく言葉で伝えられないという情報伝達力(コミュ力)の未熟さでもありました。

自分はRailsでサーバプログラムを担当しましたが、他のメンバーの方が作ったHTMLやCSSJavascriptクラウドサーバとのマージ作業がうまく行かず当初予定していたようになかなか開発が進みませんでした。

結論としては、今回のハッカソンでは、ハッカソンのもつハッカソンが大好きな人たちの感じるハッカソンの”本当の楽しさ”には達しなかったんじゃないかな、と思いました。

あくまで想像ですが、ハッカソンの本当の楽しさというのは、それぞれが作った部品を結合させていきプロトタイプを作り上げて、そこからさまざまな実現可能な拡張機能をメンバー全員で検討していき、それを再びプロトタイプの上に乗っけて、どんどんサービスの規模を広げていくこと、これがハッカソンの楽しさなんじゃないかな、と思いました。

今回のハッカソンではこの段階まで行かなかったのがとても残念でした。

また、今回のハッカソンで得た気づきというのがあります。

それは深く狭く型の学習の重要性です。

自分はウェブプログラミングを始めてまだ日が浅いので、とにかくいろんなフレームワークやウェブ技術を"広く浅く"学習していくという方針で今まで学習を勧めていました。そうすることで、例えばなにかネット上記事を読んでいたり、人との会話で出てきたウェブ技術に対して知らないよりは少しでも知っていたほうが飲み込みやすくなると思ったからです。しかし、それはサービスを作り上げる上ではあまりよくない勉強法だというふうに気づきました。一つの技術をもっと深く勉強していくことの必要性を今回のハッカソンで感じました。

なにはともあれ。今回のハッカソンは自分の技術力をはじめて客観的に見ることができたいい機会でした。

参加した皆さんありがとうございました!

めちゃくちゃ疲れて眠いのでこのへんで終わります。