From a6b15f68c96539f0ed5b98a3539fefc726a6918e Mon Sep 17 00:00:00 2001 From: Jason Dove Date: Thu, 25 Nov 2021 20:19:26 -0600 Subject: [PATCH] randomize default backgrounds (#504) * randomize default song backgrounds * update docs --- ...layoutItemProcessByChannelNumberHandler.cs | 20 ++++++++++++---- ErsatzTV/ErsatzTV.csproj | 4 ++++ ErsatzTV/Resources/background_blank.png | Bin 0 -> 15790 bytes ErsatzTV/Resources/background_e.png | Bin 0 -> 15795 bytes ErsatzTV/Resources/background_t.png | Bin 0 -> 15793 bytes ErsatzTV/Resources/background_v.png | Bin 0 -> 15796 bytes .../RunOnce/ResourceExtractorService.cs | 4 ++++ README.md | 2 +- docs/user-guide/add-media-items.md | 2 +- docs/user-guide/local-libraries.md | 22 ++++++++++++++++++ docs/user-guide/search.md | 11 +++++++++ 11 files changed, 59 insertions(+), 6 deletions(-) create mode 100644 ErsatzTV/Resources/background_blank.png create mode 100644 ErsatzTV/Resources/background_e.png create mode 100644 ErsatzTV/Resources/background_t.png create mode 100644 ErsatzTV/Resources/background_v.png diff --git a/ErsatzTV.Application/Streaming/Queries/GetPlayoutItemProcessByChannelNumberHandler.cs b/ErsatzTV.Application/Streaming/Queries/GetPlayoutItemProcessByChannelNumberHandler.cs index b88cb12c7..08689be2f 100644 --- a/ErsatzTV.Application/Streaming/Queries/GetPlayoutItemProcessByChannelNumberHandler.cs +++ b/ErsatzTV.Application/Streaming/Queries/GetPlayoutItemProcessByChannelNumberHandler.cs @@ -148,8 +148,8 @@ namespace ErsatzTV.Application.Streaming.Queries { Id = -1, Chapters = new List(), - Width = 301, - Height = 162, + Width = 192, + Height = 108, SampleAspectRatio = "1:1", Streams = new List { @@ -157,8 +157,20 @@ namespace ErsatzTV.Application.Streaming.Queries } }; - // use ETV logo by default - string artworkPath = Path.Combine(FileSystemLayout.ResourcesCacheFolder, "ErsatzTV.png"); + string[] backgrounds = + { + "background_blank.png", + "background_e.png", + "background_t.png", + "background_v.png" + }; + + var random = new Random(); + + // use random ETV color by default + string artworkPath = Path.Combine( + FileSystemLayout.ResourcesCacheFolder, + backgrounds[random.Next() % backgrounds.Length]); // use thumbnail (cover art) if present foreach (SongMetadata metadata in song.SongMetadata) diff --git a/ErsatzTV/ErsatzTV.csproj b/ErsatzTV/ErsatzTV.csproj index e9d9c544e..489a404ad 100644 --- a/ErsatzTV/ErsatzTV.csproj +++ b/ErsatzTV/ErsatzTV.csproj @@ -51,6 +51,10 @@ + + + + diff --git a/ErsatzTV/Resources/background_blank.png b/ErsatzTV/Resources/background_blank.png new file mode 100644 index 0000000000000000000000000000000000000000..d973d5d69a669f2fe26a188133f74138c2b277ea GIT binary patch literal 15790 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 literal 0 HcmV?d00001 diff --git a/ErsatzTV/Resources/background_e.png b/ErsatzTV/Resources/background_e.png new file mode 100644 index 0000000000000000000000000000000000000000..dc2148e5444fd2a54c5f8addb5fc77e92900c16b GIT binary patch literal 15795 zcmeHN3se(V8or2%0!nR*BC9e+e4r+ogoHdKA|yzn1X#dVt=360fk0l&Oi1u_U9@O* zOHs5?--4?ZY)e~TXr&0&s;Ko{P^;onTGT4E+FGksduIX|wys^zZqM0sb|#0M`}qIw z-udqT|M$O_EJ;d;>*E{j3jpY&QLB;x@W}-96OHSE|U=e*M*zKGnZdP{9_-@h%L?y%{xG#OSj%Yj-Kf8<+^LfHwnv+wX77L zj8ShZ$RC#<(wKI4(Hn0mLd7SBw=5o0l)78j^nKO!*06UjwfRlX)@*2we)Um);n3&v z3CrOYb>%M?>`PMxXC#ZNX89eu9V7cZ?#=+^+rwt`6O4EuOyw!}w{)A;^ZL)z1p_K8 zm)i5msyiD@HG`)%9Nabd+O0eH#tq!o5Ez3E=_Z)lf4uiHN6NCl^@usKF)1|bnBymo zGhx}XpKiU_s0y529%6x7b_d{Sa4zabAAg5lv&_ymMjmzM64C{8ie|rPEeb zh2~r$vjfP2+t)IVs7=*Ft{1Ko&u^Ol*3rwwr~E5**1dtEfU?Uyn-#lUCF0QsYJ_2b z-ZE*$!6APV=dE;oh#9P4r-65H;hK_dn$sDg^PAK@{NkQf-NK@Dr8g_h&Nl}YjEi2; z`(S!e%=AlXJEDSDlSPrICK+Yq!riXGq5G#dPYvKAB{>a+t=$`M{`k_%J&sXZ&SRAa zzY=AQnzeK1b#+Ag{HB;!V@7=Yw%4X!)q%BF`lw$FUy}Sz`mu?5k@CB#K}7KZpXZj1 zcB<+$q22|zZ@sCQIP>kIM8WZ~xk+`p2`QTvOxa(%=-x-oWu;p;YNl*o{c->IXAnnL zle?<=?#s~Co!z!-PvE<}^)D;-?(yNz_8U<9kFwzd#>}2n9+)s@?6eydNo7A?Q5H~F z3j@aeGAhn8YD4krT^HZWN#Fd%@mccYOV;mov~6yP_TDTyeX{WNJ|XzoCCO`qXU?wL zqTPVk`-pu<);C@_RDMePrlfpxdO*gxjO;Zfj7$xT@SQVN0xk_cKVnCLnv?VMUf-*nbivsTf+~-uYl%xEqD6vtgepWPCA!Y zpSgQ^aE}if%f34?JMG=^6JJhw_2R>bMN3D|8+cFn1Ag`B$*ADvOO$?(hU`xa8dPU& zEz^DsfLESLsZ7!+l^q@c?SAcF3Ki;4Ck*=Rm6@A22KtOsXB|#j_tJBLj$upqOxcIjtZUwdPFMc;}A$X&0dZ@$@dl{5SyKWxY1@2~6*X=_!q zUiNx8abdZ!A*dvyxG-Tvp4mF3SM|n#e&Ebv&9SpBDnXAE-#Y?AUTJHJJbM4)hQGg3 zx5odw-UqhFOU5?!X)4!FZmCKfWE`#;I(}rqKq|T^uHq|TQE=v^75mV)8m1QSNg#tXV|Beb-4Bb<6vEgKYdH{_Sr`myo(do`uqPd?Cn88U2weL#A> z<^KJ1yVi`HaAn}`(-$6Qc(439^pnf=8{=wfBJ5e0>YEi;2%n(2r-v(vO+fqCQc$(w zl;rE&+L{bfWBB_I=YbkKad5}fpveFP zykUY7X}UIEuD4lun8BvQc`l0`Ml1j#qg-}OpNUh54o@>#6`Z!c`#6Znpx{gsYf-IT ziKm;?a|t|UZbGVlZl+#l;6#o0jdaN&fCZ;8#APvCNx4hGVQ}TJOgHm62qQveDmc@% zNr=)$;E0GP;-TDFmnmDw8Sjfk5(c9@Sv9d80@f6qbc(Xe`Fy9-$#aJDY(yGgAd|`X zsE{uda-js5%&}6Ki)$r^(GYG76;A32lbtfztO$*X>1+;4!QsGuq#Ydg>SJB7v3&r# z&cKtDfv2cgGfvvDgm%yUq?*+F`a=^$~siJ7heBx&u=CIhwH@eBHh6k zGZ%(exyq(@(1U7J3JyJAxxuD48RSe66$f+42+lJ>9D@iK;Ftj8>QJ4YD+-UmxjGpp=E@9uu~CGJq_`;D10sy<4m3U}R#R(D`IgKem zc|swhZqUmoLPQK2o5_Nu;e5L_jp?A5MGjvE5{uEk0g;(@_%3oKfn$`7NVVC_3JyIp zgob2X3W;oY7J0l)&nPm&xPkV!c8`m}()dg@lK(W}-yo%=+nm;a59hIHCrUIyIc-E{ zB9W-e!1dJAah@dHiIfau9Z3;6n%{Y;f0B!Io2we?+K3#F@l)_Dcg-D;%qE5^1Yv@J z9Mik$C$VhYz$^je(cPs_$E;~MjJEBr*3oWyk{RPtS-3=kbEQ(9h%1tW!xCo1p(#qC zC%_Lhzpm({%}6;h0*_9EHUQTdx)!s}$SB78!n#U3({X4cTr@(Cq8#_~B9VMLpmw}o zBpq_JTDd0yk#tCsYiP?$aoFu<6Has`ro&MFg`9_eyHWn0x~G_1TWPcBK&MTo5}nqk z4*vu}H$uEgk6TIG)28kz;-x551kZjb!V{juFFXwUfrpLTQm14n?+>>$s? zFH09o*E2EjOv0>nv2;BX1J5MPTGxM#F5kx|Y}^VHJtsUr-%hDm0ngq&b(7;%;1T^P z`D6>-(%Y_{K?2bCQ~J;Akgd!B8+|B^HrD5BzhEE_$yn_82>=9WRMDxf3pdV3_XCK3 z4O+9WOy)iKhv$1g$UgDjUZ_JqcP|&Z3!tPH(D#$@S&Zg-xl0`XIqpJkFYh3C3E9tz zK_*y2+~&Yq2*U&GG7JrDaA0U)g995J0P72^FR-bUI}otG!1@B~3#=~yz@8TvD`3wH z3=QnQ!0rp|zQFDa|G~bH+pvD{VVXhzTb0#^rUiSw(5?NZa!w5Jc2gVQYmU2++uO_E zT|$R;+;NWRj=Gy_@;YudS3XzcZUQVAU^xSTH4Ok*cLIQo8UV1t5dd~W0f5~%0h=Dc ze}u9r)&FvO(Et4I3iy)&Kl---Y<|loG4Nc&CNXRhLmzM1B!*35Xggrj literal 0 HcmV?d00001 diff --git a/ErsatzTV/Resources/background_t.png b/ErsatzTV/Resources/background_t.png new file mode 100644 index 0000000000000000000000000000000000000000..5e8f920588df8d12eefcc17cdd0a9f3af49624a5 GIT binary patch literal 15793 zcmeHN3sh4_8XgpjJcMG4B1h#CwLUP(O&}qO2?_y8)XBHP99fjOKkY+&bh2K&7RhvqV_ehN0xLxTu~e` za2Kg<%$ZVi|4my>`suSVMYUOd8-AE1J)ZQ_VCDJv59B)PE>SVFsPLrMCjsZ|GX#Tc zYGz0dx6JzCBzk$k_B{NHl~mPFci#>;{hePq8uaH-k^eh^jrn6$^`PAF;+Qp(yPteF z^5=};)jzjAf5{axt5TlNPd}=-+b8jMWia9jG%VWHaa4UNXwl~pi>g1^wY}lw?GahV z+XJus{X~o6nDoTO&q{*NEHHoD+IBPU)}%%vxoJ$%%cpCy{9g0XTl?M~K0}@o7NX03 zqogA3T{T|wm#~={`RAvEF$I~z!CxKJu5R&`jfrmAqVnOFK2zIg?8F7-do3+ZB69qf zzHe&K$&n!kx5aM0fBIBe}Xw)H zmZQUFkpqtud{x_gc(+t1WC`7 zC&jjZzj^3~5eqZ(E|Aq4*fuEjF5j|Xt-t@poYnA8c;kZ;H-_acd|=Kj zdEd7R-@Q1jU&GFTo$ZdyGV`5%vCY5S=rDIyw7p)=SI#cl7w}+n#LVfV?t8yBsNvhr zS5j^R;8kc;DpS--Ww-vJ>dO`uD^#CO8d^Vl#=DzBd?u*oHm1Ct`D}>e+_>k<<10ck z9q7kD`o9@Hax8D<;yDKntg7F(WO?wMMe7BJAqDYF=bnjb!_}usIjk?ng_`XOwaBj2t z-o4L1dTaEg%R_dbx$rQr@A^9<_qH}~N~)_9+vZ+uzM{BH`h@168Koq*0PUa3LG3%I zW3Cn)n6c4${6^J>tIql$%B*)S1xu9KyHqXT4ez*lz5T|esH%sHK%I>|yelJg3IIXN zjW8cg(`sb6)y%{6Rvp1}nQbs%0U)2~vSIiffKHSsj#u!-4Hc7dULi6J4;fs{{I( zfwxn7z8XG6!}&l1z7RzvTvW&vO8K7tuvM$=@wV8zScH7?U6_q8;Gul8`4JC0l{l}r zzsGvm)8V$jPbKVD2ZU8=TE-EF2LXiQJ zO2k4BD7D2-VHTXAp&&TV2yw&$3`2#Om@CkUP;Rt9XW(L}IErf^Bw|8Oh(*y7y$3`x zX@rr0nLI~DL+NQKLPAJUgN`c@pag^xVO*UwCW6fG zXm3r538M^F(yZWUj24Hhw;|nVCekR3CQTrYijhbpQNkD$m5QRoy+#=XX@?@GF$E}3 z=$^M8mraI<7!;e)jO7q~n}9_9Qe8UG3?E!XO_{ChaPradTeB;~Y{bCStq zT^@l`PsVwiaSu`|%yo8(oUi_kN&SGfq)w=hWd|=5*eWE#1gI$M@14T zD$?n2_X78z+pPx5iIGHH4%7f#XBb+{IwNBk^^IlZ&|~e)C7?#Qs91)g9QX1faz33< zyQe3oQ;t?E^CUn{rzDx0R$iLJW-}QH@=;>Ch4L@#Jp8*v`CIOuW^Qk#)ixgnZ7!AU zv^=r<#~8X1G)A1T*sV_*x~GYo7LR=gj@exY_cORX@_Y8jE?Gd5f6q^s+(yYb(8Ed}O07-wx#}MVWV{I(j^h9zK%Eem?z+(45*G}R zfI75pe}%N~upbBdKA5-jjXltZ{&cn$y9;3B0YJZ7lLc#eB!y0J@18&#sYj`=#>$yH%Zz{9nL0>nun*Q1DLV>SW zfV+f7bid<#!5ei~)fINX*7GnlOq7^h5`V)Zvyss z0RIun9;yD9j|Uy9&`a7b3*moT4AqL9e c|K%M=LIvNiV@UqR1GM(liBl7H#Ah%52L>w*oB#j- literal 0 HcmV?d00001 diff --git a/ErsatzTV/Resources/background_v.png b/ErsatzTV/Resources/background_v.png new file mode 100644 index 0000000000000000000000000000000000000000..e47c4d9dec141fb7bcf25973e91e7953a8475d82 GIT binary patch literal 15796 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 kutf}=4*tYN% `Local`. ### Add Media Items diff --git a/docs/user-guide/local-libraries.md b/docs/user-guide/local-libraries.md index c302bd8cf..7703c1193 100644 --- a/docs/user-guide/local-libraries.md +++ b/docs/user-guide/local-libraries.md @@ -126,3 +126,25 @@ Your other video library will then have two media items with the following metad 1. title: `1990 Car Commercial 1`, tags: `Commercials`, `1990`, `Cars` 2. title: `1992 Car Commercial 1`, tags: `Commercials`, `1992`, `Cars` + +## Songs + +### Folder Layout + +The `Songs` library has no folder requirements, but folders can be a useful source of metadata. + +### Songs Metadata + +Songs will have basic metadata pulled from embedded tags (artist, album, title). + +### Songs Fallback Metadata + +Songs will have a tag added to their metadata for every containing folder, including the top-level folder. As an example, consider adding a commercials folder with the following files: + +- `Rock\Awesome Band\Awesome Album\01 Track 1.flac` +- `Rock\Awesome Band\Better Album\05 Track 5.flac` + +Your other video library will then have two media items with the following metadata: + +1. title: `01 Track 1`, tags: `Rock`, `Awesome Band`, `Awesome Album` +2. title: `05 Track 5`, tags: `Rock`, `Awesome Band`, `Better Album` \ No newline at end of file diff --git a/docs/user-guide/search.md b/docs/user-guide/search.md index 03b79f84d..1cccabaa4 100644 --- a/docs/user-guide/search.md +++ b/docs/user-guide/search.md @@ -90,6 +90,17 @@ The following fields are available for searching other videos: - `minutes`: the rounded-up whole number duration of the video in minutes - `type`: Always `other_video` +### Songs + +The following fields are available for searching songs: + +- `title`: The song title, or the filename of the song (without extension) +- `album`: The song album +- `artist`: The song artist +- `tag`: All of the song's parent folders +- `minutes`: the rounded-up whole number duration of the song in minutes +- `type`: Always `song` + ## Special Search Fields - `released_inthelast`: For any media type that supports `release_date`, `released_inthelast` takes a number and a unit (days, weeks, months, years) and returns items released between the specified time ago and now