Giter VIP home page Giter VIP logo

musicboxapi's Introduction

MusicBoxApi

Software License versions platform platform

从 musicbox 网易云音乐 CLI 播放器抽离出来的 API ,去掉了界面相关的逻辑,方便在其他程序中复用。

安装

pip install MusicBoxApi

使用示例

from MusicBoxApi import api as NetEaseApi

def get_top_songlist():
    netease = NetEaseApi.NetEase()
    music_list = netease.top_songlist()
    datalist = netease.dig_info(music_list, 'songs')
    playlist = []
    for data in datalist:
        music_info = {}
        music_info.setdefault("song_name", data.get("song_name"))
        music_info.setdefault("artist", data.get("artist"))
        music_info.setdefault("album_name", data.get("album_name"))
        music_info.setdefault("mp3_url", data.get("mp3_url"))
        music_info.setdefault("playTime", data.get("playTime"))
        music_info.setdefault("quality", data.get("quality"))
        playlist.append(music_info)
    return playlist

print(get_top_songlist())

musicboxapi's People

Contributors

weakish avatar wzpan avatar xinhaoyuan avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

musicboxapi's Issues

[Question] Why `.setdefault` in code example in README?

In README:

def get_top_songlist():
    # ...
    for data in datalist:
        music_info = {}
        music_info.setdefault("song_name", data.get("song_name"))
        music_info.setdefault("artist", data.get("artist"))
        music_info.setdefault("album_name", data.get("album_name"))
        # ...

music_info is (re)assigned to an empty dictionary on the start of every loop,
so why

music_info.setdefault(k, v)

is used instead of directly

music_info[k] = v

?

`playlist_detail` only returns at most 1000 tracks

playlist_detail returns data['result']['tracks'], which contains at most 1000 tracks.
But playlists can contain up to 10000 tracks.

I suggest check trackCount, if it is greater than 1000, raises a TooManyTracksException.

TypeError: Only byte strings can be passed to C code

D:>python music_fm.py
Traceback (most recent call last):
File "music_fm.py", line 7, in
api.login("1395345", "******")
File "D:\anaconda3\lib\site-packages\MusicBoxApi\api.py", line 270, in login
return self.phone_login(username, password)
File "D:\anaconda3\lib\site-packages\MusicBoxApi\api.py", line 292, in phone_login
data = encrypted_request(text)
File "D:\anaconda3\lib\site-packages\MusicBoxApi\api.py", line 107, in encrypted_request
encText = aesEncrypt(aesEncrypt(text, nonce), secKey)
File "D:\anaconda3\lib\site-packages\MusicBoxApi\api.py", line 116, in aesEncrypt
encryptor = AES.new(secKey, 2, '0102030405060708')
File "D:\anaconda3\lib\site-packages\Crypto\Cipher\AES.py", line 202, in new
return create_cipher(sys.modules[name], key, mode, *args, **kwargs)
File "D:\anaconda3\lib\site-packages\Crypto\Cipher_init
.py", line 55, in _create_cipher
return modes[mode](factory, **kwargs)
File "D:\anaconda3\lib\site-packages\Crypto\Cipher_mode_cbc.py", line 232, in _create_cbc_cipher
cipher_state = factory._create_base_cipher(kwargs)
File "D:\anaconda3\lib\site-packages\Crypto\Cipher\AES.py", line 89, in _create_base_cipher
expect_byte_string(key)
File "D:\anaconda3\lib\site-packages\Crypto\Util_raw_api.py", line 194, in expect_byte_string
raise TypeError("Only byte strings can be passed to C code")
TypeError: Only byte strings can be passed to C code

Code:

-- coding: utf-8 --

from MusicBoxApi import api as NetEaseApi
import logging

api = NetEaseApi.NetEase()
api.login(***********, **********)

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.