Skip to content
This repository has been archived by the owner on Sep 22, 2021. It is now read-only.

Commit

Permalink
added bitrate converter (need to test tho), deploy script
Browse files Browse the repository at this point in the history
  • Loading branch information
alashow committed Jun 12, 2016
1 parent 1bea161 commit 126ff70
Show file tree
Hide file tree
Showing 10 changed files with 89 additions and 20 deletions.
2 changes: 2 additions & 0 deletions .gitignore
@@ -1 +1,3 @@
/dl
/cache
.DS_Store
4 changes: 4 additions & 0 deletions .rignore
@@ -0,0 +1,4 @@
/dl*
/cache*
.git*
deploy.sh
15 changes: 14 additions & 1 deletion css/style.css
@@ -1,5 +1,5 @@
/* ========================================================================
* Music v1.3.1
* Music v1.3.3
* https://github.com/alashow/music
* ======================================================================== */

Expand Down Expand Up @@ -213,6 +213,19 @@ li.list-group-item a:hover {
background-color: #2c3e50;
}

.badge-download {
margin-right: 5px;
}

.badge-download .btn {
color: white;
}

.badge-download>.btn+.dropdown-toggle{
padding-left: 5px;
padding-right: 5px;
}

/*Animated Loading*/
.spinner {
margin: 20px auto;
Expand Down
2 changes: 1 addition & 1 deletion css/style.min.css

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions deploy.sh
@@ -0,0 +1 @@
rsync --exclude-from=".rignore" --progress -avz --no-perms . alashov@datmusic.xyz:web/datmusic
45 changes: 35 additions & 10 deletions download.php
@@ -1,6 +1,6 @@
<?php
/* ========================================================================
* Music v1.3.1
* Music v1.3.3
* https://github.com/alashow/music
* ======================================================================== */

Expand Down Expand Up @@ -85,27 +85,52 @@
$fileName = $audio["artist"] . " - " . $audio["title"];
$audioUrl = $audio["url"];

$bitrate = intval($_REQUEST["bitrate"]);

$bitrateString = "";

if (! in_array($bitrate, $config["allowed_bitrates"])) {
$bitrate = -1;
}

$filePath = $config["dl_folder"] . "/" . md5($audioId) . ".mp3"; //caching mp3s, md5 for unique audioIds
$filePathConverted = str_replace(".mp3", "_$bitrate.mp3", $filePath);

if (file_exists($filePath) || downloadFile($audioUrl, $filePath)) {
if ($bitrate > 0) {
convertMp3Bitrate($bitrate, $filePath, $filePathConverted);
$filePath = $filePathConverted;
}

if (file_exists($filePath)) {
if ($isStream) {
stream($filePath, $fileName);
} else {
forceDownload($filePath, $fileName);
}
return;
} else {
if (downloadFile($audioUrl, $filePath)) {
if ($isStream) {
stream($filePath, $fileName);
} else {
forceDownload($filePath, $fileName);
}
}
}

//Functions

/**
* Executes ffmpeg command synchronously for converting given file to given bitrate
* @param $bitrate integer, one of $config["allowed_bitrates"]
* @param $input input mp3 file full path
* @param $output output mp3 file full path
*/
function convertMp3Bitrate($bitrate, $input, $output) {
global $config;

if (file_exists($output)) {
return;
}

$bitrateString = $config["allowed_bitrates_ffmpeg"][array_search($bitrate, $config["allowed_bitrates"])];

//FIXME: ffmpeg not always in path
exec("ffmpeg -i $input -codec:a libmp3lame $bitrateString $output");
}

/**
* Download file with given name to given path
* @param $url url to download
Expand Down
6 changes: 5 additions & 1 deletion helper.php
@@ -1,6 +1,6 @@
<?php
/* ========================================================================
* Music v1.3.1
* Music v1.3.3
* https://github.com/alashow/music
* ======================================================================== */
//get your own if doesn't work: https://github.com/alashow/music/wiki#how-to-get-your-own-token
Expand All @@ -12,6 +12,10 @@
$config["log_filename"] = "log";
$config["not_found_file_path"] = "/home/alashov/web/.config/404.html";

//allowing popular bitrates only: economy, standart, good, and best
$config["allowed_bitrates"] = array(64, 128, 192, 320);
$config["allowed_bitrates_ffmpeg"] = array("-q:a 9", "-q:a 5", "-q:a 2", "-b:a 320k");

//fixed token index can be send from download.php, when user types captcha. to pass captcha, we need to give vk same token and with returned captcha, not random one. otherwise, user typed captcha code will be waste.
$tokenIndex = intval($_REQUEST["tokenIndex"]);
if (isset($_REQUEST["tokenIndex"])) {
Expand Down
16 changes: 13 additions & 3 deletions index.html
Expand Up @@ -11,7 +11,7 @@
<meta name="theme-color" content="#2c3e50">
<title>datmusic</title>
<link rel="stylesheet" href="//maxcdn.bootstrapcdn.com/bootswatch/3.3.1/flatly/bootstrap.min.css">
<link rel="stylesheet" href="css/style.min.css?v=1.3.0">
<link rel="stylesheet" href="css/style.min.css?v=1.3.3">
</head>
<body>
<nav class="navbar navbar-default navbar-fixed-top" role="navigation">
Expand Down Expand Up @@ -137,7 +137,7 @@ <h4 class="modal-title" data-i18n="settings.title"></h4>
<script src="js/i18next.min.js" type="text/javascript" charset="utf-8"></script>
<script src="js/mustache.min.js" type="text/javascript" charset="utf-8"></script>
<script src="js/locales.min.js?v=1.3.0" type="text/javascript" charset="utf-8"></script>
<script src="js/app.min.js?v=1.3.0" type="text/javascript" charset="utf-8"></script>
<script src="js/app.min.js?v=1.3.3" type="text/javascript" charset="utf-8"></script>
<script>
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
Expand All @@ -153,7 +153,17 @@ <h4 class="modal-title" data-i18n="settings.title"></h4>
<span class="badge play" title="{{clickToPlay}}" data-i18n="[title]clickToPlay">
<span class="glyphicon glyphicon-play"></span>
</span>
<a title="{{clickToDownload}}" data-i18n="[title]clickToDownload" data-src="{{url.stream}}" href="{{url.download}}" target="_blank">
<div class="btn-group pull-right badge-download">
<a href="{{url.download.original}}" class="btn btn-primary btn-xs" target="_blank"><span class="glyphicon glyphicon-download"></span></a>
<a href="#" class="btn btn-primary btn-xs dropdown-toggle" data-toggle="dropdown" aria-expanded="false"><span class="caret"></span></a>
<ul class="dropdown-menu">
<li><a href="{{url.download.64}}" target="_blank">~64 kbit</a></li>
<li><a href="{{url.download.128}}" target="_blank">~128 kbit</a></li>
<li><a href="{{url.download.192}}" target="_blank">~192 kbit</a></li>
<li><a href="{{url.download.320}}" target="_blank">~320 kbit</a></li>
</ul>
</div>
<a title="{{clickToDownload}}" data-i18n="[title]clickToDownload" data-src="{{url.stream}}" href="{{url.download.original}}" target="_blank">
{{audio}}
</a>
</li>
Expand Down
16 changes: 13 additions & 3 deletions js/app.js
@@ -1,5 +1,5 @@
/* ========================================================================
* Music v1.3.1
* Music v1.3.3
* https://github.com/alashow/music
* ======================================================================== */

Expand Down Expand Up @@ -200,7 +200,11 @@ $(document).ready(function($) {
console.log(event);
};

if (!searchFromQueryParam()) {
if (location.hash.length > 2) {
var decodedQuery = decodeURIComponent(escape(window.atob(location.hash.substring(1, location.hash.length))));
search(decodedQuery, null, null, true);
$('#query').val(decodedQuery);
} else if (!searchFromQueryParam()) {
//Simulating search for demo of searching
var artists = [
"Agnes Obel", "Aloe Black", "Andrew Belle", "Angus Stone", "Arctic Monkeys",
Expand Down Expand Up @@ -328,7 +332,13 @@ $(document).ready(function($) {
"duration": msg.response[i].duration.toTime(),
"url": {
"stream": config.proxyMode ? streamUrl : msg.response[i].url,
"download": downloadUrl
"download": {
"original": downloadUrl,
"64": downloadUrl + (config.prettyDownloadUrlMode ? "/64" : "&bitrate=64"),
"128": downloadUrl + (config.prettyDownloadUrlMode ? "/128" : "&bitrate=128"),
"192": downloadUrl + (config.prettyDownloadUrlMode ? "/192" : "&bitrate=192"),
"320": downloadUrl + (config.prettyDownloadUrlMode ? "/320" : "&bitrate=320")
}
},
"audio": msg.response[i].artist + ' - ' + msg.response[i].title
};
Expand Down

0 comments on commit 126ff70

Please sign in to comment.