Only want local files from Mopidy for library and folders
This commit is contained in:
@@ -1234,7 +1234,7 @@ void MPDConnection::loadLibrary()
|
||||
MusicLibraryItemRoot *root=0;
|
||||
if (response.ok) {
|
||||
root = new MusicLibraryItemRoot;
|
||||
MPDParseUtils::parseLibraryItems(response.data, details.dir, ver, root);
|
||||
MPDParseUtils::parseLibraryItems(response.data, details.dir, ver, mopidy, root);
|
||||
} else { // MPD >=0.18 can fail listallinfo for large DBs, so get info dir by dir...
|
||||
root = new MusicLibraryItemRoot;
|
||||
if (!listDirInfo("/", root)) {
|
||||
@@ -1255,7 +1255,7 @@ void MPDConnection::loadFolders()
|
||||
emit updatingFileList();
|
||||
Response response=sendCommand("listall");
|
||||
if (response.ok) {
|
||||
emit dirViewUpdated(MPDParseUtils::parseDirViewItems(response.data), dbUpdate);
|
||||
emit dirViewUpdated(MPDParseUtils::parseDirViewItems(response.data, mopidy), dbUpdate);
|
||||
}
|
||||
emit updatedFileList();
|
||||
}
|
||||
@@ -1482,7 +1482,7 @@ bool MPDConnection::listDirInfo(const QString &dir, MusicLibraryItemRoot *root)
|
||||
Response response=sendCommand(topLevel ? "lsinfo" : ("lsinfo "+encodeName(dir)));
|
||||
if (response.ok) {
|
||||
QSet<QString> childDirs;
|
||||
MPDParseUtils::parseLibraryItems(response.data, details.dir, ver, root, !topLevel, &childDirs);
|
||||
MPDParseUtils::parseLibraryItems(response.data, details.dir, ver, mopidy, root, !topLevel, &childDirs);
|
||||
foreach (const QString &child, childDirs) {
|
||||
if (!listDirInfo(child, root)) {
|
||||
return false;
|
||||
|
||||
@@ -432,7 +432,8 @@ void MPDParseUtils::setGroupMultiple(bool g)
|
||||
}
|
||||
|
||||
void MPDParseUtils::parseLibraryItems(const QByteArray &data, const QString &mpdDir, long mpdVersion,
|
||||
MusicLibraryItemRoot *rootItem, bool parsePlaylists, QSet<QString> *childDirs)
|
||||
bool isMopidy, MusicLibraryItemRoot *rootItem, bool parsePlaylists,
|
||||
QSet<QString> *childDirs)
|
||||
{
|
||||
bool canSplitCue=mpdVersion>=MPD_MAKE_VERSION(0,17,0);
|
||||
QByteArray currentItem;
|
||||
@@ -452,7 +453,7 @@ void MPDParseUtils::parseLibraryItems(const QByteArray &data, const QString &mpd
|
||||
if (i == amountOfLines - 1 || lines.at(i + 1).startsWith("file:") || lines.at(i + 1).startsWith("playlist:")) {
|
||||
Song currentSong = parseSong(currentItem, Library);
|
||||
currentItem.clear();
|
||||
if (currentSong.file.isEmpty()) {
|
||||
if (currentSong.file.isEmpty() || (isMopidy && !currentSong.file.startsWith(Song::constMopidyLocal))) {
|
||||
continue;
|
||||
}
|
||||
|
||||
@@ -639,7 +640,7 @@ void MPDParseUtils::parseLibraryItems(const QByteArray &data, const QString &mpd
|
||||
}
|
||||
}
|
||||
|
||||
DirViewItemRoot * MPDParseUtils::parseDirViewItems(const QByteArray &data)
|
||||
DirViewItemRoot * MPDParseUtils::parseDirViewItems(const QByteArray &data, bool isMopidy)
|
||||
{
|
||||
QList<QByteArray> lines = data.split('\n');
|
||||
DirViewItemRoot *rootItem = new DirViewItemRoot;
|
||||
@@ -656,10 +657,9 @@ DirViewItemRoot * MPDParseUtils::parseDirViewItems(const QByteArray &data)
|
||||
} else if (line.startsWith("playlist: ")) {
|
||||
path=line.remove(0, 10);
|
||||
}
|
||||
|
||||
if (!path.isEmpty()) {
|
||||
qWarning() << path << isMopidy << path.startsWith(Song::constMopidyLocal);
|
||||
if (!path.isEmpty() && (!isMopidy || path.startsWith(Song::constMopidyLocal))) {
|
||||
QString mopidyPath;
|
||||
bool isMopidy=path.startsWith(Song::constMopidyLocal);
|
||||
if (isMopidy) {
|
||||
mopidyPath=path;
|
||||
path=Song::decodePath(path);
|
||||
|
||||
@@ -69,8 +69,9 @@ namespace MPDParseUtils
|
||||
extern bool groupMultiple();
|
||||
extern void setGroupMultiple(bool g);
|
||||
extern void parseLibraryItems(const QByteArray &data, const QString &mpdDir, long mpdVersion,
|
||||
MusicLibraryItemRoot *rootItem, bool parsePlaylists=true, QSet<QString> *childDirs=0);
|
||||
extern DirViewItemRoot * parseDirViewItems(const QByteArray &data);
|
||||
bool isMopidy, MusicLibraryItemRoot *rootItem, bool parsePlaylists=true,
|
||||
QSet<QString> *childDirs=0);
|
||||
extern DirViewItemRoot * parseDirViewItems(const QByteArray &data, bool isMopidy);
|
||||
extern QList<Output> parseOuputs(const QByteArray &data);
|
||||
extern QString addStreamName(const QString &url, const QString &name);
|
||||
extern QString getStreamName(const QString &url);
|
||||
|
||||
Reference in New Issue
Block a user