view src/track/media.cc @ 229:adc20fa321c1

theme: force Fusion style on platforms other than Win32 or OS X I was reluctant to do this, but most of the other styles just look like pure shite regardless of whether I force a stylesheet on them or not. KDE's style is actually hilariously bad paired with my stylesheet, so I've decided to also make the stylesheet Windows-specific as well, because that's really the only platform where it makes sense in the first place.
author Paper <paper@paper.us.eu.org>
date Wed, 10 Jan 2024 21:23:57 -0500
parents 649786bae914
children d030b30526d5 2f5a9247e501
line wrap: on
line source

#include "track/media.h"
#include "core/filesystem.h"
#include "core/strings.h"
#include "core/session.h"

#include <QFile>
#include <QTextStream>

#include <string>
#include <unordered_map>
#include <vector>
#include <filesystem>

#include "animia.h"

namespace Track {
namespace Media {

static bool GetCurrentlyPlayingResults(std::vector<animia::Result>& results) {
	std::vector<animia::Player> players;

	players.reserve(session.config.recognition.players.size());
	for (const auto& [enabled, player] : session.config.recognition.players)
		if (enabled && player.type == animia::PlayerType::Default)
			players.push_back(player);

	if (!animia::GetResults(players, results))
		return false;

	return true;
}

/* meh */
bool GetCurrentlyPlaying(std::vector<std::string>& vec) {
	std::vector<animia::Result> results;

	if (!GetCurrentlyPlayingResults(results))
		return false;

	bool success = false;

	for (const auto& result : results) {
		for (const auto& media : result.media) {
			for (const auto& info : media.information) {
				switch (info.type) {
					case animia::MediaInfoType::File:
					case animia::MediaInfoType::Title:
						vec.push_back(std::filesystem::path(info.value).filename().string());
						success |= true;
					default:
						break;
				}
			}
		}
	}

	return success;
}

} // namespace Media
} // namespace Track