Jump to content

XBMC Importer für myMovies Plugin


nickbeat

Recommended Posts

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

post-57943-1252509310_thumb.jpg

XBMC_Importer.rar

Edited by nickbeat
Link to comment

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!!

Link to comment
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

Link to comment

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.

Link to comment
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

Link to comment
  • 1 month later...
  • 5 months later...

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

Link to comment

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.

Link to comment
  • 2 months later...

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...