nickbeat Posted September 9, 2009 Posted September 9, 2009 (edited) Hallo, das XBMC hat einen ziemlich guten Scrapper für Filminfos und lädt zu jedem Film auch die Cover und Fanarts herunter. Ich habe ein kleines Tool geschrieben, das die Datenbank vom XBMC in die Datenbank vom myMovies-Plugin importiert. Ausserdem habe ich den Skin MediaStream etwas angepasst (getestet auf nem 52'' Flat) bei dem ich die vor allem die Schrift etwas größer gemacht habe und das myMovies-Fenster angepasst habe. Mein MediaStream OSD-Skin: http://www.DVBViewer.info/forum/index.php?showtopic=36188 XBMC_Importer: 1. Zuerst die XBMC Datenbank auswählen (z.B. C:\XBMC\userdata\Database\MyVideos.db) 2. Den Ordner userdata auswählen (z.B. C:\XBMC\userdata\) (Man kann der Ordner mit den Bilder vorher wegkopieren) 3. myMovies Datenbank auswählen (z.B. C:\Dokumente und Einstellungen\All Users\Anwendungsdaten\CMUV\DVBViewer\database\mymovies.db) 4. Warten bis alle Filme importiert worden sind ACHTUNG: Das Tool löscht vor dem Import alle Filme aus der myMovies.db. Also vorher ggf. sichern! NickBeat XBMC_Importer.rar Edited September 11, 2009 by nickbeat Quote
bambius Posted September 9, 2009 Posted September 9, 2009 Hallo, das klingt ja sehr schön, was Du da gemacht hast, dafür mal vielen Dank. Aber ich kapier das noch nicht ganz, wie das installiert werden muß. Was bedeutet, dass die Filme kopiert werden? Wo werden die Filme hinkopiert und warum bleiben sie nicht einfach liegen wo sie sind, oder versteh ich das komplett falsch? Schonmal Danke!! Quote
nickbeat Posted September 9, 2009 Author Posted September 9, 2009 Was bedeutet, dass die Filme kopiert werden? Ich meinte damit, das die Filmeinträge in der XBMC-Datenbank in die myMovies-Datenbank kopiert werden. Die Dateien bleiben natürlich da liegen wo sie sind. NickBeat Quote
Tjod Posted September 9, 2009 Posted September 9, 2009 Du solltest jetzt deine Beiträge Editoren können und auch genug platz habe um das hier im Forum als Anhang zu Posten. Allerdings denke ich, dass es besser ist XBMC Importer und den Skin zu trennen. Und den Skin am besten in einen Topic im OSD Bereich zu posten. Quote
nickbeat Posted September 11, 2009 Author Posted September 11, 2009 Du solltest jetzt deine Beiträge Editoren können und auch genug platz habe um das hier im Forum als Anhang zu Posten. Allerdings denke ich, dass es besser ist XBMC Importer und den Skin zu trennen. Und den Skin am besten in einen Topic im OSD Bereich zu posten. Ok, habe es getrennt und neu hochgeladen. Danke für den Speicherplatz. Wer möchte, kann das Tool erweitern oder anpassen. Es ist in C# geschrieben und nur ein paar Zeilen lang: private void b_openxbmcdb_Click(object sender, EventArgs e) { // open XBMC movies database and import into dataset ofd_xbmcdb.ShowDialog(); xbmc_db_path = ofd_xbmcdb.FileName; xbmc_db = new DataTable(); SQLiteConnection SQLconnect = new SQLiteConnection(); SQLiteCommand SQLcommand = new SQLiteCommand(); SQLconnect.ConnectionString = "Data Source=" + xbmc_db_path + ";Version=3;"; SQLconnect.Open(); SQLcommand = SQLconnect.CreateCommand(); SQLcommand.CommandText = "SELECT * FROM movieview"; SQLiteDataReader SQLreader = SQLcommand.ExecuteReader(); xbmc_db.Load(SQLreader); SQLcommand.Dispose(); SQLconnect.Close(); l_moviesindb.Text = xbmc_db.Rows.Count.ToString(); } private void b_convert_Click(object sender, EventArgs e) { //open myMovies.db an delete all rows ofd_xbmcdb.ShowDialog(); dvbv_db_path = ofd_xbmcdb.FileName; dvbv_db = new DataTable(); Finisar.SQLite.SQLiteConnection SQLconnect = new Finisar.SQLite.SQLiteConnection("Data Source=" + dvbv_db_path + ";Version=2;"); Finisar.SQLite.SQLiteCommand SQLcommand = new Finisar.SQLite.SQLiteCommand(); //SQLconnect.ConnectionString = "Data Source=" + dvbv_db_path + ";"; SQLconnect.Open(); SQLcommand = SQLconnect.CreateCommand(); SQLcommand.CommandText = "DELETE FROM movies"; SQLcommand.ExecuteNonQuery(); SQLconnect.Close(); // define fields int movies_id = 0; string title, path, filename, releasedate, Categories, Description, Folder, Backdrop, Rating, Runtime_Orginal, Runtime_Actual = "", Actors, Director, ProductionCompany; string isDVD, isRemovable = "0"; string path2tumb, path2backdrop = ""; string tmp_hash = ""; SQLconnect.Open(); foreach(DataRow row in xbmc_db.Rows) { title = row["c00"].ToString(); path = row["strPath"].ToString() + row["strFileName"].ToString(); filename = row["strFileName"].ToString(); releasedate = row["c07"].ToString(); Categories = row["c14"].ToString(); Description = row["c01"].ToString(); Description = Description.Replace("\"", "'"); path2tumb = xbmc_userdata + "\\Thumbnails\\Video\\"; tmp_hash = Hash(row["strPath"].ToString() + row["strFileName"].ToString()); path2tumb += tmp_hash.Substring(0,1) + "\\" + tmp_hash + ".tbn"; path2backdrop = xbmc_userdata + "\\Thumbnails\\Video\\Fanart\\" + tmp_hash + ".tbn"; Folder = path2tumb; Backdrop = path2backdrop; Rating = row["c05"].ToString(); Runtime_Orginal = row["c11"].ToString(); Runtime_Actual = ""; Actors = row["c12"].ToString(); Director = row["c15"].ToString(); ProductionCompany = row["c18"].ToString(); l_actmovie.Text = path; l_title.Text = title; l_path.Text = path; l_filename.Text = filename; l_releasedate.Text = releasedate; l_cover.Text = Folder; l_Backdrop.Text = path2backdrop; l_description.Text = Description; this.Update(); // path = "Z" + path.Remove(0, 1); SQLcommand.CommandText = "INSERT INTO movies (title, path, filename, releasedate, Categories, Description, Folder, Backdrop, Rating, Runtime_Original, Runtime_Actual, People_Actors, People_Director, ProductionCompany) " + "VALUES (\"" + title + "\",\"" + path + "\",@filename,\"" + releasedate + "\",\"" + Categories + "\",\"" + Description + "\",\"" + Folder + "\",\"" + Backdrop + "\",\"" + Rating + "\",\"" + Runtime_Orginal + "\",\"" + Runtime_Actual + "\",\"" + Actors + "\",\"" + Director + "\",\"" + ProductionCompany + "\")"; SQLcommand.Parameters.Add("@filename", DbType.String); SQLcommand.Parameters["@filename"].Value = "\"" + path + "\""; SQLcommand.ExecuteNonQuery(); } SQLconnect.Close(); } public string Hash(string input) { uint m_crc = 0xffffffff; System.Text.UTF8Encoding encoding = new System.Text.UTF8Encoding(); Byte[] bytes = encoding.GetBytes(input.ToLower()); foreach (byte myByte in bytes) { m_crc ^= ((uint)(myByte) << 24); for (int i = 0; i < 8; i++) { if ((System.Convert.ToUInt32(m_crc) & 0x80000000) == 0x80000000) { m_crc = (m_crc << 1) ^ 0x04C11DB7; } else { m_crc <<= 1; } } } return String.Format("{0:x8}", m_crc); } Am besten die DLL's für die SQL-Anbindung von meinem Tool verwenden. Man braucht für die Datenbank 2 Versionen, da XBMC Version 3 und DVBViewer Version 2 benutzt und die sind natürlich nicht kompatibel... NickBeat Quote
hoktaar Posted October 24, 2009 Posted October 24, 2009 gute Arbeit. geht das auch mit der datenbank von mediaportal plugin movingpicture???? Quote
Vroniefan Posted March 26, 2010 Posted March 26, 2010 Hi wollte fragen ob das Tool auch für das neue mymovies_0.02.45 geht ? Hat das schon jemand probiert ? Nutze momentan noch 1.42 und alles haut soweit hin. würde gern das tool weiternutzen da ich es in verbindung mit xbmc sehr praktisch finde. mfg Vroniefan Quote
amontillado Posted March 27, 2010 Posted March 27, 2010 Just to inform you before nickbeat put to much effort in changing the importer to deal with 2.45 : The mymovies.db will most likely undergo some additional changes. Perhaps its better to wait a bit until the next version. Quote
D3ltoroxp Posted June 20, 2010 Posted June 20, 2010 Wird hier noch weiter dran gearbeitet ? Wie ist der Status, da die mymovies.db ja umgestellt wurde auf sqlite3 ? Quote
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.