getCurrentMetadata method

  1. @override
Future<Map<String, String>> getCurrentMetadata([
  1. String? player
])
override

Implementation

@override
Future<Map<String, String>> getCurrentMetadata([String? player]) async {
  try {
    final args = player != null
        ? [
            '--player=$player',
            'metadata',
            '--format',
            '{{title}}$_delimiter{{artist}}$_delimiter{{album}}$_delimiter{{status}}$_delimiter{{playerName}}$_delimiter{{position}}$_delimiter{{mpris:length}}$_delimiter{{mpris:artUrl}}',
          ]
        : [
            'metadata',
            '--format',
            '{{title}}$_delimiter{{artist}}$_delimiter{{album}}$_delimiter{{status}}$_delimiter{{playerName}}$_delimiter{{position}}$_delimiter{{mpris:length}}$_delimiter{{mpris:artUrl}}',
          ];

    final result = await Process.run('playerctl', args, runInShell: true);

    if (result.exitCode == 0) {
      final output = result.stdout.toString().trim();
      return _parseMetadata(output);
    }
    return {};
  } catch (e) {
    PlayerctlLogger.error('Error getting current metadata', 'Metadata', e);
    throw MetadataParsingException('Failed to get current metadata', e);
  }
}