Merge branch 'main' of http://47.251.18.130:3000/Leecheng/superstar_v2
This commit is contained in:
commit
cfc9a1af9e
@ -4,7 +4,7 @@ namespace DBObj
|
|||||||
{
|
{
|
||||||
public class SQLManager
|
public class SQLManager
|
||||||
{
|
{
|
||||||
private MyDB db = new MyDB();
|
//private MyDB db = new MyDB();
|
||||||
public List<SongData> FavoriteSongs { get; private set; }
|
public List<SongData> FavoriteSongs { get; private set; }
|
||||||
//public bool IsUserLoggedIn { get; set; }
|
//public bool IsUserLoggedIn { get; set; }
|
||||||
//public string UserPhoneNumber { 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)};";
|
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);
|
return select_Mysql(query);
|
||||||
}
|
}
|
||||||
public List<SongData> SearchHotSongs(){
|
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)};";
|
{
|
||||||
|
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);
|
return select_Mysql(query);
|
||||||
}
|
}
|
||||||
public List<SongData> SearchSongsBySinger(string keyword)
|
public List<SongData> SearchSongsBySinger(string keyword)
|
||||||
@ -75,29 +76,31 @@ namespace DBObj
|
|||||||
}
|
}
|
||||||
public SongData SearchSongByNumber(string songNumber)
|
public SongData SearchSongByNumber(string songNumber)
|
||||||
{
|
{
|
||||||
|
List<SongData> searchResults = new List<SongData>();
|
||||||
string query = $"SELECT * FROM song_library_cache WHERE song_id = '{songNumber}';";
|
string query = $"SELECT * FROM song_library_cache WHERE song_id = '{songNumber}';";
|
||||||
var searchResults =select_Mysql(query);
|
using (var db = new MyDB())
|
||||||
return searchResults.FirstOrDefault();
|
{
|
||||||
|
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>();
|
List<SongData> searchResults = new List<SongData>();
|
||||||
Console.WriteLine(query);
|
Console.WriteLine(query);
|
||||||
using (var db = new MyDB())
|
using (var db = new MyDB())
|
||||||
{
|
{
|
||||||
if (db.open(query, null)) {
|
if (db.open(query, null))
|
||||||
while (db.Read()){
|
{
|
||||||
searchResults.Add(new SongData(
|
while (db.Read())
|
||||||
db.Field<string>("song_id"),
|
{
|
||||||
db.Field<string>("song_name"),
|
searchResults.Add(newSongData( db ));
|
||||||
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")
|
|
||||||
));
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -106,6 +109,19 @@ namespace DBObj
|
|||||||
|
|
||||||
return searchResults;
|
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")
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -65,6 +65,34 @@ namespace DBObj
|
|||||||
? String.Format("{0} - {1} - {2}", A.getName(false), B.getName(false), basic.getName(false))
|
? String.Format("{0} - {1} - {2}", A.getName(false), B.getName(false), basic.getName(false))
|
||||||
: String.Format("{0} - {1}", A.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()
|
public string getFile()
|
||||||
{
|
{
|
||||||
@ -82,11 +110,20 @@ namespace DBObj
|
|||||||
}
|
}
|
||||||
public Color GetStateColor(){
|
public Color GetStateColor(){
|
||||||
Color c = Color.White;
|
Color c = Color.White;
|
||||||
if (state == PlayState.Played){
|
if (state == PlayState.Played)
|
||||||
|
{
|
||||||
c = Color.Gray;//Color.FromArgb(200, 75, 125); // 播畢顏色:紫紅色
|
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;
|
c = Color.LimeGreen;
|
||||||
}else if (state == PlayState.InsertPlayback){
|
}
|
||||||
|
else if (state == PlayState.InsertPlayback)
|
||||||
|
{
|
||||||
c = Color.Gold;
|
c = Color.Gold;
|
||||||
}
|
}
|
||||||
return c;
|
return c;
|
||||||
|
@ -38,7 +38,20 @@ namespace DBObj
|
|||||||
{
|
{
|
||||||
playing = not_played[0];
|
playing = not_played[0];
|
||||||
not_played.RemoveAt(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);
|
playing.SetState(PlayState.Playing);
|
||||||
|
|
||||||
UpdateNextSongLabel();
|
UpdateNextSongLabel();
|
||||||
return playing;
|
return playing;
|
||||||
}
|
}
|
||||||
@ -68,14 +81,29 @@ namespace DBObj
|
|||||||
|
|
||||||
public static void Add(SongData song)
|
public static void Add(SongData song)
|
||||||
{
|
{
|
||||||
not_played.Add(new SongData(song,PlayState.NotPlayed));
|
if (song.FileExistsInServers())
|
||||||
// PrimaryForm.Instance.AddSongCount(songData.Number);
|
{
|
||||||
chkCut();
|
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)
|
public static void Insert(SongData song)
|
||||||
{
|
{
|
||||||
not_played.Insert(0, new SongData(song,PlayState.InsertPlayback));
|
if (song.FileExistsInServers()) {
|
||||||
chkCut();
|
not_played.Insert(0, new SongData(song,PlayState.InsertPlayback));
|
||||||
|
chkCut();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
played.Add(new SongData(song, PlayState.NoFile));
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
private static void chkCut()
|
private static void chkCut()
|
||||||
{
|
{
|
||||||
|
@ -54,7 +54,7 @@ namespace OverlayFormObj
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
this.Invalidate();
|
//this.Invalidate();
|
||||||
blackBackgroundPanel.Invalidate();
|
blackBackgroundPanel.Invalidate();
|
||||||
// StartMarquee();
|
// StartMarquee();
|
||||||
}
|
}
|
||||||
@ -85,7 +85,7 @@ namespace OverlayFormObj
|
|||||||
Console.WriteLine("Marquee 跑完了!");
|
Console.WriteLine("Marquee 跑完了!");
|
||||||
}
|
}
|
||||||
|
|
||||||
this.Invalidate();
|
//this.Invalidate();
|
||||||
blackBackgroundPanel.Invalidate();
|
blackBackgroundPanel.Invalidate();
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -142,7 +142,7 @@ namespace OverlayFormObj
|
|||||||
}
|
}
|
||||||
secondLineTimer.Stop();
|
secondLineTimer.Stop();
|
||||||
secondLineTimer.Dispose();
|
secondLineTimer.Dispose();
|
||||||
this.Invalidate();
|
//this.Invalidate();
|
||||||
blackBackgroundPanel.Invalidate();
|
blackBackgroundPanel.Invalidate();
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
@ -150,7 +150,7 @@ namespace OverlayFormObj
|
|||||||
secondLineTimer.Start();
|
secondLineTimer.Start();
|
||||||
blackBackgroundPanel.Invalidate();
|
blackBackgroundPanel.Invalidate();
|
||||||
}
|
}
|
||||||
|
/*
|
||||||
public void UpdateMarqueeTextThirdLine(string newText)
|
public void UpdateMarqueeTextThirdLine(string newText)
|
||||||
{
|
{
|
||||||
|
|
||||||
@ -170,6 +170,7 @@ namespace OverlayFormObj
|
|||||||
|
|
||||||
Invalidate();
|
Invalidate();
|
||||||
}
|
}
|
||||||
|
*/
|
||||||
|
|
||||||
private void MarqueeTimer_Tick(object sender, EventArgs e)
|
private void MarqueeTimer_Tick(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
@ -187,7 +188,7 @@ namespace OverlayFormObj
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
this.Invalidate();
|
//this.Invalidate();
|
||||||
blackBackgroundPanel.Invalidate();
|
blackBackgroundPanel.Invalidate();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -17,7 +17,7 @@ namespace DualScreenDemo
|
|||||||
[STAThread]
|
[STAThread]
|
||||||
static void Main()
|
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();
|
if (Utils.Env.GetBool("IsCursor", true)) Cursor.Hide();
|
||||||
AppDomain.CurrentDomain.ProcessExit += (s, e) => Cursor.Show();
|
AppDomain.CurrentDomain.ProcessExit += (s, e) => Cursor.Show();
|
||||||
//Console.WriteLine("正在與中控取得聯繫...");
|
//Console.WriteLine("正在與中控取得聯繫...");
|
||||||
|
Loading…
x
Reference in New Issue
Block a user