내 Rhythmbox 라이브러리에는 자손에 의한 Greatest Hits와 Queen에 의한 Greatest Hits가 있습니다. 앨범별로 정렬하면 다음과 같습니다.
같은 이름의 다른 아티스트가 앨범을 인터리브하지 않는 방식으로 리듬 박스가 앨범별로 정렬되도록하려면 어떻게해야합니까?
내 Rhythmbox 라이브러리에는 자손에 의한 Greatest Hits와 Queen에 의한 Greatest Hits가 있습니다. 앨범별로 정렬하면 다음과 같습니다.
같은 이름의 다른 아티스트가 앨범을 인터리브하지 않는 방식으로 리듬 박스가 앨범별로 정렬되도록하려면 어떻게해야합니까?
답변:
기본적으로 rhythmbox는 앨범 제목을 고유 식별자로 취급하기 때문에 서로 다른 "가장 큰 히트"앨범을 구별 할 수 없습니다.
리듬 박스 플러그인 coverart-browser를 통해 앨범 타이틀과 앨범 아티스트를 고유 식별자로 취급합니다.
그림에서 알 수 있듯이, "가장 큰 히트"타이틀을 가진 두 명의 아티스트가 있지만 두 개의 앨범이 다른 아티스트에 의해 있기 때문에 앨범이 별도로 표시됩니다.
CD를 리핑 할 때 종종 앨범 아티스트가 리핑되지 않고 비워집니다.
더 나쁜 것은 다중 아티스트 앨범 (컴파일)의 경우 앨범 아티스트와 아티스트 필드도 모두 비워 둔다는 것입니다. 따라서 제목이 정확히 같은 두 개의 앨범을 남길 수 있습니다.
여기서 트릭은 앨범의 모든 트랙을 선택하고 마우스 오른쪽 단추를 클릭하고 속성을 선택한 다음 앨범 아티스트 필드를 채워 고유하게 만듭니다.
연결된 질문 :
나는 다양한 시스템과 다른 플레이어 에서이 문제를 보았으며 내가 찾은 유일한 해결책은 아티스트가 접두사로 붙인 앨범의 이름을 지정하는 것입니다.
예를 들면 다음과 같습니다.
그냥 "가장 인기있는 히트"대신 "레드 핫 칠리 페퍼스 가장 큰 히트".
나는 그것의 많은 일을 알고 있지만 누군가가 더 나은 방법을 가지고 있다면 나는 그것을 듣고 싶습니다.
앨범에서 모든 트랙을 선택하고 마우스 오른쪽 버튼을 클릭 한 다음 속성을 선택하십시오. 아티스트 나 앨범 태그를 변경하지 마십시오. 원하는 경우 "앨범 아티스트"를 설정하거나 "정렬"탭을 클릭하십시오. 여기서는 표시되지 않지만 정렬에 특별히 사용되는 아티스트 및 앨범 태그를 설정할 수 있습니다. 예를 들어 "앨범 정렬 순서"를 "최고 히트 1"로 설정하고 다른 앨범에 대해 "최고 히트 2"로 설정하면 여전히 라이브러리에서 "최고 히트"로 표시되지만 정렬됩니다. 별도의 앨범으로. 더 나은 해결책은 "아티스트 정렬 순서"필드를 해당 아티스트 이름으로 변경하는 것입니다. 또한 여러 아티스트가있는 앨범에 적합한 솔루션입니다.
Rhythmbox에는 iTunes에서만 볼 수있는 "연도 별 앨범"기능이 없기 때문에 시간순으로 정렬 된 앨범을 좋아하는 경우에도 사용할 수 있습니다.
"앨범"대신 "아티스트"제목을 사용하여 라이브러리를 정렬하면이 문제가 훨씬 쉽게 해결됩니다. 앨범은 트랙 순서대로 알파벳순으로 정렬되며 동일한 아티스트의 앨범이 함께 그룹화됩니다. 그런 식으로 오프 스프링과 퀸은 서로 가까이 있지 않았을 것입니다.
나는이 질문이 꽤 오래되었다는 것을 알고 있지만 아무도이 솔루션을 게시 한 것으로 보이지 않습니다. 누군가를 도왔기를 바랍니다.
저는 개발자이며 'rhythmdb_query_model_album_sort_func'에 '작가 별 정렬'을 추가했습니다. 아래를 참조하십시오.
패키지 구축을 위해 시스템을 준비 할 수있는 최종 사용자라면 소스를 패치하고 새 패키지를 구축 한 다음 설치하십시오! ;-) .
이 패치는 rb v2.97로 완성되었으며, 최신 버전은 다른 줄 번호를 가질 수 있지만 (아직 확인하지는 않았지만) 기본적으로 코드는 동일해야합니다.
Description: sort albums with same title first by artist, remove unnecesary space and tab
--- rhythmbox-2.97.orig/rhythmdb/rhythmdb-query-model.c
+++ rhythmbox-2.97/rhythmdb/rhythmdb-query-model.c
@@ -2192,7 +2192,7 @@ rhythmdb_query_model_drag_data_received
return FALSE;
}
-/*
+/*
* determines whether reordering is possible by checking up
* the chain for a model with a sort function set.
*/
@@ -2921,7 +2921,7 @@
* @data: nothing
*
* Sort function for sorting by album. Sorts by album, then
- * disc number, then track number, then title.
+ * artist, then disc number, then track number, then title.
*
* Returns: result of sort comparison between a and b.
*/
@@ -2959,6 +2959,31 @@ rhythmdb_query_model_album_sort_func (Rh
if (ret != 0)
return ret;
+ /* Then by artist */
+ a_val = rhythmdb_entry_get_string (a, RHYTHMDB_PROP_ARTIST_SORTNAME_SORT_KEY);
+ if (a_val[0] == '\0') {
+ a_val = rhythmdb_entry_get_string (a, RHYTHMDB_PROP_ARTIST_SORT_KEY);
+ }
+ b_val = rhythmdb_entry_get_string (b, RHYTHMDB_PROP_ARTIST_SORTNAME_SORT_KEY);
+ if (b_val[0] == '\0') {
+ b_val = rhythmdb_entry_get_string (b, RHYTHMDB_PROP_ARTIST_SORT_KEY);
+ }
+
+ if (a_val == NULL) {
+ if (b_val == NULL)
+ ret = 0;
+ else
+ ret = -1;
+ } else if (b_val == NULL)
+ ret = 1;
+ else
+ ret = strcmp (a_val, b_val);
+
+ if (ret != 0)
+ return ret;
+ /*else
+ return rhythmdb_query_model_album_sort_func (a, b, data); */
+
/* Then by disc number (assume 1 if non-existent) */
a_num = rhythmdb_entry_get_ulong (a, RHYTHMDB_PROP_DISC_NUMBER);
b_num = rhythmdb_entry_get_ulong (b, RHYTHMDB_PROP_DISC_NUMBER);
@@ -3168,7 +3193,7 @@
gpointer data)
{
gulong a_val, b_val;
-
+
if (rhythmdb_entry_is_lossless (a)) {
if (rhythmdb_entry_is_lossless (b))
return rhythmdb_query_model_location_sort_func (a, b, data);