From 0c3205c95a45ee2703d790e0d13580559838bb82 Mon Sep 17 00:00:00 2001
From: James Meyer <james.meyer@operamail.com>
Date: Fri, 20 Feb 2009 16:37:05 -0600
Subject: Adding the orig twk_general file for reference. It may be removed at
 any time.

---
 abs/core-testing/tweaker/bin/twk_general.pl.orig | 579 +++++++++++++++++++++++
 1 file changed, 579 insertions(+)
 create mode 100755 abs/core-testing/tweaker/bin/twk_general.pl.orig

diff --git a/abs/core-testing/tweaker/bin/twk_general.pl.orig b/abs/core-testing/tweaker/bin/twk_general.pl.orig
new file mode 100755
index 0000000..0255852
--- /dev/null
+++ b/abs/core-testing/tweaker/bin/twk_general.pl.orig
@@ -0,0 +1,579 @@
+#!/usr/bin/perl -w
+
+# Copyright 2007-2009 Robert ("Bob") Igo of StormLogic, LLC and mythic.tv.
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+use Switch;
+use Tweaker::Script;
+package Tweaker::Script;
+
+set_known_options( 'all' );
+
+# Try to implement the given option.
+sub implement_option {
+    my($option) = @_;
+
+    # KnoppMyth-centric file-level tweaks
+    sub file_tweaks {
+	my($option) = @_;
+
+	my @commands = (
+	    # keymap tweaks
+	    "twk_keymap.sh"
+	    );
+	
+	foreach my $command (@commands) {
+	    if (my $error = execute_shell_command($command)) {
+		my $logger = get_logger('tweaker.script');
+		$logger->error("$error");
+		$logger->error("Unable to implement option $option with command $command.");
+	    }
+	}
+	return 1;
+    }
+    
+    # Enhance the default MythTV SQL
+    sub SQL_tweaks {
+	my($option) = @_;
+
+	$dbconnectionstring = get_mythtv_connection_string();
+	
+	if (connect_to_db("DBI:mysql:$dbconnectionstring")) {
+	    # ??? This also exists in mkmythdir - it should be centralized
+	    my $SQL_DirData="/myth";			# Top level dir. of structure,
+	    my $SQL_DirTV="$SQL_DirData/tv";		# TV Recordings,
+	    my $SQL_DirMusic="$SQL_DirData/music/";	# Music storage,
+	    my $SQL_DirGames="$SQL_DirData/games";	# Games dir,
+	    my $SQL_DirPics="$SQL_DirData/gallery";	# Pictures directory.
+	    my $SQL_DirTmp="$SQL_DirData/tmp";		# DVD temp
+	    my $SQL_DirVideo="$SQL_DirData/video";	# videos
+	    
+	    # ??? Eventually, put these into a text file so that 1) people can contribute without having to code, and 2) the data
+	    # stays separate from the code and can be re-used by other (non-Perl) implementations
+
+	    #
+	    # keybindings
+	    #
+	    change_or_make_entry("keybindings", [["keylist", "l"]], [["context", "Gallery"], ["action","PLAY"]]);
+	    change_or_make_entry("keybindings", [["keylist", ">"]], [["context", "Music"], ["action","FFWD"]]);
+	    change_or_make_entry("keybindings", [["keylist", "<"]], [["context", "Music"], ["action","RWND"]]);
+	    change_or_make_entry("keybindings", [["keylist", "PgDown,.,Z,End"]], [["context", "Music"], ["action","NEXTTTRACK"]]);
+	    change_or_make_entry("keybindings", [["keylist", "PgUp,Q,Home"]], [["context", "Music"], ["action","PREVTRACK"]]);
+	    change_or_make_entry("keybindings", [["keylist", "P,l"]], [["context", "Music"], ["action","PAUSE"]]);
+
+	    change_or_make_entry("keybindings", [["keylist", ">"]], [["context", "Stream"], ["action","FORWARD"]]);
+	    change_or_make_entry("keybindings", [["keylist", "<"]], [["context", "Stream"], ["action","REWIND"]]);
+	    change_or_make_entry("keybindings", [["keylist", "F"]], [["context", "Stream"], ["action","FULLSCREEN"]]);
+	    change_or_make_entry("keybindings", [["keylist", "|,\\,F9,Volume Mute"]], [["context", "Stream"], ["action","MUTE"]]);
+	    change_or_make_entry("keybindings", [["keylist", "Y"]], [["context", "Stream"], ["action","STOREMARKED"]]);
+	    
+	    change_or_make_entry("keybindings", [["keylist", "l"]], [["context", "TV Frontend"], ["action","PLAYBACK"]]);
+	    
+	    change_or_make_entry("keybindings", [["keylist", "l"]], [["context", "TV Playback"], ["action","PLAY"]]);
+	    change_or_make_entry("keybindings", [["keylist", "P"]], [["context", "TV Playback"], ["action","PAUSE"]]); # default, but here for completeness
+
+	    #
+	    # better awareness of different video extensions
+	    #
+	    change_or_make_entry("videotypes", [["playcommand", "mplayer-resumer.pl -fs -zoom -vc theora,fftheora, -vo xv %s"]], [["extension", "ogg"]]);
+	    change_or_make_entry("videotypes", [["playcommand", "mplayer-resumer.pl -fs -zoom -vc theora,fftheora, -vo xv %s"]], [["extension", "theora"]]);
+	    foreach my $video_ext ("mp2", "tp", "ts", "m2p", "nuv", "mkv") {
+		change_or_make_entry("videotypes", [["playcommand", "Internal"], ["f_ignore", "0"], ["use_default", "1"]], [["extension", $video_ext]]);
+	    }
+	    foreach my $non_video_ext ("jpg", "par2") {
+		change_or_make_entry("videotypes", [["f_ignore", "1"]], [["extension", $non_video_ext]]);
+	    }
+	    
+	    #
+	    # games, game players, and emulators
+	    #
+	    my @players = (
+		 [ 'SDLMAME', '/myth/games/xmame/roms', '/myth/games/xmame/screenshots', '/usr/games/mame -rp /myth/games/xmame/roms %s', 'MAME' ],
+		 [ 'ZSNES','/myth/games/snes/roms','/myth/games/snes/screens','/usr/bin/zsnes','SNES' ],
+		 [ 'FCEU','/myth/games/nes/roms','/myth/games/nes/screens','/usr/games/fceu','NES' ],
+		 [ 'Frozen Bubble', '', '', '/usr/games/frozen-bubble --fullscreen','PC' ]
+		);
+
+	    foreach my $player (@players) {
+		# These INSERTs will fail if the playername is already present, but we don't error out if it happens.
+		do_query("INSERT INTO gameplayers (playername, rompath, screenshots, commandline, gametype) VALUES ('".join("','",@$player)."');");
+	    }
+	    # somewhat hardwired, but make sure Frozen Bubble shows up in the list of playable games.
+	    do_query("INSERT INTO gamemetadata (system, romname, gamename, genre, year, publisher, rompath, gametype) VALUES ('".
+		     join("','",($players[3][0], $players[3][3], $players[3][0], "action/puzzle", "2006", "Frozen Bubble Team", "/usr/games", $players[3][4]))."');");
+
+	    #
+	    # smart music playlists
+	    #
+	    # categoryid, name
+	    change_or_make_entry("music_smartplaylist_categories", [["name", "Decades"]], [["categoryid", 1]]);
+	    change_or_make_entry("music_smartplaylist_categories", [["name", "Favorite Tracks"]], [["categoryid", 2]]);
+	    change_or_make_entry("music_smartplaylist_categories", [["name", "New Tracks"]], [["categoryid", 3]]);
+
+	    foreach my $decade (60, 70, 80, 90, 100) {
+		my $id = ($decade / 10) - 5;
+		my $query = "INSERT INTO music_smartplaylist_items (smartplaylistid, field, operator, value1, value2) VALUES ($id, 'Year', 'is between'," . ($decade+1900) . "," . ($decade+1909) . ");";
+		do_query($query);
+		$query = "INSERT INTO music_smartplaylists (name, categoryid, matchtype, orderby, limitto) VALUES ('". ($decade+1900) . "\\'s', 1, 'All', 'Artist (A)', 0);";
+		do_query($query);
+	    }
+
+	    my @other_lists = (
+		[
+		 ( 'Rating', 'is greater than', '7', 'Favorite Tracks', 2, 'Artist (A), Album (A)', 0 ),
+		 ( 'Play Count', 'is greater than', '0', '100 Most Played Tracks', 2, 'Play Count (D)', 100 ),
+		 ( 'Play Count', 'is equal to', '0', 'Never Played Tracks', 3, 'Artist (A), Album (A)', 0 )
+		]);
+
+	    my $id=6;
+	    foreach my $other_list (@other_lists) {
+		change_or_make_entry("music_smartplaylist_items", [["field", @$other_list[0]], ["operator", @$other_list[1]], ["value1", @$other_list[2]]], [["smartplaylistid", $id]]);
+		change_or_make_entry("music_smartplaylists", [["name", @$other_list[3]], ["categoryid", @$other_list[4]], ["matchtype", "All"], ["orderby", @$other_list[5]], ["limitto", @$other_list[6]]], [["smartplaylistid", $id]]);
+		$id++;
+	    }
+
+	    #
+	    # default playgroup with time-related settings
+	    #
+	    change_or_make_entry("playgroup", [["skipahead", 10], ["skipback", 5], ["timestretch", 100], ["jump", 1]], [["name", "Default"]]);
+
+	    #
+	    # useful recording profiles and transcoding options
+	    #
+	    change_or_make_entry("profilegroups", [["name", "Software Encoders (v4l based)"], ["cardtype", "V4L"], ["is_default", 1]], [["id", 1]]);
+	    change_or_make_entry("profilegroups", [["name", "MPEG-2 Encoders (PVR-x50, PVR-500)"], ["cardtype", "MPEG"], ["is_default", 1]], [["id", 2]]);
+	    change_or_make_entry("profilegroups", [["name", "Hardware MJPEG Encoders (Matrox G200-TV, Miro DC10, etc)"], ["cardtype", "MJPEG"], ["is_default", 1]], [["id", 3]]);
+	    change_or_make_entry("profilegroups", [["name", "Hardware HDTV"], ["cardtype", "HDTV"], ["is_default", 1]], [["id", 4]]);
+	    change_or_make_entry("profilegroups", [["name", "Hardware DVB Encoders"], ["cardtype", "DVB"], ["is_default", 1]], [["id", 5]]);
+	    change_or_make_entry("profilegroups", [["name", "Transcoders"], ["cardtype", "TRANSCODE"], ["is_default", 1]], [["id", 6]]);
+	    change_or_make_entry("profilegroups", [["name", "FireWire Input"], ["cardtype", "FIREWIRE"], ["is_default", 1]], [["id", 7]]);
+	    change_or_make_entry("profilegroups", [["name", "USB Mpeg-4 Encoder (Plextor ConvertX, etc)"], ["cardtype", "GO7007"], ["is_default", 1]], [["id", 8]]);
+	    change_or_make_entry("profilegroups", [["name", "DBOX2 Input"], ["cardtype", "DBOX2"], ["is_default", 1]], [["id", 9]]);
+	    change_or_make_entry("profilegroups", [["name", "Freebox Input"], ["cardtype", "Freebox"], ["is_default", 1]], [["id", 10]]);
+	    change_or_make_entry("profilegroups", [["name", "HDHomeRun Recorders"], ["cardtype", "HDHOMERUN"], ["is_default", 1]], [["id", 11]]);
+	    change_or_make_entry("profilegroups", [["name", "CRC IP Recorders"], ["cardtype", "CRC_IP"], ["is_default", 1]], [["id", 12]]);
+    
+	    do_query("INSERT INTO codecparams (profile, name, value) VALUES (21, 'transcodelossless', 0)");
+	    do_query("INSERT INTO codecparams (profile, name, value) VALUES (21, 'transcoderesize', 0)");
+	    do_query("INSERT INTO codecparams (profile, name, value) VALUES (21, 'mpeg4bitrate', 2200)");
+	    do_query("INSERT INTO codecparams (profile, name, value) VALUES (21, 'mpeg4maxquality', 2)");
+	    do_query("INSERT INTO codecparams (profile, name, value) VALUES (21, 'mpeg4minquality', 15)");
+	    do_query("INSERT INTO codecparams (profile, name, value) VALUES (21, 'mpeg4qualdiff', 3)");
+	    do_query("INSERT INTO codecparams (profile, name, value) VALUES (21, 'scalebitrate', 1)");
+	    do_query("INSERT INTO codecparams (profile, name, value) VALUES (21, 'mpeg4optionvhq', 1)");
+	    do_query("INSERT INTO codecparams (profile, name, value) VALUES (21, 'mpeg4option4mv', 1)");
+	    do_query("INSERT INTO codecparams (profile, name, value) VALUES (21, 'mpeg4optionidct', 0)");
+	    do_query("INSERT INTO codecparams (profile, name, value) VALUES (21, 'mpeg4optionime', 0)");
+	    do_query("INSERT INTO codecparams (profile, name, value) VALUES (21, 'encodingthreadcount', 1)");
+	    do_query("INSERT INTO codecparams (profile, name, value) VALUES (21, 'mpeg2bitrate', 4500)");
+	    do_query("INSERT INTO codecparams (profile, name, value) VALUES (21, 'hardwaremjpegquality', 100)");
+	    do_query("INSERT INTO codecparams (profile, name, value) VALUES (21, 'hardwaremjpeghdecimation', 4)");
+	    do_query("INSERT INTO codecparams (profile, name, value) VALUES (21, 'hardwaremjpegvdecimation', 4)");
+	    do_query("INSERT INTO codecparams (profile, name, value) VALUES (21, 'mpeg2streamtype', 'MPEG-2 PS')");
+	    do_query("INSERT INTO codecparams (profile, name, value) VALUES (21, 'mpeg2maxbitrate', 6000)");
+	    do_query("INSERT INTO codecparams (profile, name, value) VALUES (21, 'samplerate', 48000)");
+	    do_query("INSERT INTO codecparams (profile, name, value) VALUES (21, 'volume', 100)");
+
+	    do_query("INSERT INTO codecparams (profile, name, value) VALUES (22, 'transcodelossless', 0)");
+	    do_query("INSERT INTO codecparams (profile, name, value) VALUES (22, 'transcoderesize', 0)");
+	    do_query("INSERT INTO codecparams (profile, name, value) VALUES (22, 'mpeg4bitrate', 2200)");
+	    do_query("INSERT INTO codecparams (profile, name, value) VALUES (22, 'mpeg4maxquality', 2)");
+	    do_query("INSERT INTO codecparams (profile, name, value) VALUES (22, 'mpeg4minquality', 15)");
+	    do_query("INSERT INTO codecparams (profile, name, value) VALUES (22, 'mpeg4qualdiff', 3)");
+	    do_query("INSERT INTO codecparams (profile, name, value) VALUES (22, 'scalebitrate', 1)");
+	    do_query("INSERT INTO codecparams (profile, name, value) VALUES (22, 'mpeg4optionvhq', 1)");
+	    do_query("INSERT INTO codecparams (profile, name, value) VALUES (22, 'mpeg4option4mv', 1)");
+	    do_query("INSERT INTO codecparams (profile, name, value) VALUES (22, 'mpeg4optionidct', 0)");
+	    do_query("INSERT INTO codecparams (profile, name, value) VALUES (22, 'mpeg4optionime', 0)");
+	    do_query("INSERT INTO codecparams (profile, name, value) VALUES (22, 'encodingthreadcount', 1)");
+	    do_query("INSERT INTO codecparams (profile, name, value) VALUES (22, 'mpeg2bitrate', 4500)");
+	    do_query("INSERT INTO codecparams (profile, name, value) VALUES (22, 'hardwaremjpegquality', 100)");
+	    do_query("INSERT INTO codecparams (profile, name, value) VALUES (22, 'hardwaremjpeghdecimation', 4)");
+	    do_query("INSERT INTO codecparams (profile, name, value) VALUES (22, 'hardwaremjpegvdecimation', 4)");
+	    do_query("INSERT INTO codecparams (profile, name, value) VALUES (22, 'mpeg2streamtype', 'MPEG-2 PS')");
+	    do_query("INSERT INTO codecparams (profile, name, value) VALUES (22, 'mpeg2maxbitrate', 6000)");
+	    do_query("INSERT INTO codecparams (profile, name, value) VALUES (22, 'samplerate', 48000)");
+	    do_query("INSERT INTO codecparams (profile, name, value) VALUES (22, 'volume', 100)");
+
+	    do_query("INSERT INTO codecparams (profile, name, value) VALUES (27, 'transcodelossless', 1)");
+
+	    do_query("INSERT INTO codecparams (profile, name, value) VALUES (28, 'transcodelossless', 0)");
+	    do_query("INSERT INTO codecparams (profile, name, value) VALUES (28, 'transcoderesize', 0)");
+	    do_query("INSERT INTO codecparams (profile, name, value) VALUES (28, 'mpeg4bitrate', 2200)");
+	    do_query("INSERT INTO codecparams (profile, name, value) VALUES (28, 'mpeg4maxquality', 2)");
+	    do_query("INSERT INTO codecparams (profile, name, value) VALUES (28, 'mpeg4minquality', 15)");
+	    do_query("INSERT INTO codecparams (profile, name, value) VALUES (28, 'mpeg4qualdiff', 3)");
+	    do_query("INSERT INTO codecparams (profile, name, value) VALUES (28, 'scalebitrate', 1)");
+	    do_query("INSERT INTO codecparams (profile, name, value) VALUES (28, 'mpeg4optionvhq', 1)");
+	    do_query("INSERT INTO codecparams (profile, name, value) VALUES (28, 'mpeg4option4mv', 1)");
+	    do_query("INSERT INTO codecparams (profile, name, value) VALUES (28, 'mpeg4optionidct', 0)");
+	    do_query("INSERT INTO codecparams (profile, name, value) VALUES (28, 'mpeg4optionime', 0)");
+	    do_query("INSERT INTO codecparams (profile, name, value) VALUES (28, 'encodingthreadcount', 1)");
+	    do_query("INSERT INTO codecparams (profile, name, value) VALUES (28, 'mpeg2bitrate', 4500)");
+	    do_query("INSERT INTO codecparams (profile, name, value) VALUES (28, 'hardwaremjpegquality', 100)");
+	    do_query("INSERT INTO codecparams (profile, name, value) VALUES (28, 'hardwaremjpeghdecimation', 4)");
+	    do_query("INSERT INTO codecparams (profile, name, value) VALUES (28, 'hardwaremjpegvdecimation', 4)");
+	    do_query("INSERT INTO codecparams (profile, name, value) VALUES (28, 'mpeg2streamtype', 'MPEG-2 PS')");
+	    do_query("INSERT INTO codecparams (profile, name, value) VALUES (28, 'mpeg2maxbitrate', 6000)");
+	    do_query("INSERT INTO codecparams (profile, name, value) VALUES (28, 'samplerate', 48000)");
+	    do_query("INSERT INTO codecparams (profile, name, value) VALUES (28, 'volume', 100)");
+
+	    do_query("INSERT INTO codecparams (profile, name, value) VALUES (29, 'transcodelossless', 0)");
+	    do_query("INSERT INTO codecparams (profile, name, value) VALUES (29, 'transcoderesize', 0)");
+	    do_query("INSERT INTO codecparams (profile, name, value) VALUES (29, 'mpeg4bitrate', 1500)");
+	    do_query("INSERT INTO codecparams (profile, name, value) VALUES (29, 'mpeg4maxquality', 2)");
+	    do_query("INSERT INTO codecparams (profile, name, value) VALUES (29, 'mpeg4minquality', 15)");
+	    do_query("INSERT INTO codecparams (profile, name, value) VALUES (29, 'mpeg4qualdiff', 3)");
+	    do_query("INSERT INTO codecparams (profile, name, value) VALUES (29, 'scalebitrate', 1)");
+	    do_query("INSERT INTO codecparams (profile, name, value) VALUES (29, 'mpeg4optionvhq', 0)");
+	    do_query("INSERT INTO codecparams (profile, name, value) VALUES (29, 'mpeg4option4mv', 0)");
+	    do_query("INSERT INTO codecparams (profile, name, value) VALUES (29, 'mpeg4optionidct', 0)");
+	    do_query("INSERT INTO codecparams (profile, name, value) VALUES (29, 'mpeg4optionime', 0)");
+	    do_query("INSERT INTO codecparams (profile, name, value) VALUES (29, 'encodingthreadcount', 1)");
+	    do_query("INSERT INTO codecparams (profile, name, value) VALUES (29, 'mpeg2bitrate', 4500)");
+	    do_query("INSERT INTO codecparams (profile, name, value) VALUES (29, 'hardwaremjpegquality', 100)");
+	    do_query("INSERT INTO codecparams (profile, name, value) VALUES (29, 'hardwaremjpeghdecimation', 4)");
+	    do_query("INSERT INTO codecparams (profile, name, value) VALUES (29, 'hardwaremjpegvdecimation', 4)");
+	    do_query("INSERT INTO codecparams (profile, name, value) VALUES (29, 'mpeg2streamtype', 'MPEG-2 PS')");
+	    do_query("INSERT INTO codecparams (profile, name, value) VALUES (29, 'mpeg2maxbitrate', 6000)");
+	    do_query("INSERT INTO codecparams (profile, name, value) VALUES (29, 'samplerate', 44100)");
+	    do_query("INSERT INTO codecparams (profile, name, value) VALUES (29, 'mp3quality', 7)");
+	    do_query("INSERT INTO codecparams (profile, name, value) VALUES (29, 'volume', 100)");
+
+
+	    # I don't know why we have so many of these.  Only profilegroup 6 seems to matter.
+	    change_or_make_entry("recordingprofiles", [["name", 'Default'], ["profilegroup", 1]], [["id", 1]]);
+	    change_or_make_entry("recordingprofiles", [["name", 'Live TV'], ["profilegroup", 1]], [["id", 2]]);
+	    change_or_make_entry("recordingprofiles", [["name", 'High Quality'], ["profilegroup", 1]], [["id", 3]]);
+	    change_or_make_entry("recordingprofiles", [["name", 'Low Quality'], ["profilegroup", 1]], [["id", 4]]);
+	    change_or_make_entry("recordingprofiles", [["name", 'Default'], ["profilegroup", 2]], [["id", 5]]);
+	    change_or_make_entry("recordingprofiles", [["name", 'Live TV'], ["profilegroup", 2]], [["id", 6]]);
+	    change_or_make_entry("recordingprofiles", [["name", 'High Quality'], ["profilegroup", 2]], [["id", 7]]);
+	    change_or_make_entry("recordingprofiles", [["name", 'Low Quality'], ["profilegroup", 2]], [["id", 8]]);
+	    change_or_make_entry("recordingprofiles", [["name", 'Default'], ["profilegroup", 3]], [["id", 9]]);
+	    change_or_make_entry("recordingprofiles", [["name", 'Live TV'], ["profilegroup", 3]], [["id", 10]]);
+	    change_or_make_entry("recordingprofiles", [["name", 'High Quality'], ["profilegroup", 3]], [["id", 11]]);
+	    change_or_make_entry("recordingprofiles", [["name", 'Low Quality'], ["profilegroup", 3]], [["id", 12]]);
+	    change_or_make_entry("recordingprofiles", [["name", 'Default'], ["profilegroup", 4]], [["id", 13]]);
+	    change_or_make_entry("recordingprofiles", [["name", 'Live TV'], ["profilegroup", 4]], [["id", 14]]);
+	    change_or_make_entry("recordingprofiles", [["name", 'High Quality'], ["profilegroup", 4]], [["id", 15]]);
+	    change_or_make_entry("recordingprofiles", [["name", 'Low Quality'], ["profilegroup", 4]], [["id", 16]]);
+	    change_or_make_entry("recordingprofiles", [["name", 'Default'], ["profilegroup", 5]], [["id", 17]]);
+	    change_or_make_entry("recordingprofiles", [["name", 'Live TV'], ["profilegroup", 5]], [["id", 18]]);
+	    change_or_make_entry("recordingprofiles", [["name", 'High Quality'], ["profilegroup", 5]], [["id", 19]]);
+	    change_or_make_entry("recordingprofiles", [["name", 'Low Quality'], ["profilegroup", 5]], [["id", 20]]);
+	    change_or_make_entry("recordingprofiles", [["name", 'RTjpeg/MPEG4'], ["profilegroup", 6], ["videocodec", "MPEG-4"], ["audiocodec", "Uncompressed"]], [["id", 21]]);
+	    change_or_make_entry("recordingprofiles", [["name", 'MPEG2'], ["profilegroup", 6], ["videocodec", "MPEG-4"], ["audiocodec", "Uncompressed"]], [["id", 22]]);
+	    change_or_make_entry("recordingprofiles", [["name", 'Default'], ["profilegroup", 8]], [["id", 23]]);
+	    change_or_make_entry("recordingprofiles", [["name", 'Live TV'], ["profilegroup", 8]], [["id", 24]]);
+	    change_or_make_entry("recordingprofiles", [["name", 'High Quality'], ["profilegroup", 8]], [["id", 25]]);
+	    change_or_make_entry("recordingprofiles", [["name", 'Low Quality'], ["profilegroup", 8]], [["id", 26]]);
+	    change_or_make_entry("recordingprofiles", [["name", 'High Quality'], ["profilegroup", 6]], [["id", 27]]);
+	    change_or_make_entry("recordingprofiles", [["name", 'Medium Quality'], ["profilegroup", 6], ["videocodec", "MPEG-4"], ["audiocodec", "Uncompressed"]], [["id", 28]]);
+	    change_or_make_entry("recordingprofiles", [["name", 'Low Quality'], ["profilegroup", 6], ["videocodec", "MPEG-4"], ["audiocodec", "MP3"]], [["id", 29]]);
+	    change_or_make_entry("recordingprofiles", [["name", 'Default'], ["profilegroup", 10]], [["id", 30]]);
+	    change_or_make_entry("recordingprofiles", [["name", 'Live TV'], ["profilegroup", 10]], [["id", 31]]);
+	    change_or_make_entry("recordingprofiles", [["name", 'High Quality'], ["profilegroup", 10]], [["id", 32]]);
+	    change_or_make_entry("recordingprofiles", [["name", 'Low Quality'], ["profilegroup", 10]], [["id", 33]]);
+	    change_or_make_entry("recordingprofiles", [["name", 'Default'], ["profilegroup", 11]], [["id", 34]]);
+	    change_or_make_entry("recordingprofiles", [["name", 'Live TV'], ["profilegroup", 11]], [["id", 35]]);
+	    change_or_make_entry("recordingprofiles", [["name", 'High Quality'], ["profilegroup", 11]], [["id", 36]]);
+	    change_or_make_entry("recordingprofiles", [["name", 'Low Quality'], ["profilegroup", 11]], [["id", 37]]);
+	    change_or_make_entry("recordingprofiles", [["name", 'Default'], ["profilegroup", 12]], [["id", 38]]);
+	    change_or_make_entry("recordingprofiles", [["name", 'Live TV'], ["profilegroup", 12]], [["id", 39]]);
+	    change_or_make_entry("recordingprofiles", [["name", 'High Quality'], ["profilegroup", 12]], [["id", 40]]);
+	    change_or_make_entry("recordingprofiles", [["name", 'Low Quality'], ["profilegroup", 12]], [["id", 41]]);
+	    change_or_make_entry("recordingprofiles", [["name", 'Default'], ["profilegroup", 7]], [["id", 42]]);
+	    change_or_make_entry("recordingprofiles", [["name", 'Live TV'], ["profilegroup", 7]], [["id", 43]]);
+	    change_or_make_entry("recordingprofiles", [["name", 'High Quality'], ["profilegroup", 7]], [["id", 44]]);
+	    change_or_make_entry("recordingprofiles", [["name", 'Low Quality'], ["profilegroup", 7]], [["id", 45]]);
+	    change_or_make_entry("recordingprofiles", [["name", 'Default'], ["profilegroup", 9]], [["id", 46]]);
+	    change_or_make_entry("recordingprofiles", [["name", 'Live TV'], ["profilegroup", 9]], [["id", 47]]);
+	    change_or_make_entry("recordingprofiles", [["name", 'High Quality'], ["profilegroup", 9]], [["id", 48]]);
+	    change_or_make_entry("recordingprofiles", [["name", 'Low Quality'], ["profilegroup", 9]], [["id", 49]]);
+
+	    #
+	    # settings
+	    #
+	    change_or_make_setting('AlwaysStreamFiles', '1'); # new in R6
+	    change_or_make_setting('AutoCommercialSkip', '1');
+	    change_or_make_setting('AutoExpireWatchedPriority', '1');
+	    change_or_make_setting('BackendServerPort', '6543');
+	    change_or_make_setting('BackendStatusPort', '6544');
+	    change_or_make_setting('CDWriterDevice', 'ATA:1,0,0');
+#	    change_or_make_setting('ChannelOrdering', 'chanid');
+	    change_or_make_setting('CommercialSkipMethod', '255');
+	    change_or_make_setting('DVDBookmarkPrompt', '1');
+	    change_or_make_setting('DVDRipLocation', $SQL_DirTmp);
+	    change_or_make_setting('DefaultRipQuality', '1');
+	    change_or_make_setting('DefaultTranscoder', '28'); # change this number if you redefine the transcoders above
+	    change_or_make_setting('Deinterlace', '1');
+	    change_or_make_setting('DeletesFollowLinks', '1');
+	    change_or_make_setting('DisableFirewireReset', '0');
+	    change_or_make_setting('EITCrawIdleStart','60');
+	    change_or_make_setting('EITIgnoresSource','0');
+	    change_or_make_setting('EITTimeOffset','Auto');
+	    change_or_make_setting('EITTransportTimeout','5');
+	    change_or_make_setting('EPGEnableJumpToChannel','1');
+	    change_or_make_setting('EPGFillType','12');
+	    change_or_make_setting('EnableDVDBookmark','1');
+	    change_or_make_setting('EndOfRecordingExitPrompt','1');
+	    change_or_make_setting('GalleryDir', $SQL_DirPics);
+	    change_or_make_setting('GalleryRecursiveSlideshow', '1');
+	    change_or_make_setting('HaltCommand', 'sudo /sbin/halt');
+	    change_or_make_setting('HostAudiotype','ALSA');
+	    change_or_make_setting('HostMiro','1');
+	    change_or_make_setting('HostXine','1');
+	    change_or_make_setting('Hostpluginmythappletrailers','1');
+	    change_or_make_setting('Hostpluginmytharchive','1');
+	    change_or_make_setting('Hostpluginmythbrowser','1');
+	    change_or_make_setting('Hostpluginmythcontrols','1');
+	    change_or_make_setting('Hostpluginmythflix','1');
+	    change_or_make_setting('Hostpluginmythgallery','1');
+	    change_or_make_setting('Hostpluginmythgame','1');
+	    change_or_make_setting('HostpluginmythgameFceu','1');
+	    change_or_make_setting('HostpluginmythgameMame','1');
+	    change_or_make_setting('HostpluginmythgameMame','1');
+	    change_or_make_setting('HostpluginmythgameROMDB','1');
+	    change_or_make_setting('HostpluginmythgameXE','1');
+	    change_or_make_setting('HostpluginmythgameZsnes','1');
+	    change_or_make_setting('HostpluginmythgameZsnes','1');
+	    change_or_make_setting('Hostpluginmythmovietime','1');
+	    change_or_make_setting('Hostpluginmythmusic','1');
+	    change_or_make_setting('Hostpluginmythnews','1');
+	    change_or_make_setting('Hostpluginmythphone','1');
+	    change_or_make_setting('Hostpluginmythsmolt','1');
+	    change_or_make_setting('Hostpluginmythstream','1');
+	    change_or_make_setting('Hostpluginmythvideo','1');
+	    change_or_make_setting('Hostpluginmythvideo_dvdcss','0');
+	    change_or_make_setting('Hostpluginmythvideo_dvdcss','0');
+	    change_or_make_setting('Hostpluginmythvodka','1');
+	    change_or_make_setting('Hostpluginmythweather','1');
+	    change_or_make_setting('JobAllowCommFlag', '1');
+	    change_or_make_setting('JobAllowTranscode', '1');
+	    change_or_make_setting('JobAllowUserJob1', '1');
+	    change_or_make_setting('JobAllowUserJob2', '2');
+	    change_or_make_setting('JobQueueCPU','0');
+	    change_or_make_setting('JobQueueCheckFrequency','60');
+	    change_or_make_setting('JobQueueCommFlagCommand','mythcommflag');
+	    change_or_make_setting('JobQueueMaxSimultaneousJobs','1');
+	    change_or_make_setting('JobQueueTranscodeCommand','mythtranscode');
+	    change_or_make_setting('JobQueueWindowEnd','23:59');
+	    change_or_make_setting('JobQueueWindowStart','00:00');
+	    change_or_make_setting('JobsRunOnRecordHost','0');
+	    change_or_make_setting('LiveTVInAllPrograms','1');
+	    change_or_make_setting('MasterMixerVolume','100');
+	    change_or_make_setting('MasterServerIP', '127.0.0.1');
+	    change_or_make_setting('MasterServerPort', '6543');
+	    change_or_make_setting('MediaChangeEvents','1');
+	    change_or_make_setting('MonitorDrives', '1');
+	    change_or_make_setting('MusicLocation', $SQL_DirMusic);
+	    change_or_make_setting('MythArchivePng2yuvCmd', 'png2yuv'); # ??? still used?
+	    change_or_make_setting('MythArchiveShareDir','/myth/archive/');
+	    change_or_make_setting('MythArchiveTempDir', $SQL_DirTmp);
+	    change_or_make_setting('MythFillDatabaseArgs', '--quiet');
+	    change_or_make_setting('MythFillDatabaseLog', '/var/log/mythtv/mythfilldatabase.log');
+	    change_or_make_setting('MythFillDatabasePath', '/usr/bin/nice -n 19 /usr/bin/mythfilldatabase');
+	    change_or_make_setting('MythFillEnabled', '1');
+	    change_or_make_setting('MythTVtv', $SQL_DirTV);
+	    change_or_make_setting('NetworkControlEnabled', '1');
+	    change_or_make_setting('PCMMixerVolume', '50');
+	    change_or_make_setting('PVR350VideoDev', '/dev/video16');
+	    change_or_make_setting('PlayBoxShading', '0');
+	    change_or_make_setting('PlayMode', 'none');
+	    change_or_make_setting('PlaybackExitPrompt', '2');
+	    change_or_make_setting('PlaybackPreviewLowCPU', '1');
+#	    change_or_make_setting('PlaybackReturnPrompt', '1');
+#	    change_or_make_setting('PlaybackReturnPrompt', '2');
+	    change_or_make_setting('RebootCommand', 'sudo /sbin/reboot');
+	    change_or_make_setting('RecordFilePrefix',$SQL_DirTV);
+	    change_or_make_setting('SelectChangesChannel', '1');
+	    change_or_make_setting('ServerHaltCommand', 'sudo /sbin/halt -p');
+	    change_or_make_setting('ShowWholeTree', '1');
+	    change_or_make_setting('SmartChannelChange', '1');
+	    change_or_make_setting('StartupSecsBeforeRecording', '120');
+	    change_or_make_setting('TruncateDeletesSlowly', '1');
+	    change_or_make_setting('UseOutputPictureControls', '1');
+	    change_or_make_setting('UserJob1', 'myth2ipod -cut \"%DIR%\" \"%FILE%\"');
+	    change_or_make_setting('UserJob2', 'myt2xvid3 -cut \"%DIR%\" \"%FILE%\"');
+	    change_or_make_setting('UserJobDesc1', 'Encode for iPod');
+	    change_or_make_setting('UserJobDesc2', 'Transcode to XviD');
+	    change_or_make_setting('UserJobDesc3', 'User Job #3');
+	    change_or_make_setting('UserJobDesc4', 'User Job #4');
+	    change_or_make_setting('VCDPlayerCommand', 'mplayer vcd:\/\/ -cdrom-device %d -fs -zoom -vo xv -vf pp=lb');
+	    change_or_make_setting('VideoArtworkDir', "$SQL_DirVideo/.covers");
+	    change_or_make_setting('VideoBrowserNoDB', '1');
+	    change_or_make_setting('VideoDefaultPlayer', 'mplayer-resumer.pl -fs -zoom -vo xv %s');
+	    change_or_make_setting('VideoGalleryNoDB', '1');
+	    change_or_make_setting('VideoStartupDir', $SQL_DirVideo);
+	    change_or_make_setting('VideoTreeNoDB', '1');
+	    change_or_make_setting('VisualMode','BumpScope;Gears;Goom;MonoScope;Squares;StereoScope;Synaesthesia;LibVisual-bumpscope;LibVisual-corona;LibVisual-infinite;AlbumArt');
+	    change_or_make_setting('weatherbackgroundfetch', '1');
+	    change_or_make_setting('WebBrowserCommand','/usr/bin/mythbrowser');
+	    change_or_make_setting('WebBrowserHideScrollbars','0');
+	    change_or_make_setting('WebBrowserScrollMode','1');
+	    change_or_make_setting('WebBrowserScrollSpeed','4');
+	    change_or_make_setting('WebBrowserZoomLevel','20');
+	    change_or_make_setting('WebcamDevice','/dev/video');
+	    change_or_make_setting('WOLbackendCommand','');
+	    change_or_make_setting('WOLbackendConnectRetry','5');
+	    change_or_make_setting('WOLslaveBackendsCommand','');
+	    change_or_make_setting('WakeupTimeFormat','hh:mm yyyy-MM-dd');
+	    change_or_make_setting('WatchTVGuide','0');
+	    change_or_make_setting('WeatherDBSchemaVer','1000');
+	    change_or_make_setting('WebBrowserCommand','/usr/bin/mythbrowser');
+	    change_or_make_setting('WebBrowserHideScrollbars','0');
+	    change_or_make_setting('WebBrowserScrollMode','1');
+	    change_or_make_setting('WebBrowserScrollSpeed','4');
+	    change_or_make_setting('WebBrowserZoomLevel','20');
+	    change_or_make_setting('XineramaScreen','0');
+	    change_or_make_setting('blockSDWUwithoutClient','1');
+	    change_or_make_setting('idleWaitForRecordingTime','15');
+	    change_or_make_setting('mythdvd.DVDPlayerCommand', 'Internal');
+	    change_or_make_setting('mythvideo.VideoTreeRemember', '1');
+	    change_or_make_setting('mythfilldatabaseLastRunStart','');
+	    change_or_make_setting('mythfilldatabaseLastRunEnd','');
+	    change_or_make_setting('mythfilldatabaseLastRunStatus','');
+
+	    #
+	    # customexample table
+	    #
+	    change_or_make_entry("customexample", [["fromclause", ""], ["whereclause", "program.category_type = \"movie\" AND program.airdate >= YEAR(DATE_SUB(NOW(), INTERVAL 1 YEAR)) AND program.stars > 0.5 "], ["search", "1"]], [["rulename", "New Flix"]]);
+
+#	    # As much of MythWeather as we can automate for now
+	    my $units = 0;
+	    my $metric_units = do_query("SELECT * FROM settings WHERE value='SIUnits' AND data='YES'");
+	    if ($metric_units) {
+		$units=0;
+	    } else {
+		$units=1;
+	    }
+#	    change_or_make_entry("weatherscreens", [["draworder", "0"], ["container", "Six Day Forecast"], ["units", $units]], [["screen_id", 1]]);
+#	    change_or_make_entry("weatherdatalayout", [["location", "0"], ["dataitem", "6dlocation"], ["weatherscreens_screen_id", 1]], [["weathersourcesettings_sourceid", 4]]);
+#	    for (my $increment=0; $increment < 6; $increment++) {
+#		change_or_make_entry("weatherdatalayout", [["location", "0"], ["dataitem", "date-$increment"], ["weatherscreens_screen_id", 1]], [["weathersourcesettings_sourceid", 4]]);
+#		change_or_make_entry("weatherdatalayout", [["location", "0"], ["dataitem", "high-$increment"], ["weatherscreens_screen_id", 1]], [["weathersourcesettings_sourceid", 4]]);
+#		change_or_make_entry("weatherdatalayout", [["location", "0"], ["dataitem", "icon-$increment"], ["weatherscreens_screen_id", 1]], [["weathersourcesettings_sourceid", 4]]);
+#		change_or_make_entry("weatherdatalayout", [["location", "0"], ["dataitem", "low-$increment"], ["weatherscreens_screen_id", 1]], [["weathersourcesettings_sourceid", 4]]);
+#	    }
+#	    change_or_make_entry("weatherdatalayout", [["location", "0"], ["dataitem", "updatetime"], ["weatherscreens_screen_id", 1]], [["weathersourcesettings_sourceid", 4]]);
+#
+#	    change_or_make_entry("weathersourcesettings", [["sourceid", "1"], ["source_name", "BBC-Current-XML"], ["update_timeout", "7200"], ["retrieve_timeout", "30"], ["path", "/usr/share/mythtv/mythweather/scripts/bbccurrentxml.pl"], ["author", "Stuart Morgan"], ["version", "0.1"], ["email", "stuart\@tase.co.uk"], ["types", "cclocation,station_id,copyright,observation_time,weather,temp,relative_humidity,wind_dir,pressure,visibility,weather_icon,appt,wind_spdgst"]]);
+#	    change_or_make_entry("weathersourcesettings", [["sourceid", "2"], ["source_name", "BBC-3day-XML"], ["update_timeout", "21600"], ["retrieve_timeout", "30"], ["path", "/usr/share/mythtv/mythweather/scripts/bbcthreedayxml.pl"], ["author", "Stuart Morgan"], ["version", "0.1"], ["email", "stuart\@tase.co.uk"], ["types", "3dlocation,station_id,copyright,weather_icon,date-0,icon-0,low-0,high-0,date-1,icon-1,low-1,high-1,date-2,icon-2,low-2,high-2,updatetime"]]);
+#	    change_or_make_entry("weathersourcesettings", [["sourceid", "3"], ["source_name", "ENVCAN"], ["update_timeout", "900"], ["retrieve_timeout", "30"], ["path", "/usr/share/mythtv/mythweather/scripts/ca_envcan/envcan.pl"], ["author", "Joe Ripley"], ["version", "0.4"], ["email", "vitaminjoe\@gmail.com"], ["types", "cclocation,station_id,copyright,observation_time,observation_time_rfc822,weather,temp,relative_humidity,wind_dir,wind_degrees,wind_speed,wind_gust,pressure,dewpoint,heat_index,windchill,visibility,weather_icon,appt,wind_spdgst,3dlocation,6dlocation,date-0,icon-0,low-0,high-0,date-1,icon-1,low-1,high-1,date-2,icon-2,low-2,high-2,updatetime,date-3,icon-3,low-3,high-3,date-4,icon-4,low-4,high-4,date-5,icon-5,low-5,high-5"]]);
+#	    change_or_make_entry("weathersourcesettings", [["sourceid", "4"], ["source_name", "NDFD-6_day"], ["update_timeout", "900"], ["retrieve_timeout", "30"], ["path", "/usr/share/mythtv/mythweather/scripts/ndfd.pl"], ["author", "Lucien Dunning"], ["version", "0.1"], ["email", "ldunning\@gmail.com"], ["types", "3dlocation,6dlocation,updatetime,high-0,high-1,high-2,high-3,high-4,high-5,low-0,low-1,low-2,low-3,low-4,low-5,icon-0,icon-1,icon-2,icon-3,icon-4,icon-5,date-0,date-1,date-2,date-3,date-4,date-5"]]);
+#	    change_or_make_entry("weathersourcesettings", [["sourceid", "5"], ["source_name", "NDFD-18_hour"], ["update_timeout", "900"], ["retrieve_timeout", "30"], ["path", "/usr/share/mythtv/mythweather/scripts/ndfd18.pl"], ["author", "Lucien Dunning"], ["version", "0.1"], ["email", "ldunning\@gmail.com"], ["types", "18hrlocation,updatetime,temp-0,temp-1,temp-2,temp-3,temp-4,temp-5,18icon-0,18icon-1,18icon-2,18icon-3,18icon-4,18icon-5,pop-0,pop-1,pop-2,pop-3,pop-4,pop-5,time-0,time-1,time-2,time-3,time-4,time-5"]]);
+#	    change_or_make_entry("weathersourcesettings", [["sourceid", "6"], ["source_name", "NWS-Alerts"], ["update_timeout", "600"], ["retrieve_timeout", "30"], ["path", "/usr/share/mythtv/mythweather/scripts/nws-alert.pl"], ["author", "Lucien Dunning"], ["version", "0.1"], ["email", "ldunning\@gmail.com"], ["types", "swlocation,updatetime,alerts"]]);
+#	    change_or_make_entry("weathersourcesettings", [["sourceid", "7"], ["source_name", "NWS-XML"], ["update_timeout", "900"], ["retrieve_timeout", "30"], ["path", "/usr/share/mythtv/mythweather/scripts/nwsxml.pl"], ["author", "Lucien Dunning"], ["version", "0.2"], ["email", "ldunning\@gmail.com"], ["types", "cclocation,station_id,latitude,longitude,observation_time,observation_time_rfc822,weather,temperature_string,temp,relative_humidity,wind_string,wind_dir,wind_degrees,wind_speed,wind_gust,pressure_string,pressure,dewpoint_string,dewpoint,heat_index_string,heat_index,windchill_string,windchill,visibility,weather_icon,appt,wind_spdgst"]]);
+	    
+	    my $ipaddress = execute_shell_command("ifconfig | grep inet.addr | head -1");
+	    $ipaddress =~ s/.*inet addr:(\d+.\d+.\d+.\d+)\s.*/$1/g;
+
+	    # Change from the generic IP address to the real one.
+	    do_query("UPDATE settings SET data='$ipaddress' where data='127.0.0.1'");
+	    do_query("UPDATE settings SET data='$ipaddress' where data='MythTVip'"); # ??? needed?
+	    
+	    my $hostname = execute_shell_command("hostname") || "localhost";
+	    # one table at a time, replace hostname with our actual hostname
+	    # ??? can this be done all at once in MySQL?
+	    foreach my $table ("capturecard", "inuseprograms", "jobqueue", "jumppoints", "keybindings", "music_playlists",
+			       "musicplaylist", "recorded", "settings", "weatherscreens") {
+		do_query("UPDATE $table SET hostname='$hostname'");
+	    }
+
+	    # Some entries in 'settings' should stay NULL:  http://www.mythtv.org/wiki/index.php/Settings_table
+	    # There are fewer entries that stay NULL than there are that should have the hostname set, so while
+	    # it duplicates some effort to change them from NULL to the hostname and them back to NULL, it's
+	    # easier to maintain and more future-proof.
+	    foreach my $entry ("mythfilldatabaseLastRunStart", "mythfilldatabaseLastRunEnd", "mythfilldatabaseLastRunStatus",
+			       "DataDirectMessage", "HaveRepeats", "DBSchemaVer", "DefaultTranscoder", "MythFillSuggestedRunTime",
+			       "MythFillGrabberSuggestsTime", "MasterServerIP", "MasterServerPort", "TVFormat", "VbiFormat", "FreqTable",
+			       "TimeOffset", "MasterBackendOverride", "DeletesFollowLinks", "HDRingbufferSize", "EITTransportTimeout",
+			       "EITIgnoresSource", "EITCrawIdleStart", "startupCommand", "blockSDWUwithoutClient", "idleWaitForRecordingTime",
+			       "StartupSecsBeforeRecording", "WakeupTimeFormat", "SetWakeuptimeCommand", "ServerHaltCommand", "preSDWUCheckCommand",
+			       "WOLbackendConnectRetry", "WOLbackendCommand", "WOLslaveBackendsCommand", "JobsRunOnRecordHost",
+			       "AutoCommflagWhileRecording", "JobQueueCommFlagCommand", "JobQueueTranscodeCommand",
+			       "AutoTranscodeBeforeAutoCommflag", "SaveTranscoding", "UserJobDesc1", "UserJob1", "UserJobDesc2", "UserJob2",
+			       "UserJobDesc3", "UserJob3", "UserJobDesc4", "UserJob4", "PreviewPixmapOffset", "AllRecGroupPassword",
+			       "MaximumCommercialSkip", "CommSkipAllBlanks", "LastFreeCard", "LiveTVPriority", "AutoExpireMethod",
+			       "AutoExpireDefault", "RerecordWatched", "AutoExpireWatchedPriority", "AutoExpireLiveTVMaxAge",
+			       "AutoExpireDayPriority", "AutoExpireExtraSpace", "AutoExpireInsteadOfDelete", "DeletedFifoOrder",
+			       "CommercialSkipMethod", "AggressiveCommDetect", "AutoCommercialFlag", "AutoTranscode", "AutoRunUserJob1",
+			       "AutoRunUserJob2", "AutoRunUserJob3", "AutoRunUserJob4", "OverTimeCategory", "CategoryOverTime",
+			       "EPGEnableJumpToChannel", "LogEnabled", "MythFillEnabled", "MythFillDatabasePath", "MythFillDatabaseArgs",
+			       "MythFillDatabaseLog", "MythFillPeriod", "MythFillMinHour", "MythFillMaxHour", "SchedMoveHigher", "SchedOpenEnd",
+			       "ComplexPriority", "PrefInputPriority", "SingleRecordRecPriority", "FindOneRecordRecPriority", "ArchiveDBSchemaVer",
+			       "FlixDBSchemaVer", "GalleryDBSchemaVer", "GameDBSchemaVer", "MusicDBSchemaVer", "PhoneDBSchemaVer",
+			       "mythvideo.DBSchemaVer", "WeatherDBSchemaVer") {
+		do_query("UPDATE settings SET hostname=NULL WHERE value='$entry'");
+	    }
+	    
+	    change_or_make_setting('MasterBackendOverride','1'); # I don't remember why, but making the hostname NULL is important here
+	    do_query("UPDATE settings SET hostname=NULL WHERE value='MasterBackendOverride'");
+	    
+	    # storagegroup
+	    change_or_make_entry("storagegroup", [["groupname", "Default"], ["hostname", $hostname], ["dirname", $SQL_DirTV]], [["id", 1]]);
+
+	    #
+	    # Websites for mythbrowser
+	    #
+	    #change_or_make_entry("websites", [["grp", "LinHeS"], ["dsc", ""], ["updated", ""]], [["url", "http://knoppmyth.net"]]);
+	    #change_or_make_entry("websites", [["grp", "LinHeS"], ["dsc", ""], ["updated", ""]], [["url", "http://knoppmythwiki.org"]]);
+	    
+	    disconnect_from_db();
+
+	    # Fix hostname for iPod feed URLs
+	    $command = "sed -i \"s/hostname\\//$hostname\\//g\" /usr/local/bin/myth2ipod";
+	    execute_shell_command($command);
+	    
+	    # Fix hostname for XViD feed URLs
+	    $command = "sed -i \"s/192.168.0.222\\//$hostname\\//g\" /usr/local/bin/myt2xvid3";
+	    execute_shell_command($command);
+
+	    # Customize default MythTV library.xml to reflect KnoppMyth's wider selection of
+	    # online stream options.
+	    #$command = "sed -i \"/<type>STREAM<\\/type>\$/{N; N; N; N; s/text>.*<\\/text/text>Online Streams<\\/text/; s/action>.*<\\/action/action>MENU is.xml<\\/action/; s/<depends.*depends>//; }\" /usr/share/mythtv/library.xml";
+	    $command = "/bin/cp /usr/share/mythtv/library.xml.km /usr/share/mythtv/library.xml";
+	    execute_shell_command($command);
+	} else {
+	    my $logger = get_logger('tweaker.script');
+	    $logger->error("Unable to connect to mythconverg database");
+	    $logger->error("Unable to implement option $option.");
+	    return -1;
+	}
+	return 1;
+    }
+
+    file_tweaks($option) || exit -1;
+    SQL_tweaks($option) || exit -1;
+}
+
+# Try to get a Recommendation Level for $option.
+sub poll_options {
+    my($option) = @_;
+    recommendation_level("recommended", "These tweaks benefit all users.");
+}
+
+# Unimplemented in 0.7
+sub check_option {
+    help;
+}
+
+# Unimplemented in 0.7
+sub count_iterations {
+    help;
+}
+
+process_parameters;
-- 
cgit v0.12

