niobures's picture
VideoSearch
e26fba6 verified
using System;
using System.Collections.Generic;
using System.Text;
using System.Data.SQLite;
using System.IO;
using System.Linq;
namespace MovieFinder.Scraper
{
public class DataService
{
private static SQLiteConnection connection;
private static object sync = new object();
public DataService(string name)
{
connection = new SQLiteConnection(String.Format("Data Source={0};Version=3;", name));
connection.Open();
}
//private DataService() { }
//public static DataService Create()
//{
// return new DataService();
//}
public void ShutDown()
{
connection.Dispose();
}
public void AddMovie(MovieFinder.Data.Movie movie)
{
using (var cmd = new SQLiteCommand(connection))
{
cmd.CommandText = String.Format("INSERT INTO MOVIE(ID,Name,ImageUrl,ReleaseDate,LanguageCode,Description, CreatedDate,ModifiedDate, Version, UniqueID, HasSubtitle) " +
"VALUES({0},'{1}','{2}','{3}','{4}','{5}','{6}','{7}',{8},'{9}',{10})",
movie.ID, Sanitize(movie.Name), movie.ImageUrl, movie.ReleaseDate.ToString("yyyy-MM-dd"),
movie.LanguageCode,Sanitize( movie.Description),
movie.CreateDate.ToString("yyyy-MM-dd"),
movie.ModifiedDate != null ?
movie.ModifiedDate.Value.ToString("yyyy-MM-dd") : null, movie.Version,
movie.UniqueID, movie.MovieLinks.Any(x => x.HasSubtitle) ? 1 : 0);
cmd.ExecuteNonQuery();
foreach (var link in movie.MovieLinks)
{
if (link.FailedAttempts > 3)
continue;
cmd.CommandText = String.Format("INSERT INTO MOVIELINK(ID,MovieID,LinkTitle,PageUrl,PageSiteID,DownloadUrl,DownloadSiteID,Version, HasSubtitle) " +
"VALUES({0},{1},'{2}','{3}','{4}','{5}','{6}',{7},{8})",
link.ID, link.MovieID, Sanitize(link.LinkTitle), link.PageUrl, link.PageSiteID, link.DowloadUrl, link.DownloadSiteID,
link.Version, link.HasSubtitle ? 1 : 0);
cmd.ExecuteNonQuery();
}
}
}
public void UpdateMovieSettings(int version, DateTime createdDate)
{
using (var cmd = new SQLiteCommand(connection))
{
cmd.CommandText = String.Format("UPDATE SETTINGS SET Version = {0}, CreatedDate= '{1}' ", version, createdDate.ToString("yyyy-MM-dd hh:mm:ss"));
cmd.ExecuteNonQuery();
}
}
public int MovieDBVersion
{
get
{
using (var cmd = new SQLiteCommand(connection))
{
cmd.CommandText = "SELECT * FROM Settings LIMIT 1";
using (var reader = cmd.ExecuteReader())
{
reader.Read();
return (int)reader["Version"];
}
}
}
}
private string Sanitize(string text)
{
return text.Replace("'", "''");
}
}
}