mirror of
https://github.com/jeffvli/feishin.git
synced 2026-05-07 04:20:12 +02:00
Compare commits
8 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| c7214fc7ce | |||
| 84bcfb6eb9 | |||
| 0ca7a0efc9 | |||
| cb76436a2a | |||
| 88a951e2e7 | |||
| 6f1b78c2d6 | |||
| 107074b240 | |||
| 6e8ca7e035 |
Generated
+2
-2
@@ -1,12 +1,12 @@
|
||||
{
|
||||
"name": "feishin",
|
||||
"version": "0.10.0",
|
||||
"version": "0.10.1",
|
||||
"lockfileVersion": 2,
|
||||
"requires": true,
|
||||
"packages": {
|
||||
"": {
|
||||
"name": "feishin",
|
||||
"version": "0.10.0",
|
||||
"version": "0.10.1",
|
||||
"hasInstallScript": true,
|
||||
"license": "GPL-3.0",
|
||||
"dependencies": {
|
||||
|
||||
+1
-1
@@ -2,7 +2,7 @@
|
||||
"name": "feishin",
|
||||
"productName": "Feishin",
|
||||
"description": "Feishin music server",
|
||||
"version": "0.10.0",
|
||||
"version": "0.10.1",
|
||||
"scripts": {
|
||||
"build": "concurrently \"npm run build:main\" \"npm run build:renderer\" \"npm run build:remote\"",
|
||||
"build:main": "cross-env NODE_ENV=production TS_NODE_TRANSPILE_ONLY=true webpack --config ./.erb/configs/webpack.config.main.prod.ts",
|
||||
|
||||
Generated
+2
-2
@@ -1,12 +1,12 @@
|
||||
{
|
||||
"name": "feishin",
|
||||
"version": "0.10.0",
|
||||
"version": "0.10.1",
|
||||
"lockfileVersion": 2,
|
||||
"requires": true,
|
||||
"packages": {
|
||||
"": {
|
||||
"name": "feishin",
|
||||
"version": "0.10.0",
|
||||
"version": "0.10.1",
|
||||
"hasInstallScript": true,
|
||||
"license": "GPL-3.0",
|
||||
"dependencies": {
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "feishin",
|
||||
"version": "0.10.0",
|
||||
"version": "0.10.1",
|
||||
"description": "",
|
||||
"main": "./dist/main/main.js",
|
||||
"author": {
|
||||
|
||||
@@ -29,7 +29,8 @@
|
||||
"addLast": "přidat poslední",
|
||||
"mute": "ztlumit",
|
||||
"skip_forward": "přeskočit dopředu",
|
||||
"playSimilarSongs": "přehrát podobné skladby"
|
||||
"playSimilarSongs": "přehrát podobné skladby",
|
||||
"viewQueue": "zobrazit frontu"
|
||||
},
|
||||
"setting": {
|
||||
"crossfadeStyle_description": "vyberte způsob prolnutí u přehrávače zvuku",
|
||||
@@ -387,7 +388,8 @@
|
||||
"autoFitColumns": "automaticky přizpůsobit sloupce",
|
||||
"size": "$t(common.size)",
|
||||
"itemGap": "mezera mezi položkami (px)",
|
||||
"itemSize": "velikost položek (px)"
|
||||
"itemSize": "velikost položek (px)",
|
||||
"followCurrentSong": "následovat aktuální skladbu"
|
||||
},
|
||||
"label": {
|
||||
"releaseDate": "datum vydání",
|
||||
@@ -544,12 +546,14 @@
|
||||
"useImageAspectRatio": "použít poměr stran obrázku",
|
||||
"lyricGap": "mezera textů",
|
||||
"dynamicImageBlur": "velikost rozostření obrázku",
|
||||
"dynamicIsImage": "povolit obrázek na pozadí"
|
||||
"dynamicIsImage": "povolit obrázek na pozadí",
|
||||
"lyricOffset": "posunutí textů (ms)"
|
||||
},
|
||||
"upNext": "další",
|
||||
"lyrics": "texty",
|
||||
"related": "související",
|
||||
"visualizer": "vizualizér"
|
||||
"visualizer": "vizualizér",
|
||||
"noLyrics": "nenalezeny žádné texty"
|
||||
},
|
||||
"appMenu": {
|
||||
"selectServer": "vybrat server",
|
||||
@@ -652,6 +656,14 @@
|
||||
},
|
||||
"playlist": {
|
||||
"reorder": "změna pořadí povolena pouze při řazení podle id"
|
||||
},
|
||||
"manageServers": {
|
||||
"url": "URL",
|
||||
"username": "uživatelské jméno",
|
||||
"editServerDetailsTooltip": "upravit podrobnosti o serveru",
|
||||
"removeServer": "odstranit server",
|
||||
"serverDetails": "podrobnosti o serveru",
|
||||
"title": "správa serverů"
|
||||
}
|
||||
},
|
||||
"form": {
|
||||
@@ -763,6 +775,9 @@
|
||||
"trackWithCount_other": "{{count}} skladeb",
|
||||
"play_one": "{{count}} přehrání",
|
||||
"play_few": "{{count}} přehrání",
|
||||
"play_other": "{{count}} přehrání"
|
||||
"play_other": "{{count}} přehrání",
|
||||
"song_one": " ",
|
||||
"song_few": " ",
|
||||
"song_other": " "
|
||||
}
|
||||
}
|
||||
|
||||
@@ -29,7 +29,8 @@
|
||||
"mute": "silencio",
|
||||
"skip_forward": "saltar hacia delante",
|
||||
"pause": "pausa",
|
||||
"playSimilarSongs": "Reproducir canciones similares"
|
||||
"playSimilarSongs": "Reproducir canciones similares",
|
||||
"viewQueue": "ver cola"
|
||||
},
|
||||
"setting": {
|
||||
"crossfadeStyle_description": "selecciona el estilo de crossfade a usar por el reproductor de audio",
|
||||
@@ -513,11 +514,13 @@
|
||||
"showLyricMatch": "mostrar coincidencia de letras",
|
||||
"lyricGap": "desfase de letra",
|
||||
"dynamicImageBlur": "tamaño de desenfoque de imagen",
|
||||
"dynamicIsImage": "habilitar imagen de fondo"
|
||||
"dynamicIsImage": "habilitar imagen de fondo",
|
||||
"lyricOffset": "compensación de letras (ms)"
|
||||
},
|
||||
"lyrics": "letras",
|
||||
"related": "relacionado",
|
||||
"visualizer": "visualizador"
|
||||
"visualizer": "visualizador",
|
||||
"noLyrics": "sin letras"
|
||||
},
|
||||
"albumDetail": {
|
||||
"moreFromArtist": "más de este $t(entity.artist_one)",
|
||||
@@ -578,6 +581,14 @@
|
||||
},
|
||||
"playlist": {
|
||||
"reorder": "la reordenación solo se activa al ordenar por id"
|
||||
},
|
||||
"manageServers": {
|
||||
"removeServer": "eliminar servidor",
|
||||
"title": "administrar servidores",
|
||||
"serverDetails": "detalles del servidor",
|
||||
"username": "nombre de usuario",
|
||||
"editServerDetailsTooltip": "editar detalles del servidor",
|
||||
"url": "URL"
|
||||
}
|
||||
},
|
||||
"form": {
|
||||
@@ -705,7 +716,8 @@
|
||||
"size": "$t(common.size)",
|
||||
"displayType": "tipo de visualización",
|
||||
"itemGap": "espacio entre elementos (px)",
|
||||
"itemSize": "tamaño del elemento (px)"
|
||||
"itemSize": "tamaño del elemento (px)",
|
||||
"followCurrentSong": "seguir la canción actual"
|
||||
},
|
||||
"view": {
|
||||
"card": "tarjeta",
|
||||
|
||||
@@ -159,7 +159,8 @@
|
||||
"skip_forward": "向前跳过",
|
||||
"playbackSpeed": "播放速度",
|
||||
"pause": "暂停",
|
||||
"playSimilarSongs": "播放类似的曲目"
|
||||
"playSimilarSongs": "播放类似的曲目",
|
||||
"viewQueue": "查看播放队列"
|
||||
},
|
||||
"setting": {
|
||||
"crossfadeStyle_description": "选择用于音频播放器的淡入淡出风格",
|
||||
@@ -483,12 +484,14 @@
|
||||
"lyricGap": "歌词间距",
|
||||
"followCurrentLyric": "跟随当前歌词",
|
||||
"dynamicImageBlur": "图像模糊大小",
|
||||
"dynamicIsImage": "启用背景图像"
|
||||
"dynamicIsImage": "启用背景图像",
|
||||
"lyricOffset": "歌词延迟补偿(毫秒)"
|
||||
},
|
||||
"lyrics": "歌词",
|
||||
"related": "相关",
|
||||
"upNext": "即将播放",
|
||||
"visualizer": "可视化"
|
||||
"visualizer": "可视化",
|
||||
"noLyrics": "未找到歌词"
|
||||
},
|
||||
"appMenu": {
|
||||
"selectServer": "选择服务器",
|
||||
@@ -591,6 +594,14 @@
|
||||
},
|
||||
"playlist": {
|
||||
"reorder": "仅在按 ID 排序时启用重排序"
|
||||
},
|
||||
"manageServers": {
|
||||
"url": "URL",
|
||||
"title": "管理服务器",
|
||||
"serverDetails": "服务器详细信息",
|
||||
"username": "用户名",
|
||||
"editServerDetailsTooltip": "编辑服务器详细信息",
|
||||
"removeServer": "移除服务器"
|
||||
}
|
||||
},
|
||||
"form": {
|
||||
@@ -662,7 +673,8 @@
|
||||
"autoFitColumns": "列宽自适应",
|
||||
"size": "$t(common.size)",
|
||||
"itemGap": "项目间隙(px)",
|
||||
"itemSize": "项目大小 (px)"
|
||||
"itemSize": "项目大小 (px)",
|
||||
"followCurrentSong": "关注当前播放的歌曲"
|
||||
},
|
||||
"view": {
|
||||
"table": "表格",
|
||||
|
||||
+8
-8
@@ -147,27 +147,27 @@ export default class MenuBuilder {
|
||||
submenu: [
|
||||
{
|
||||
click() {
|
||||
shell.openExternal('https://electronjs.org');
|
||||
shell.openExternal('https://github.com/jeffvli/feishin');
|
||||
},
|
||||
label: 'Learn More',
|
||||
},
|
||||
{
|
||||
click() {
|
||||
shell.openExternal(
|
||||
'https://github.com/electron/electron/tree/main/docs#readme',
|
||||
'https://github.com/jeffvli/feishin?tab=readme-ov-file#getting-started',
|
||||
);
|
||||
},
|
||||
label: 'Documentation',
|
||||
},
|
||||
{
|
||||
click() {
|
||||
shell.openExternal('https://www.electronjs.org/community');
|
||||
shell.openExternal('https://github.com/jeffvli/feishin/discussions');
|
||||
},
|
||||
label: 'Community Discussions',
|
||||
},
|
||||
{
|
||||
click() {
|
||||
shell.openExternal('https://github.com/electron/electron/issues');
|
||||
shell.openExternal('https://github.com/jeffvli/feishin/issues');
|
||||
},
|
||||
label: 'Search Issues',
|
||||
},
|
||||
@@ -246,27 +246,27 @@ export default class MenuBuilder {
|
||||
submenu: [
|
||||
{
|
||||
click() {
|
||||
shell.openExternal('https://electronjs.org');
|
||||
shell.openExternal('https://github.com/jeffvli/feishin');
|
||||
},
|
||||
label: 'Learn More',
|
||||
},
|
||||
{
|
||||
click() {
|
||||
shell.openExternal(
|
||||
'https://github.com/electron/electron/tree/main/docs#readme',
|
||||
'https://github.com/jeffvli/feishin?tab=readme-ov-file#getting-started',
|
||||
);
|
||||
},
|
||||
label: 'Documentation',
|
||||
},
|
||||
{
|
||||
click() {
|
||||
shell.openExternal('https://www.electronjs.org/community');
|
||||
shell.openExternal('https://github.com/jeffvli/feishin/discussions');
|
||||
},
|
||||
label: 'Community Discussions',
|
||||
},
|
||||
{
|
||||
click() {
|
||||
shell.openExternal('https://github.com/electron/electron/issues');
|
||||
shell.openExternal('https://github.com/jeffvli/feishin/issues');
|
||||
},
|
||||
label: 'Search Issues',
|
||||
},
|
||||
|
||||
@@ -337,7 +337,7 @@ export const NavidromeController: ControllerEndpoint = {
|
||||
id: query.id,
|
||||
},
|
||||
query: {
|
||||
_end: query.limit,
|
||||
_end: query.startIndex + (query.limit || -1),
|
||||
_order: query.sortOrder ? sortOrderMap.navidrome[query.sortOrder] : 'ASC',
|
||||
_sort: query.sortBy
|
||||
? songListSortMap.navidrome[query.sortBy]
|
||||
|
||||
@@ -15,6 +15,7 @@ import {
|
||||
GenreListSort,
|
||||
AlbumListSort,
|
||||
sortAlbumList,
|
||||
SortOrder,
|
||||
} from '/@/renderer/api/types';
|
||||
import { randomString } from '/@/renderer/utils';
|
||||
import { ServerFeatures } from '/@/renderer/api/features-types';
|
||||
@@ -25,14 +26,14 @@ const ALBUM_LIST_SORT_MAPPING: Record<AlbumListSort, AlbumListSortType | undefin
|
||||
[AlbumListSort.PLAY_COUNT]: AlbumListSortType.FREQUENT,
|
||||
[AlbumListSort.RECENTLY_ADDED]: AlbumListSortType.NEWEST,
|
||||
[AlbumListSort.FAVORITED]: AlbumListSortType.STARRED,
|
||||
[AlbumListSort.YEAR]: AlbumListSortType.RECENT,
|
||||
[AlbumListSort.YEAR]: AlbumListSortType.BY_YEAR,
|
||||
[AlbumListSort.NAME]: AlbumListSortType.ALPHABETICAL_BY_NAME,
|
||||
[AlbumListSort.COMMUNITY_RATING]: undefined,
|
||||
[AlbumListSort.DURATION]: undefined,
|
||||
[AlbumListSort.CRITIC_RATING]: undefined,
|
||||
[AlbumListSort.RATING]: undefined,
|
||||
[AlbumListSort.ARTIST]: undefined,
|
||||
[AlbumListSort.RECENTLY_PLAYED]: undefined,
|
||||
[AlbumListSort.RECENTLY_PLAYED]: AlbumListSortType.RECENT,
|
||||
[AlbumListSort.RELEASE_DATE]: undefined,
|
||||
[AlbumListSort.SONG_COUNT]: undefined,
|
||||
};
|
||||
@@ -360,6 +361,16 @@ export const SubsonicController: ControllerEndpoint = {
|
||||
}
|
||||
}
|
||||
|
||||
if (type === AlbumListSortType.BY_YEAR && !fromYear && !toYear) {
|
||||
if (query.sortOrder === SortOrder.ASC) {
|
||||
fromYear = 0;
|
||||
toYear = dayjs().year();
|
||||
} else {
|
||||
fromYear = dayjs().year();
|
||||
toYear = 0;
|
||||
}
|
||||
}
|
||||
|
||||
const res = await ssApiClient(apiClientProps).getAlbumList2({
|
||||
query: {
|
||||
fromYear,
|
||||
@@ -436,7 +447,7 @@ export const SubsonicController: ControllerEndpoint = {
|
||||
return (res.body.starred?.album || []).length || 0;
|
||||
}
|
||||
|
||||
let type = ALBUM_LIST_SORT_MAPPING[query.sortBy] ?? AlbumListSortType.ALPHABETICAL_BY_NAME;
|
||||
let type = AlbumListSortType.ALPHABETICAL_BY_NAME;
|
||||
|
||||
let fetchNextPage = true;
|
||||
let startIndex = 0;
|
||||
|
||||
@@ -69,6 +69,8 @@ export const toServerType = (value?: string): ServerType | null => {
|
||||
return ServerType.JELLYFIN;
|
||||
case ServerType.NAVIDROME:
|
||||
return ServerType.NAVIDROME;
|
||||
case ServerType.SUBSONIC:
|
||||
return ServerType.SUBSONIC;
|
||||
default:
|
||||
return null;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user