読者です 読者をやめる 読者になる 読者になる

Hiroto's diary

プログラミング関連を書くかも

YouTube,SoundCloudから並列でMP3をダウンロードするアプリを作った

Develop Electron Nodejs 自作ソフト

YouTube,SoundCloudから並列でMP3をダウンロードするアプリを作りました。ダウンロード機能は完全に使えるようになっています。 多分バグが残ってるのでバグ報告はTwitterGitHubのissueにでも飛ばしてくれれば直します。

ソースコードは全てGitHubに置いてあります。https://github.com/Hiroto-K/MP3-Downloader

CoffeeScript,SCSS,Hamlが書ける方はPull Requestを送っても結構です。大体の機能は取り込むと思います。

作った経緯

自分もよくYouTube,SoundCloudから曲を落とすのですが、ダウンロードアプリが大体Webブラウザで動くアプリで同時に複数のファイルを処理出来ないのが不便だと思ったから。同時に出来ないのはサーバーに負荷掛かるのを回避する為なのは分かりますが、不便な物は不便です。 なので自分用に並列でダウンロードするソフトを作ろうと思い作ってみました。自分のマシンなら負荷掛かっても問題ありませんし。

インストール

全部GitHubのREADME.mdに書いてあります。

技術的な話

なるべく楽にマルチプラットフォームで動かせるように作りました。 実際にGUIにはElectronを使っているのでマルチプラットフォームで動くようになっています。

使っているツール、ライブラリ

Electron

http://electron.atom.io/

GitHub社製のJavaScript等のWeb技術でGUIが作れるクロスプラットフォームデスクトップアプリケーションエンジン。楽にクロスプラットフォームGUIアプリが書けます。

MP3-DownloaderではGUIの作成に使っています。

CoffeeScript

http://coffeescript.org/

RubyPythonライクなAltJs。普段はRubyをメインで書いているので使うAltJSは毎回CoffeeScriptです。

MP3-DownloaderではJavaScript部分に使っています。

SCSS

http://sass-lang.com/

CSSを楽に書ける言語。Sass記法はあまり好きではないのでSCSS記法で書いています。

MP3-DownloaderではCSS部分に使っています。

Haml

http://haml.info/

HTMLテンプレートエンジン。書き方が単純なので分かりやすく書けます。

MP3-DownloaderではHTML部分に使っています。

Bower

http://bower.io/

Twitter社製のフロントエンドライブラリの管理ツール

MP3-DownloaderではBootstrap,jQuery等のライブラリの管理に使っています。

Gulp.js

http://gulpjs.com/

Nodejs製のタスクランナー。

MP3-DownloaderではCoffeeScript,SCSS,Hamlコンパイルに使っています。

youtube-dl

Pytohn版オリジナル https://rg3.github.io/youtube-dl/

Nodejsラッパー https://github.com/fent/node-youtube-dl

PythonFFmpegを使ってYouTubeからmp3ファイルをダウンロードするCLIアプリのNodejsラッパー。このライブラリはYoutubeのダウンロード専用だとばかり思っていましたが、実はSoundCloudもダウンロード出来たりします。MP3-DownloaderにPythonFFmpegが必要なのはこのライブラリを内部で使っているからです。

MP3-DownloaderではこのライブラリをYouTube,SoundCloudからmp3をダウンロードするのに使っています。

fs-extra

https://github.com/jprichardson/node-fs-extra

Nodejsのファイル操作ライブラリのfsを拡張したライブラリ。標準のfsに足りない機能があって便利です。

MP3-DownloaderではwriteJsonメソッドで設定ファイルへのJSON書き込み等に使っています。