AVDB.cs 8.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Data.OleDb;
  6. using System.Data;
  7. namespace AVSORTER.DB
  8. {
  9. public class AVDB
  10. {
  11. Helper h = new Helper(string.Empty);
  12. string DestPath;
  13. string SubPath;
  14. public AVDB()
  15. {
  16. GetDestPath();
  17. GetSubPath();
  18. }
  19. public void AddNewAV(AVSORTER.Movie m, string video, bool censored)
  20. {
  21. if (isInDB(m))
  22. {
  23. updateAV(m, video, censored);
  24. }
  25. else
  26. {
  27. insertAV(m, video, censored);
  28. }
  29. }
  30. public List<Movie> QueryAV(string fcode)
  31. {
  32. List<Movie> list = new List<Movie>();
  33. var dt = h.ExecuteDataTable("select * from movies where FCode like '%" + fcode + "%'");
  34. foreach (DataRow item in dt.Rows)
  35. {
  36. Movie m = new Movie();
  37. m.Title = item[1].ToString();
  38. m.Actor = item[2].ToString().Split(',').ToList<string>();
  39. m.ItemURL = item[3].ToString();
  40. m.Maker = item[5].ToString();
  41. m.Lable = item[6].ToString();
  42. m.Series = item[7].ToString();
  43. m.Producer = item[8].ToString();
  44. m.ReleaseDate = item.Field<DateTime>(9);
  45. m.Minutes = item[10].ToString();
  46. m.AVCode = item[11].ToString();
  47. m.Introduction = item[12].ToString();
  48. var a = SubPath.Replace("演员", m.Actor.Count == 0 ? "无名氏" : Tools.ListToString(m.Actor));
  49. a = a.Replace("番号", m.AVCode);
  50. a = a.Replace("厂商", m.Maker);
  51. a = a.Replace("制造商", m.Producer);
  52. a = a.Replace("标题", m.Title);
  53. a = a.Replace("标签", m.Lable);
  54. a = System.IO.Path.Combine(DestPath, a, m.AVCode + System.IO.Path.GetExtension(item[4].ToString()));
  55. m.CoverFile = a;
  56. list.Add(m);
  57. }
  58. return list;
  59. }
  60. public void SetDestPath(string path)
  61. {
  62. DestPath = path;
  63. using (OleDbCommand comm = new OleDbCommand("update settings set destPath = '" + path + "'"))
  64. {
  65. h.ExecuteScalar(comm);
  66. }
  67. }
  68. public string GetDestPath()
  69. {
  70. using (OleDbCommand comm = new OleDbCommand("select top 1 destPath from settings"))
  71. {
  72. this.DestPath = (string)h.ExecuteScalar(comm);
  73. return DestPath;
  74. }
  75. }
  76. public void SetSubPath(string path)
  77. {
  78. this.SubPath = path;
  79. using (OleDbCommand comm = new OleDbCommand("update settings set SubPath = '" + path + "'"))
  80. {
  81. h.ExecuteScalar(comm);
  82. }
  83. }
  84. public string GetSubPath()
  85. {
  86. using (OleDbCommand comm = new OleDbCommand("select top 1 SubPath from settings"))
  87. {
  88. this.SubPath = (string)h.ExecuteScalar(comm);
  89. return this.SubPath;
  90. }
  91. }
  92. private void updateAV(Movie m, string videof, bool censored)
  93. {
  94. using (OleDbCommand comm = new OleDbCommand(@"update movies set Title=title,
  95. actor=@actor,
  96. itemurl=@url,
  97. coverfile=@coverfile,
  98. maker=@maker,
  99. labels=@labels,
  100. series=@series,
  101. producer=@producer,
  102. releasedate=@releasedate,
  103. minuses=@minutes,
  104. intro=@intro,
  105. censored=@c,
  106. videofile = @video
  107. where fcode=@fcode"))
  108. {
  109. comm.Parameters.Add("@title", OleDbType.VarWChar).Value = m.Title;
  110. comm.Parameters.Add("@actor", OleDbType.VarWChar).Value = AVSORTER.Tools.ListToString(m.Actor);
  111. comm.Parameters.Add("@url", OleDbType.VarWChar).Value = m.ItemURL;
  112. string cfile;
  113. if (string.IsNullOrEmpty(m.CoverFile))
  114. {
  115. cfile = "";
  116. }
  117. else
  118. {
  119. cfile = m.CoverFile;
  120. cfile = System.IO.Path.GetFileName(cfile);
  121. }
  122. comm.Parameters.Add("@coverfile", OleDbType.VarWChar).Value = cfile;
  123. comm.Parameters.Add("@maker", OleDbType.VarWChar).Value = string.IsNullOrEmpty(m.Maker) ? "" : m.Maker;
  124. comm.Parameters.Add("@labels", OleDbType.VarWChar).Value = string.IsNullOrEmpty(m.Lable) ? "" : m.Lable;
  125. comm.Parameters.Add("@series", OleDbType.VarWChar).Value = string.IsNullOrEmpty(m.Series) ? "" : m.Series;
  126. comm.Parameters.Add("@producer", OleDbType.VarWChar).Value = string.IsNullOrEmpty(m.Producer) ? "" : m.Producer;
  127. comm.Parameters.Add("@releasedate", OleDbType.Date).Value = m.ReleaseDate;
  128. comm.Parameters.Add("@minutes", OleDbType.VarWChar).Value = string.IsNullOrEmpty(m.Minutes) ? "" : m.Minutes;
  129. comm.Parameters.Add("@fcode", OleDbType.VarWChar).Value = m.AVCode;
  130. comm.Parameters.Add("@intro", OleDbType.VarWChar).Value = string.IsNullOrEmpty(m.Introduction) ? "" : m.Introduction;
  131. comm.Parameters.Add("@c", OleDbType.Boolean).Value = censored;
  132. comm.Parameters.Add("@video", OleDbType.VarWChar).Value = videof;
  133. h.ExecuteNonQuery(comm);
  134. }
  135. }
  136. private void insertAV(Movie m, string videof, bool censored)
  137. {
  138. using (OleDbCommand comm = new OleDbCommand(@"insert into
  139. movies (Title,actor,itemurl,coverfile,maker,labels,series,producer,releasedate,minuses,fcode,intro,censored,videofile )
  140. values (@title,@actor,@url,@coverfile,@maker,@labels,@series,@producer,@releasedate,@minutes,@fcode,@intro,@c,@video)"))
  141. {
  142. comm.Parameters.Add("@title", OleDbType.VarWChar).Value = m.Title;
  143. comm.Parameters.Add("@actor", OleDbType.VarWChar).Value = AVSORTER.Tools.ListToString(m.Actor);
  144. comm.Parameters.Add("@url", OleDbType.VarWChar).Value = m.ItemURL;
  145. string cfile;
  146. if (string.IsNullOrEmpty(m.CoverFile))
  147. {
  148. cfile = "";
  149. }
  150. else
  151. {
  152. cfile = m.CoverFile;
  153. cfile = System.IO.Path.GetFileName(cfile);
  154. }
  155. comm.Parameters.Add("@coverfile", OleDbType.VarWChar).Value = cfile;
  156. comm.Parameters.Add("@maker", OleDbType.VarWChar).Value = string.IsNullOrEmpty(m.Maker) ? "" : m.Maker;
  157. comm.Parameters.Add("@labels", OleDbType.VarWChar).Value = string.IsNullOrEmpty(m.Lable) ? "" : m.Lable;
  158. comm.Parameters.Add("@series", OleDbType.VarWChar).Value = string.IsNullOrEmpty(m.Series) ? "" : m.Series;
  159. comm.Parameters.Add("@producer", OleDbType.VarWChar).Value = string.IsNullOrEmpty(m.Producer) ? "" : m.Producer;
  160. comm.Parameters.Add("@releasedate", OleDbType.Date).Value = m.ReleaseDate;
  161. comm.Parameters.Add("@minutes", OleDbType.VarWChar).Value = string.IsNullOrEmpty(m.Minutes) ? "" : m.Minutes;
  162. comm.Parameters.Add("@fcode", OleDbType.VarWChar).Value = m.AVCode;
  163. comm.Parameters.Add("@intro", OleDbType.VarWChar).Value = string.IsNullOrEmpty(m.Introduction) ? "" : m.Introduction;
  164. comm.Parameters.Add("@c", OleDbType.Boolean).Value = censored;
  165. comm.Parameters.Add("@video", OleDbType.VarWChar).Value = videof;
  166. h.ExecuteNonQuery(comm);
  167. }
  168. }
  169. private bool isInDB(AVSORTER.Movie movie)
  170. {
  171. var obj = h.ExecuteScalar("select count(*) from movies where FCode='" + movie.AVCode + "'");
  172. return (int)obj > 0;
  173. }
  174. private bool isInDB(string fcode)
  175. {
  176. var obj = h.ExecuteScalar("select count(*) from movies where FCode='" + fcode + "'");
  177. return (int)obj > 0;
  178. }
  179. }
  180. }