This commit is contained in:
allen.yan 2025-08-01 16:39:58 +08:00
commit cfc9a1af9e
5 changed files with 117 additions and 35 deletions

View File

@ -4,7 +4,7 @@ namespace DBObj
{
public class SQLManager
{
private MyDB db = new MyDB();
//private MyDB db = new MyDB();
public List<SongData> FavoriteSongs { get; private set; }
//public bool IsUserLoggedIn { get; set; }
//public string UserPhoneNumber { get; set; }
@ -57,8 +57,9 @@ namespace DBObj
string query = $"SELECT * FROM song_library_cache WHERE language_name = '國語' ORDER BY add_date DESC LIMIT {Utils.Env.GetInt("NewSongLimit", 100)};";
return select_Mysql(query);
}
public List<SongData> SearchHotSongs(){
string query= $"SELECT * FROM song_library_cache WHERE language_name = '國語' ORDER BY song_counts DESC LIMIT {Utils.Env.GetInt("HotSongLimit", 100)};";
public List<SongData> SearchHotSongs()
{
string query = $"SELECT * FROM song_library_cache WHERE language_name = '國語' ORDER BY song_counts DESC LIMIT {Utils.Env.GetInt("HotSongLimit", 100)};";
return select_Mysql(query);
}
public List<SongData> SearchSongsBySinger(string keyword)
@ -72,40 +73,55 @@ namespace DBObj
{
string query = $"SELECT * FROM song_library_cache WHERE LOWER(song_name) LIKE CONCAT('%', LOWER('{keyword}'), '%');";
return select_Mysql(query);
}
}
public SongData SearchSongByNumber(string songNumber)
{
List<SongData> searchResults = new List<SongData>();
string query = $"SELECT * FROM song_library_cache WHERE song_id = '{songNumber}';";
var searchResults =select_Mysql(query);
return searchResults.FirstOrDefault();
using (var db = new MyDB())
{
if (db.open(query, null))
{
if (db.recordCount() != 0)
{
searchResults.Add(newSongData( db ));
}
}
}
return searchResults.FirstOrDefault();
}
private List<SongData> select_Mysql(string query)
private List<SongData> select_Mysql(string query)
{
List<SongData> searchResults = new List<SongData>();
Console.WriteLine(query);
using (var db = new MyDB())
{
if (db.open(query, null)) {
while (db.Read()){
searchResults.Add(new SongData(
db.Field<string>("song_id"),
db.Field<string>("song_name"),
db.Field<string>("artistA"),
db.Field<string>("artistB"),
db.Field<string>("song_filename"),
db.Field<string>("artistA_simplified"),
db.Field<string>("artistB_simplified"),
db.Field<string>("song_simplified"),
db.Field<int>("vocal")
));
if (db.open(query, null))
{
while (db.Read())
{
searchResults.Add(newSongData( db ));
}
}
Console.WriteLine($"查詢到 {searchResults.Count} 筆資料。");
}
return searchResults;
}
private SongData newSongData(MyDB db) {
return new SongData(
db.Field<string>("song_id") ?? "",
db.Field<string>("song_name") ?? "",
db.Field<string>("artistA") ?? "",
db.Field<string>("artistB") ?? "",
db.Field<string>("song_filename") ?? "",
db.Field<string>("artistA_simplified") ?? "",
db.Field<string>("artistB_simplified") ?? "",
db.Field<string>("song_simplified")?? "",
db.Field<int>("vocal")
);
}
}
}

View File

@ -65,6 +65,34 @@ namespace DBObj
? String.Format("{0} - {1} - {2}", A.getName(false), B.getName(false), basic.getName(false))
: String.Format("{0} - {1}", A.getName(false), basic.getName(false));
}
public bool FileExistsInServers()
{
foreach (var server in Utils.Env.GetSongServers())
{
try
{
Console.WriteLine($"伺服器路徑: '{server}'");
string fullPath = Path.Combine(server, basic.getFileName());
if (File.Exists(fullPath))
{
Console.WriteLine($"找到檔案: {fullPath}");
return true;
}
else
{
Console.WriteLine($"找不到檔案: {fullPath}");
}
}
catch (Exception ex)
{
Console.WriteLine($"檢查檔案時發生錯誤: {ex.Message}");
}
}
Console.WriteLine($"全部 server 都找不到檔案: {basic.getFileName()}");
return false;
}
public string getFile()
{
@ -82,11 +110,20 @@ namespace DBObj
}
public Color GetStateColor(){
Color c = Color.White;
if (state == PlayState.Played){
if (state == PlayState.Played)
{
c = Color.Gray;//Color.FromArgb(200, 75, 125); // 播畢顏色:紫紅色
}else if (state == PlayState.Playing){
}
else if (state == PlayState.NoFile)
{
c = Color.Gray;
}
else if (state == PlayState.Playing)
{
c = Color.LimeGreen;
}else if (state == PlayState.InsertPlayback){
}
else if (state == PlayState.InsertPlayback)
{
c = Color.Gold;
}
return c;

View File

@ -38,7 +38,20 @@ namespace DBObj
{
playing = not_played[0];
not_played.RemoveAt(0);
if (!playing.FileExistsInServers())
{
playing.SetState(PlayState.NoFile);
played.Add(playing);
playing = null;
if (not_played.Count <= 0)
return NextPublicSong();
else
return NextUserSong();
}
playing.SetState(PlayState.Playing);
UpdateNextSongLabel();
return playing;
}
@ -68,14 +81,29 @@ namespace DBObj
public static void Add(SongData song)
{
not_played.Add(new SongData(song,PlayState.NotPlayed));
// PrimaryForm.Instance.AddSongCount(songData.Number);
chkCut();
if (song.FileExistsInServers())
{
not_played.Add(new SongData(song, PlayState.NotPlayed));
// PrimaryForm.Instance.AddSongCount(songData.Number);
chkCut();
}
else
{
played.Add(new SongData(song, PlayState.NoFile));
}
}
public static void Insert(SongData song)
{
not_played.Insert(0, new SongData(song,PlayState.InsertPlayback));
chkCut();
if (song.FileExistsInServers()) {
not_played.Insert(0, new SongData(song,PlayState.InsertPlayback));
chkCut();
}
else
{
played.Add(new SongData(song, PlayState.NoFile));
}
}
private static void chkCut()
{

View File

@ -54,7 +54,7 @@ namespace OverlayFormObj
}
}
this.Invalidate();
//this.Invalidate();
blackBackgroundPanel.Invalidate();
// StartMarquee();
}
@ -85,7 +85,7 @@ namespace OverlayFormObj
Console.WriteLine("Marquee 跑完了!");
}
this.Invalidate();
//this.Invalidate();
blackBackgroundPanel.Invalidate();
};
@ -142,7 +142,7 @@ namespace OverlayFormObj
}
secondLineTimer.Stop();
secondLineTimer.Dispose();
this.Invalidate();
//this.Invalidate();
blackBackgroundPanel.Invalidate();
}
};
@ -150,7 +150,7 @@ namespace OverlayFormObj
secondLineTimer.Start();
blackBackgroundPanel.Invalidate();
}
/*
public void UpdateMarqueeTextThirdLine(string newText)
{
@ -170,6 +170,7 @@ namespace OverlayFormObj
Invalidate();
}
*/
private void MarqueeTimer_Tick(object sender, EventArgs e)
{
@ -187,7 +188,7 @@ namespace OverlayFormObj
}
}
this.Invalidate();
//this.Invalidate();
blackBackgroundPanel.Invalidate();
}

View File

@ -17,7 +17,7 @@ namespace DualScreenDemo
[STAThread]
static void Main()
{
Console.WriteLine("Server V.1.2.5 202507291800");
Console.WriteLine("Server V.1.2.6 202508011600");
if (Utils.Env.GetBool("IsCursor", true)) Cursor.Hide();
AppDomain.CurrentDomain.ProcessExit += (s, e) => Cursor.Show();
//Console.WriteLine("正在與中控取得聯繫...");