nickbeat Posted September 9, 2009 Share 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 Link to comment
bambius Posted September 9, 2009 Share 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 Link to comment
nickbeat Posted September 9, 2009 Author Share 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 Link to comment
Tjod Posted September 9, 2009 Share 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 Link to comment
nickbeat Posted September 11, 2009 Author Share 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 Link to comment
hoktaar Posted October 24, 2009 Share Posted October 24, 2009 gute Arbeit. geht das auch mit der datenbank von mediaportal plugin movingpicture???? Quote Link to comment
Vroniefan Posted March 26, 2010 Share 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 Link to comment
amontillado Posted March 27, 2010 Share 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 Link to comment
D3ltoroxp Posted June 20, 2010 Share Posted June 20, 2010 Wird hier noch weiter dran gearbeitet ? Wie ist der Status, da die mymovies.db ja umgestellt wurde auf sqlite3 ? Quote Link to comment
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.