Giter Site home page Giter Site logo

hadryan / datmusic-api Goto Github PK

View Code? Open in Web Editor NEW

This project forked from alashow/datmusic-api

0.0 2.0 0.0 160 KB

Alternative for VK Audio API [https://web.archive.org/web/*/https://datmusic.xyz/]

Home Page: https://datmusic.xyz

License: GNU General Public License v2.0

PHP 93.66% ApacheConf 0.91% HTML 5.43%

datmusic-api's Introduction

datmusic-api

This is new api for datmusic which uses directly m.vk.com (not api) to get audio data.

I made this because VK disabled their public Audio API access.

How it works

It's written using Lumen, micro web framework by Laravel

The app logins to site using credentials from .env or config file (multiple accounts supported) and saves cookies in cache for re-using. Then it searches songs with given query in vk website (currently from mobile version, m.vk.com) and parses it to an array. It will save parsed data in cache and will return JSON.

Search

Search results are cached for 24 hours by default.

https://example.com/search?q={query}&page={page}

Downloads & Streams

https://example.com/dl/{search_hash}/{audio_hash} (force download with proper file name (Artist - Title.mp3))

https://example.com/stream/{search_hash}/{audio_hash} (redirects to mp3 file)

https://example.com/bytes/{search_hash}/{audio_hash} (returns file size of mp3 in bytes)

Bitrate converting

Default convertable bitrates are: 64, 128, 192 You need to install ffmpeg to your server to make it work and change path to binary in config file.

https://example.com/dl/{search_hash}/{audio_hash}/{bitrate} https://example.com/stream/{search_hash}/{audio_hash}/{bitrate}

Hashing

Search hash calculated by request params (query and page). Audio hash calculated by audio id. Default hashing algorithm is crc32. I chose this because of speed, short length, and I didn't need cryptographic hashing. You can change it in config if you want.

In web version of VK, there is no page similar to audio.get, so we can only serve and stream mp3 files that are shown by search function (it searches from cache). But if using S3 as for caching mp3 files, it will search from there.

Cache

As far as I know, mp3 urls of VK songs are valid only for 24 hours. So we can cache search results only for 24 hours.

By default, when using S3 as storage, mp3 files can be cached forever (as long as mp3 file is present in bucket).

Default caching driver is files. Thanks to Laravel Cache system, it can be easily configured to different cache drivers. Redis cache driver is configured. Just change driver and set credentials in .env.

Using with S3 Storage

You can enable or disable S3 storage option in config file (enabled by default).

When it's enabled, mp3 files will be downloaded to s3 bucket instead of local disk.

Download/stream links will be redirected to S3 servers.

Deployment

Follow instructions described in here. or see short version in this comment;

Please browse code or open an issue to understand more.

Open an issue or contact me at [email protected] for help with deployment.

License

Copyright (C) 2017  Alashov Berkeli

    This program is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation, either version 3 of the License, or
    (at your option) any later version.

    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.

    You should have received a copy of the GNU General Public License
    along with this program.  If not, see <http://www.gnu.org/licenses/>.

datmusic-api's People

Contributors

alashow avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.