Skip to content

wellmoonloft/xiumusic

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

73 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

XiuMusic

Based on the personal NAS music player, Navidrome server development, theoretically supports Subsonic server

🇨🇳简体中文 | 🇺🇸English

Introduction

Xiu is a music anchor that I often watch recently. There is a word Xiu in her name, so she is called XiuMusic.

This is developed and debugged on the server environment of Navidrome based on the interface of Subsonic API , so all Subsonic api servers are supported. In the process, I got help from many people in the Navidrome discord group, thank them.

Notice The lyrics are saved in the sqlite at document. Currently, there is no export function.

The MacOS version is already on the Appstore, you can download it directly

iOS

Android

Screenshot_1675416868

Lyric

iPad


Quick start

  1. Clone project

  2. Delete ios and macos to regenerate

  3. Execute flutter create . in the project directory

  4. Execute flutter packages get in the project directory

MacOS/IOS

The following files are added DebugProfile.entitlements Release.entitlements

<key>com.apple.security.network.client</key>
<true/>

Turn on lock screen playback

IOS

Info.plist

<key>UIBackgroundModes</key>
	<array>
		<string>audio</string>
	</array>

AndroidManifest.xml

<manifest xmlns:tools="http://schemas.android.com/tools" ...>
  <!-- ADD THESE TWO PERMISSIONS -->
  <uses-permission android:name="android.permission.WAKE_LOCK"/>
  <uses-permission android:name="android.permission.FOREGROUND_SERVICE"/>
  
  <application ...>
    
    ...
    
    <!-- EDIT THE android:name ATTRIBUTE IN YOUR EXISTING "ACTIVITY" ELEMENT -->
    <activity android:name="com.ryanheise.audioservice.AudioServiceActivity" ...>
      ...
    </activity>
    
    <!-- ADD THIS "SERVICE" element -->
    <service android:name="com.ryanheise.audioservice.AudioService"
        android:foregroundServiceType="mediaPlayback"
        android:exported="true" tools:ignore="Instantiatable">
      <intent-filter>
        <action android:name="android.media.browse.MediaBrowserService" />
      </intent-filter>
    </service>

    <!-- ADD THIS "RECEIVER" element -->
    <receiver android:name="com.ryanheise.audioservice.MediaButtonReceiver"
        android:exported="true" tools:ignore="Instantiatable">
      <intent-filter>
        <action android:name="android.intent.action.MEDIA_BUTTON" />
      </intent-filter>
    </receiver> 
  </application>
</manifest>

Use the lyrics search function

You need to set the api of Netease Cloud. According to the instructions of setting NeteaseCloudMusicApi here, after configuring one on vercel, set the api The domain name can be used after it is saved in the set lyrics server.

WechatIMG673

Dependencies

Todo List

  • Debugged: macOS iPhone iPad Android
  • Not yet: Windows/Linux should be fine?
  • desktop shortcut key