Compare commits

...

8 Commits

Author SHA1 Message Date
Hosted Weblate c7214fc7ce Update translation files
Updated by "Remove blank strings" hook in Weblate.

Translated using Weblate (Chinese (Simplified Han script))

Currently translated at 99.8% (652 of 653 strings)

Co-authored-by: ENDzZ <godzmichael@outlook.com>
Co-authored-by: Hosted Weblate <hosted@weblate.org>
Translate-URL: https://hosted.weblate.org/projects/feishin/translation/
Translate-URL: https://hosted.weblate.org/projects/feishin/translation/zh_Hans/
Translation: feishin/Translation
2024-09-29 06:44:18 +02:00
Hosted Weblate 84bcfb6eb9 Translated using Weblate (Spanish)
Currently translated at 99.8% (652 of 653 strings)

Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: gallegonovato <fran-carro@hotmail.es>
Translate-URL: https://hosted.weblate.org/projects/feishin/translation/es/
Translation: feishin/Translation
2024-09-29 06:44:17 +02:00
Hosted Weblate 0ca7a0efc9 Translated using Weblate (Czech)
Currently translated at 100.0% (653 of 653 strings)

Co-authored-by: Fjuro <fjuro@alius.cz>
Co-authored-by: Hosted Weblate <hosted@weblate.org>
Translate-URL: https://hosted.weblate.org/projects/feishin/translation/cs/
Translation: feishin/Translation
2024-09-29 06:44:17 +02:00
Torsten Curdt cb76436a2a point help menu items to feishin instead of just electron (#767) 2024-09-28 21:44:13 -07:00
jeffvli 88a951e2e7 Update to v0.10.1 2024-09-28 21:39:30 -07:00
jeffvli 6f1b78c2d6 Fix Subsonic servertype lock from docker configuration 2024-09-28 21:37:09 -07:00
jeffvli 107074b240 Fix subsonic album list sort options 2024-09-28 21:35:32 -07:00
Kendall Garner 6e8ca7e035 fix navidrome getPlaylistSOngList end 2024-09-28 21:22:14 -07:00
11 changed files with 83 additions and 31 deletions
+2 -2
View File
@@ -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
View File
@@ -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",
+2 -2
View File
@@ -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
View File
@@ -1,6 +1,6 @@
{
"name": "feishin",
"version": "0.10.0",
"version": "0.10.1",
"description": "",
"main": "./dist/main/main.js",
"author": {
+20 -5
View File
@@ -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": " "
}
}
+16 -4
View File
@@ -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",
+16 -4
View File
@@ -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
View File
@@ -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;
+2
View File
@@ -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;
}