All Projects → alashow → Datmusic Api

alashow / Datmusic Api

Licence: gpl-2.0
Alternative for VK Audio API

Projects that are alternatives of or similar to Datmusic Api

Deprecated Lame Mirror
[DEPRECATED] Old, Semi-official mirror of the CVS repository of the LAME MP3 encoder.
Stars: ✭ 73 (-54.37%)
Mutual labels:  audio, music, mp3
Ni Media
NI Media is a C++ library for reading and writing audio streams.
Stars: ✭ 158 (-1.25%)
Mutual labels:  audio, music, mp3
Av Converter
[av-converter.com] Audio and Video Converter, and YouTube downloader. Convert to MP3, MP4, AAC, FLAC, AC3, WAV, etc.
Stars: ✭ 97 (-39.37%)
Mutual labels:  audio, music, mp3
Minimp3
Minimalistic MP3 decoder single header library
Stars: ✭ 898 (+461.25%)
Mutual labels:  audio, music, mp3
Musicplayer
A minimal music player built on electron.
Stars: ✭ 145 (-9.37%)
Mutual labels:  audio, music, mp3
Vk Audio Token
Library that obtains VK tokens that work for VK audio API. Библиотека для получения токена VK, подходящего для Audio API.
Stars: ✭ 81 (-49.37%)
Mutual labels:  audio, music, vk
Sbplayerclient
支持全格式的mac版视频播放器
Stars: ✭ 110 (-31.25%)
Mutual labels:  audio, music, mp3
Music Beat Detector
music-beat-detector is a library that analyzes a music stream and detects any beat. It can be used to control lights or any magic effect by the music wave.
Stars: ✭ 127 (-20.62%)
Mutual labels:  music, mp3
Yt Audio
A simple, configurable youtube-dl wrapper to download and manage youtube audio
Stars: ✭ 132 (-17.5%)
Mutual labels:  audio, music
Newspaper
News, full-text, and article metadata extraction in Python 3. Advanced docs:
Stars: ✭ 11,545 (+7115.63%)
Mutual labels:  crawler, scraper
Airsonic
📡 ☁️ 🎶Airsonic, a Free and Open Source community driven media server (fork of Subsonic and Libresonic)
Stars: ✭ 1,876 (+1072.5%)
Mutual labels:  audio, music
Amplipi
Whole House Audio System 🔊
Stars: ✭ 125 (-21.87%)
Mutual labels:  audio, music
Android Youtubemp3
Download videos as mp3 directly from Youtube Android App
Stars: ✭ 124 (-22.5%)
Mutual labels:  music, mp3
Xsound
Web Audio API Library for Synthesizer, Effects, Visualization, Multi-Track Recording, Audio Streaming, Visual Audio Sprite ...
Stars: ✭ 123 (-23.12%)
Mutual labels:  audio, music
Jiosaavnapi
An unofficial API for JioSaavn written in Python 3
Stars: ✭ 123 (-23.12%)
Mutual labels:  music, mp3
Onegram
This repository is no longer maintained.
Stars: ✭ 137 (-14.37%)
Mutual labels:  crawler, scraper
Google Play Scraper
Google play scraper for Python inspired by <facundoolano/google-play-scraper>
Stars: ✭ 143 (-10.62%)
Mutual labels:  crawler, scraper
Mediafile
A unified reader of metadata from audio & video files.
Stars: ✭ 138 (-13.75%)
Mutual labels:  audio, mp3
Essentia
C++ library for audio and music analysis, description and synthesis, including Python bindings
Stars: ✭ 1,985 (+1140.63%)
Mutual labels:  audio, music
Audio Steganography Algorithms
A Library of Audio Steganography & Watermarking Algorithms
Stars: ✭ 146 (-8.75%)
Mutual labels:  audio, mp3

datmusic-api vk-api

This branch contains a wrapper for VK API.

VK's private audio APIs can be used only with tokens from official apps or special third party apps (for ex. Kate mobile). User agent of that app must be used when talking to VK when using such tokens.

How it works

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

The wrapper searches via API, caches the results. Tries to recover from captchas. Everything else is same as in original datmusic-api.

How to get tokens

See https://github.com/vodka2/vk-audio-token

Endpoints

Search

By default, audio and album/artist search results are cached for 24 hours and a week, respectively.

  • Audio search - https://example.com/search?q={query}&page={page}
  • Artists search - https://example.com/search/artists?q={query}
  • Albums search - https://example.com/search/albums?q={query}
    • Querying artist name will return artist's all albums

Artists

  • Get audios by artist - https://example.com/artists/{artist_id}
  • Get albums by artist - https://example.com/artists/{artist_id}/albums

Albums

This endpoint will require extra parameters returned by albums search, owner_id and access_key.

Get audios by album - https://example.com/albums/{album_id}?owner_id={owner_id}&access_key={access_key}

Downloads & Streams

  • Force download with proper file name (Artist - Title.mp3) - https://example.com/dl/{search_hash}/{audio_hash}
  • Redirects to mp3 file - https://example.com/stream/{search_hash}/{audio_hash}
  • Get file size of mp3 in bytes - https://example.com/bytes/{search_hash}/{audio_hash}

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 and owner 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.

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.

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.

Errors

In vk-api branch, you can get errors in search responses. Captchas are the only recoverable errors. Example captcha error response:

{
  "status": "error",
  "error": {
    "message": "Captcha!",
    "captcha_index": 1,
    "captcha_id": 123456789,
    "captcha_img": "https://url-to-captcha"
  }
}

Client app will need to show captcha_img to user, and then retry search request with 3 additional queries:

  1. captcha_index returned captcha index.
  2. captcha_id returned captcha id.
  3. captcha_key user's answer to shown captcha_img captcha.

https://example.com/search?q={query}&page={page}&captcha_index={captcha index}&captcha_id={captcha id}&captcha_key={captcha answer}

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/>.
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].