Flutter音乐流媒体API插件opensubsonic_api的使用

发布于 1周前 作者 bupafengyu 来自 Flutter

Flutter音乐流媒体API插件opensubsonic_api的使用

开始使用

opensubsonic_api.dart 是一个用于 Dart 的 Subsonic API 封装库,同时支持 OpenSubsonic。

定义 SubsonicApi

首先,我们需要定义 SubsonicApi 实例。可以通过以下方式设置基础 URL 和认证信息:

final client = SubsonicApi(
  baseUrl: 'https://example.com', // 或者 'http://localhost:3000'
  auth: SubsonicAuthModel.randomSalt(
    'admin', // 你的用户名
    'admin-password', // 你的密码
  ),
);

final result = await client.api.getArtists();
print(result);

注意事项

  • 认证方式:有多种方法可以设置认证信息。
    • 如果不想在代码中暴露密码,可以使用 [SubsonicAuthModel.token]
    • 另外,也可以使用 [SubsonicAuthModel.password] 直接传递密码;不过,这种方式仅适用于测试环境。

完整示例

以下是一个完整的 Flutter 示例,展示如何使用 opensubsonic_api.dart 获取艺术家列表:

import 'package:flutter/material.dart';
import 'package:opensubsonic_api/opensubsonic_api.dart';

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(title: Text('Subsonic API 示例')),
        body: Center(
          child: FutureBuilder(
            future: fetchArtists(),
            builder: (context, snapshot) {
              if (snapshot.connectionState == ConnectionState.waiting) {
                return CircularProgressIndicator();
              } else if (snapshot.hasError) {
                return Text('错误: ${snapshot.error}');
              } else {
                return Text('艺术家列表: ${snapshot.data}');
              }
            },
          ),
        ),
      ),
    );
  }

  Future<String> fetchArtists() async {
    final client = SubsonicApi(
      baseUrl: 'https://example.com', // 替换为你的 Subsonic/OpenSubsonic 服务器地址
      auth: SubsonicAuthModel.randomSalt(
        'admin', // 替换为你的用户名
        'admin-password', // 替换为你的密码
      ),
    );

    try {
      final result = await client.api.getArtists();
      return result.toString();
    } catch (e) {
      return '获取失败: $e';
    }
  }
}

更多关于Flutter音乐流媒体API插件opensubsonic_api的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter音乐流媒体API插件opensubsonic_api的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


opensubsonic_api 是一个用于与 Subsonic API 兼容的音乐流媒体服务器进行交互的 Flutter 插件。Subsonic 是一个流行的音乐流媒体服务器,允许用户从任何地方访问他们的音乐库。opensubsonic_api 插件使得在 Flutter 应用中集成 Subsonic 功能变得非常容易。

安装

首先,你需要在 pubspec.yaml 文件中添加 opensubsonic_api 依赖:

dependencies:
  flutter:
    sdk: flutter
  opensubsonic_api: ^0.1.0  # 请确保使用最新版本

然后运行 flutter pub get 来安装依赖。

初始化

在使用 opensubsonic_api 之前,你需要初始化一个 OpenSubsonic 实例。通常你需要提供服务器的 URL、用户名和密码。

import 'package:opensubsonic_api/opensubsonic_api.dart';

final subsonic = OpenSubsonic(
  baseUrl: 'https://your.subsonic.server',
  username: 'your_username',
  password: 'your_password',
  apiVersion: '1.16.0',  // Subsonic API 版本
);

常用功能

1. 获取音乐库信息

Future<void> getMusicLibrary() async {
  try {
    final response = await subsonic.getMusicFolders();
    print('Music Folders: ${response.folders}');
  } catch (e) {
    print('Error: $e');
  }
}

2. 获取专辑列表

Future<void> getAlbums() async {
  try {
    final response = await subsonic.getAlbumList2();
    print('Albums: ${response.albumList2}');
  } catch (e) {
    print('Error: $e');
  }
}

3. 获取歌曲信息

Future<void> getSongInfo(String songId) async {
  try {
    final response = await subsonic.getSong(songId);
    print('Song Info: ${response.song}');
  } catch (e) {
    print('Error: $e');
  }
}

4. 播放歌曲

Future<void> playSong(String songId) async {
  try {
    final streamUrl = await subsonic.stream(songId);
    print('Stream URL: $streamUrl');
    // 使用 streamUrl 在音频播放器中播放歌曲
  } catch (e) {
    print('Error: $e');
  }
}

5. 搜索歌曲

Future<void> searchSongs(String query) async {
  try {
    final response = await subsonic.search3(query);
    print('Search Results: ${response.searchResult3}');
  } catch (e) {
    print('Error: $e');
  }
}

错误处理

在使用 opensubsonic_api 时,可能会遇到各种错误,例如网络问题、认证失败等。你可以使用 try-catch 块来捕获并处理这些错误。

try {
  final response = await subsonic.getAlbumList2();
  print('Albums: ${response.albumList2}');
} on SubsonicApiException catch (e) {
  print('Subsonic API Error: ${e.message}');
} catch (e) {
  print('Unexpected Error: $e');
}
回到顶部
AI 助手
你好,我是IT营的 AI 助手
您可以尝试点击下方的快捷入口开启体验!