From 1be76411e3d6ec00d3caf6c12a67d141ab0bd6da Mon Sep 17 00:00:00 2001 From: Maikiwi Date: Sun, 24 Jul 2022 13:35:10 -0700 Subject: [PATCH 01/18] Revert back to music metadata --- src/main/providers/local/index.ts | 112 +++++------------------------- 1 file changed, 19 insertions(+), 93 deletions(-) diff --git a/src/main/providers/local/index.ts b/src/main/providers/local/index.ts index 157ac85e..0c32b042 100644 --- a/src/main/providers/local/index.ts +++ b/src/main/providers/local/index.ts @@ -6,7 +6,6 @@ import * as mm from 'music-metadata'; import {Md5} from 'ts-md5/dist/md5'; import e from "express"; import { EventEmitter } from 'events'; -import { parseFile, recursiveFolderSearch } from 'cider_utils'; export class LocalFiles { static localSongs: any = []; @@ -35,22 +34,22 @@ export class LocalFiles { static async scanLibrary() { ProviderDB.init() let folders = utils.getStoreValue("libraryPrefs.localPaths") - if (folders == null || folders.length == null || folders.length == 0) folders = [] + if (folders == null || folders.length == null || folders.length == 0) folders = ["D:\\Music"] console.log('folders', folders) - let parseFileQueue: any[] = []; let mmQueue: any[] = [] + let files: any[] = [] for (var folder of folders) { - // Recursively search and add - let result = await recursiveFolderSearch(folder) - parseFileQueue = parseFileQueue.concat(result.parseFile) - mmQueue = mmQueue.concat(result.musicMetadata) + // get files from the Music folder + files = files.concat(await LocalFiles.getFiles(folder)) } - if (parseFileQueue.length !== 0 || mmQueue.length !== 0) {console.log('Recursive Folder Search in Cider Utils worki')} + + //console.log("cider.files", files2); + let supporttedformats = ["mp3", "aac", "webm", "flac", "m4a", "ogg", "wav", "opus"] + let audiofiles = files.filter(f => supporttedformats.includes(f.substring(f.lastIndexOf('.') + 1))); + // console.log("cider.files2", audiofiles, audiofiles.length); let metadatalist = [] let metadatalistart = [] let numid = 0; - - // Music Metadata fallback - for (var audio of mmQueue) { + for (var audio of audiofiles) { try { const metadata = await mm.parseFile(audio); let lochash = Md5.hashStr(audio) ?? numid; @@ -121,83 +120,19 @@ export class LocalFiles { } } catch (e) {console.error("error:", e)} } - - // Cider-Utils supported formats. - for (var audio of parseFileQueue) { - try { - const metadata = await parseFile(audio); - let lochash = Md5.hashStr(audio) ?? numid; - if (metadata != null) { - let form = { - "id": "ciderlocal" + lochash, - "_id": "ciderlocal" + lochash, - "type": "podcast-episodes", - "href": audio, - "attributes": { - "artwork": { - "width": 3000, - "height": 3000, - "url": "/ciderlocalart/" + "ciderlocal" + lochash, - }, - "topics": [], - "url": "", - "subscribable": true, - "mediaKind": "audio", - "genreNames": [ - "" - ], - // "playParams": { - // "id": "ciderlocal" + numid, - // "kind": "podcast", - // "isLibrary": true, - // "reporting": false }, - "trackNumber": metadata.track_number ?? 0, - "discNumber": metadata.disc_number ?? 0, - "name": metadata.title ?? audio.substring(audio.lastIndexOf('\\') + 1), - "albumName": metadata.album, - "artistName": metadata.artist, - "copyright": metadata.copyright ?? "", - "assetUrl": "file:///" + audio, - "contentAdvisory": "", - "releaseDateTime": `${metadata.year ?? '2022'}-05-13T00:23:00Z`, - "durationInMillis": metadata.duration_in_ms ?? 0, - "bitrate": metadata.bitrate ?? 0, - "offers": [ - { - "kind": "get", - "type": "STDQ" - } - ], - "contentRating": "clean" - }, - flavor: metadata.bitrate, - localFilesMetadata: { - lossless: metadata.lossless, - container: metadata.container, - bitDepth: metadata.bit_depth, - sampleRate: metadata.sample_rate ?? 0, - }, - }; - let art = { - id: "ciderlocal" + lochash, - _id: "ciderlocalart" + lochash, - url: metadata.artwork != undefined ? metadata.artwork : "", - } - metadatalistart.push(art) - numid += 1; - ProviderDB.db.putIfNotExists(form) - ProviderDB.db.putIfNotExists(art) - metadatalist.push(form) - - if (this.localSongs.length === 0 && numid % 10 === 0) { // send updated chunks only if there is no previous database - this.eventEmitter.emit('newtracks', metadatalist)} - } - } catch (e) {console.error("error:", e)} - } + // console.log('metadatalist', metadatalist); this.localSongs = metadatalist; this.localSongsArts = metadatalistart; return metadatalist; } + static async getFiles(dir: any) { + const dirents = await readdir(dir, { withFileTypes: true }); + const files = await Promise.all(dirents.map((dirent: any) => { + const res = path.resolve(dir, dirent.name); + return dirent.isDirectory() ? this.getFiles(res) : res; + })); + return Array.prototype.concat(...files); + } static async cleanUpDB(){ let folders = utils.getStoreValue("libraryPrefs.localPaths") @@ -217,15 +152,6 @@ export class LocalFiles { } } - static async getFiles(dir: any) { - const dirents = await readdir(dir, { withFileTypes: true }); - const files = await Promise.all(dirents.map((dirent: any) => { - const res = path.resolve(dir, dirent.name); - return dirent.isDirectory() ? this.getFiles(res) : res; - })); - return Array.prototype.concat(...files); - } - static setupHandlers () { const app = utils.getExpress() console.log("Setting up handlers for local files") From c667263da5b0fd4bfa497357e94d30c184338bae Mon Sep 17 00:00:00 2001 From: Maikiwi Date: Sun, 24 Jul 2022 13:37:17 -0700 Subject: [PATCH 02/18] gimp v2 --- src/main/providers/local/index.ts | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/src/main/providers/local/index.ts b/src/main/providers/local/index.ts index 0c32b042..bdcf547c 100644 --- a/src/main/providers/local/index.ts +++ b/src/main/providers/local/index.ts @@ -34,18 +34,15 @@ export class LocalFiles { static async scanLibrary() { ProviderDB.init() let folders = utils.getStoreValue("libraryPrefs.localPaths") - if (folders == null || folders.length == null || folders.length == 0) folders = ["D:\\Music"] - console.log('folders', folders) + if (folders == null || folders.length == null || folders.length == 0) folders = [] let files: any[] = [] for (var folder of folders) { // get files from the Music folder files = files.concat(await LocalFiles.getFiles(folder)) } - //console.log("cider.files", files2); let supporttedformats = ["mp3", "aac", "webm", "flac", "m4a", "ogg", "wav", "opus"] let audiofiles = files.filter(f => supporttedformats.includes(f.substring(f.lastIndexOf('.') + 1))); - // console.log("cider.files2", audiofiles, audiofiles.length); let metadatalist = [] let metadatalistart = [] let numid = 0; @@ -118,7 +115,7 @@ export class LocalFiles { if (this.localSongs.length === 0 && numid % 10 === 0) { // send updated chunks only if there is no previous database this.eventEmitter.emit('newtracks', metadatalist)} } - } catch (e) {console.error("error:", e)} + } catch (e) {console.error("localfiles error:", e)} } // console.log('metadatalist', metadatalist); this.localSongs = metadatalist; From 53e5f5b9c8a758e864477dbe2c9abb5a3529750a Mon Sep 17 00:00:00 2001 From: Maikiwi Date: Sun, 24 Jul 2022 13:46:47 -0700 Subject: [PATCH 03/18] remove local files as experiment --- src/renderer/views/components/settings-window.ejs | 15 --------------- src/renderer/views/components/sidebar.ejs | 2 +- 2 files changed, 1 insertion(+), 16 deletions(-) diff --git a/src/renderer/views/components/settings-window.ejs b/src/renderer/views/components/settings-window.ejs index 42415be2..e25f6639 100644 --- a/src/renderer/views/components/settings-window.ejs +++ b/src/renderer/views/components/settings-window.ejs @@ -1205,21 +1205,6 @@ - -
-
- Local Files -
-
- -
-
-
{{$root.getLz('settings.option.experimental.compactUI')}} diff --git a/src/renderer/views/components/sidebar.ejs b/src/renderer/views/components/sidebar.ejs index 4804aa27..91f13510 100644 --- a/src/renderer/views/components/sidebar.ejs +++ b/src/renderer/views/components/sidebar.ejs @@ -138,7 +138,7 @@ > - @@ -230,9 +252,9 @@
- +
\ No newline at end of file diff --git a/src/renderer/views/app/panels.ejs b/src/renderer/views/app/panels.ejs index 972d0546..cd5783a1 100644 --- a/src/renderer/views/app/panels.ejs +++ b/src/renderer/views/app/panels.ejs @@ -25,12 +25,18 @@ + + + + + + diff --git a/src/renderer/views/app/sidebar.ejs b/src/renderer/views/app/sidebar.ejs deleted file mode 100644 index dacff2c8..00000000 --- a/src/renderer/views/app/sidebar.ejs +++ /dev/null @@ -1,303 +0,0 @@ -
- -
diff --git a/src/renderer/views/components/animatedartwork-view.ejs b/src/renderer/views/components/animatedartwork-view.ejs index ef091ee3..6ffc923f 100644 --- a/src/renderer/views/components/animatedartwork-view.ejs +++ b/src/renderer/views/components/animatedartwork-view.ejs @@ -59,7 +59,7 @@ } this.hls.attachMedia(this.$refs.video); - this.hls.loadSource(this.video); + this.hls.loadSource(this.video, p); let u = this.hls; var quality = app.cfg.visual.animated_artwork_qualityLevel; setTimeout(() => { diff --git a/src/renderer/views/components/app-content.ejs b/src/renderer/views/components/app-content.ejs new file mode 100644 index 00000000..481904bf --- /dev/null +++ b/src/renderer/views/components/app-content.ejs @@ -0,0 +1,51 @@ + + + \ No newline at end of file diff --git a/src/renderer/views/components/artist-chip.ejs b/src/renderer/views/components/artist-chip.ejs index 9c2d884b..eed505fc 100644 --- a/src/renderer/views/components/artist-chip.ejs +++ b/src/renderer/views/components/artist-chip.ejs @@ -1,13 +1,15 @@ @@ -21,6 +23,7 @@ }, data: function() { return { + image: false, artist: { id: null } @@ -34,6 +37,7 @@ } app.mk.api.v3.music(`/v1/catalog/${app.mk.storefrontId}/artists/${artistId}`).then(response => { this.artist = response.data.data[0]; + this.image = true; }); }, methods: { diff --git a/src/renderer/views/components/artwork-material.ejs b/src/renderer/views/components/artwork-material.ejs index 3cfe9891..9eae3e7c 100644 --- a/src/renderer/views/components/artwork-material.ejs +++ b/src/renderer/views/components/artwork-material.ejs @@ -1,6 +1,6 @@ diff --git a/src/renderer/views/components/audio-controls.ejs b/src/renderer/views/components/audio-controls.ejs index e82ec798..1903f7a5 100644 --- a/src/renderer/views/components/audio-controls.ejs +++ b/src/renderer/views/components/audio-controls.ejs @@ -1,10 +1,10 @@ diff --git a/src/renderer/views/components/listennow-child.ejs b/src/renderer/views/components/listennow-child.ejs index 0a7095d0..629da095 100644 --- a/src/renderer/views/components/listennow-child.ejs +++ b/src/renderer/views/components/listennow-child.ejs @@ -2,10 +2,21 @@
diff --git a/src/renderer/views/components/pagination.ejs b/src/renderer/views/components/pagination.ejs new file mode 100644 index 00000000..4696d50f --- /dev/null +++ b/src/renderer/views/components/pagination.ejs @@ -0,0 +1,175 @@ + + + \ No newline at end of file diff --git a/src/renderer/views/components/pathmenu.ejs b/src/renderer/views/components/pathmenu.ejs new file mode 100644 index 00000000..05e6db0a --- /dev/null +++ b/src/renderer/views/components/pathmenu.ejs @@ -0,0 +1,65 @@ + + \ No newline at end of file diff --git a/src/renderer/views/components/queue.ejs b/src/renderer/views/components/queue.ejs index 1b7274f9..bdd90b62 100644 --- a/src/renderer/views/components/queue.ejs +++ b/src/renderer/views/components/queue.ejs @@ -5,7 +5,7 @@

{{app.getLz('term.queue')}}

{{app.getLz('term.history')}}

-
+
- - + + +

{{$root.getLz('term.socials')}}

- - - + + +

{{$root.getLz('term.ciderTeam')}}

- +
{{ member.role }}
- +
@@ -64,25 +69,29 @@ name: 'cryptofyre', link: 'https://github.com/cryptofyre', role: app.getLz('term.developer'), - avatar: 'https://avatars.githubusercontent.com/u/33162551?v=4' + avatar: 'https://avatars.githubusercontent.com/u/33162551?v=4', + twitter: 'https://twitter.com/cryptofyre' }, { name: 'Core', link: 'https://github.com/coredev-uk', role: app.getLz('term.developer'), - avatar: 'https://avatars.githubusercontent.com/u/64542347?v=4' + avatar: 'https://avatars.githubusercontent.com/u/64542347?v=4', + twitter: 'https://twitter.com/core_hdd' }, { name: 'Quacksire', link: 'https://github.com/quacksire', role: app.getLz('term.developer'), - avatar: 'https://avatars.githubusercontent.com/u/19170969?v=4' + avatar: 'https://avatars.githubusercontent.com/u/19170969?v=4', + twitter: 'https://twitter.com/duckdoquack' }, { name: 'booploops', link: 'https://github.com/booploops', role: app.getLz('term.developer'), - avatar: 'https://avatars.githubusercontent.com/u/49113086?v=4' + avatar: 'https://avatars.githubusercontent.com/u/49113086?v=4', + twitter: 'https://twitter.com/boopl00ps' }, { name: 'vapormusic', @@ -94,25 +103,29 @@ name: 'crypticplank', link: 'https://github.com/crypticplank', role: app.getLz('term.developer'), - avatar: 'https://avatars.githubusercontent.com/u/52553007?v=4' + avatar: 'https://avatars.githubusercontent.com/u/52553007?v=4', + twitter: 'https://twitter.com/crypticplank' }, { name: 'Maikiwi', link: 'https://github.com/maikirakiwi', role: app.getLz('term.developer'), - avatar: 'https://avatars.githubusercontent.com/u/74925636?v=4' + avatar: 'https://avatars.githubusercontent.com/u/74925636?v=4', + twitter: 'https://twitter.com/notmaikiwi' }, { name: 'yazninja', link: 'https://github.com/yazninja', role: app.getLz('term.developer'), - avatar: 'https://avatars.githubusercontent.com/u/71800112?v=4' + avatar: 'https://avatars.githubusercontent.com/u/71800112?v=4', + twitter: 'https://twitter.com/YazNinjaa' }, { name: 'GamingLiamStudios', link: 'https://github.com/GamingLiamStudios', role: app.getLz('term.developer'), - avatar: 'https://avatars.githubusercontent.com/u/58615717?v=4' + avatar: 'https://avatars.githubusercontent.com/u/58615717?v=4', + twitter: 'https://twitter.com/GLStudios_' }, { name: 'Amaru', diff --git a/src/renderer/views/pages/apple-curator.ejs b/src/renderer/views/pages/apple-curator.ejs index 2e13a7de..8223d9e6 100644 --- a/src/renderer/views/pages/apple-curator.ejs +++ b/src/renderer/views/pages/apple-curator.ejs @@ -7,7 +7,7 @@

{{ recom.attributes.name ?? ""}}

-
+
diff --git a/src/renderer/views/pages/artist-feed.ejs b/src/renderer/views/pages/artist-feed.ejs index e2af0b51..d8623f68 100644 --- a/src/renderer/views/pages/artist-feed.ejs +++ b/src/renderer/views/pages/artist-feed.ejs @@ -7,6 +7,10 @@

{{app.getLz('home.followedArtists')}}

+
+ +
+
@@ -14,7 +18,7 @@
{{app.getLz('action.removeFavorite')}}
@@ -53,7 +57,8 @@ app: this.$root, followedArtists: this.$root.cfg.home.followedArtists, artistFeed: [], - artists: [] + artists: [], + syncingFavs: false } }, async mounted() { @@ -61,7 +66,13 @@ await this.getArtistFeed() }, methods: { - unfollow(id) { + async syncFavorites() { + this.syncingFavs = true + await app.syncFavorites() + await this.getArtistFeed() + this.syncingFavs = false + }, + async unfollow(id) { let index = this.followedArtists.indexOf(id) if (index > -1) { this.followedArtists.splice(index, 1) @@ -71,6 +82,16 @@ if (index2 > -1) { this.artists.splice(index2, 1) } + await app.mk.api.v3.music(`/v1/me/favorites`, { + "art[url]": "f", + "ids[artists]": id, + "l": app.mklang, + "platform": "web" + }, { + fetchOptions: { + method: "DELETE" + } + }) this.getArtistFeed() }, async getArtistFeed() { @@ -78,7 +99,7 @@ let self = this this.artists = [] this.artistFeed = [] - + // Apple limits the number of IDs we can provide in a single API call to 50. // Divide it into groups of 50 and send parallel requests let chunks = [] diff --git a/src/renderer/views/pages/artist.ejs b/src/renderer/views/pages/artist.ejs index 8c4757aa..5c273361 100644 --- a/src/renderer/views/pages/artist.ejs +++ b/src/renderer/views/pages/artist.ejs @@ -1,17 +1,17 @@ \ No newline at end of file diff --git a/src/renderer/views/pages/browse.ejs b/src/renderer/views/pages/browse.ejs index 9fd4a450..e5b8f040 100644 --- a/src/renderer/views/pages/browse.ejs +++ b/src/renderer/views/pages/browse.ejs @@ -7,7 +7,7 @@

{{ recom.attributes.name ?? ""}}

-
+
diff --git a/src/renderer/views/pages/charts.ejs b/src/renderer/views/pages/charts.ejs index 0df6f93c..86e4df5f 100644 --- a/src/renderer/views/pages/charts.ejs +++ b/src/renderer/views/pages/charts.ejs @@ -6,7 +6,7 @@

{{ songs.name ?? ""}}

-
+
@@ -20,7 +20,7 @@

{{ albums.name ?? ""}}

-
+
@@ -32,7 +32,7 @@

{{ playlists.name ?? ""}}

-
+
@@ -44,7 +44,7 @@

{{ musicvideos.name ?? ""}}

-
+
@@ -56,7 +56,7 @@

{{ globalcharts.name ?? ""}}

-
+
@@ -68,7 +68,7 @@

{{ citycharts.name ?? ""}}

-
+
diff --git a/src/renderer/views/pages/cider-multiroom.ejs b/src/renderer/views/pages/cider-multiroom.ejs index 4c8b306b..0fd16e33 100644 --- a/src/renderer/views/pages/cider-multiroom.ejs +++ b/src/renderer/views/pages/cider-multiroom.ejs @@ -1,18 +1,19 @@ + \ No newline at end of file diff --git a/src/renderer/views/pages/groupings.ejs b/src/renderer/views/pages/groupings.ejs index 3c05eefb..9c243a4f 100644 --- a/src/renderer/views/pages/groupings.ejs +++ b/src/renderer/views/pages/groupings.ejs @@ -9,7 +9,7 @@

{{ recom.attributes.name ?? ""}}

-
+
@@ -17,7 +17,7 @@