Blogs

Использование PowerShell в настройке Vista Media Center и программы передач

  • Comments 10
  • Likes

Подобрал я комплектующие для Media Center. Хочу поделиться опытом настройки… Но, давайте по порядку.

Сборка  

Корпус mATX Thermaltake LANBOX Lite Black
(Корпус отличный - удобный, вместительный, тихий) 

3240 

Motherboard ASUS P5K-VM 

3150 

CPU Intel Core 2 Duo E4300, 1,8GHz, 2Mb, 800MHz Socket-775 OEM 

2980

Кулер Intel

270 

GotView X5 DVD Hybrid PCI-Express

2370 

PCI-E GeForce 8600GT
(Купил с пассивным охлаждением, чтобы не шумела)

2850 

Привод Samsung DVDRW SH-S203B
(HDDVD привод куплю позже, как раз под него место есть)

720 

HDD SATA 500Gb Samsung
(Весьма тихий HDD)

3150 

2 DIMM DDR-II, 1024Mb 

1100 

Картридер 3.5, USB

250 

Сборка компьютера в таком корпусе доставила только удовольствие. После того, как материнская плата, HDD, приводы и блок питания были привинчены к специальным блокам их осталось только установить в корпус и включить питание.

По FireWire присоединил внешний HDD Maxtor еще на 500Gb.

Для ТВ-тюнера я предварительно купил фильтр на ТВ антенну - не хотелось бы, чтобы случайный разряд выжег тюнер и материнскую плату.

Пульт для Media Center пока используется стандартный, но планирую взять радио пульт, чтобы громкость музыки можно было регулировать находясь в кухне, где стоит вторая пара колонок.

Весьма интересным вариантом показалась клавиатура совмещенная с трекболлом и дальностью действия 5 метров - BTC 9116URF. Клавиатура бюджетная, очень компактная и удобная, хотя ее самый главный плюс - она единственная была в продаже c допустимым радиусом действия дальше 3 метров и за разумные деньги (не 4500 рублей). Из минусов можно назвать излишнюю лаконичность и отсутствие кнопок для Media Center, но с другой стороны - все нужные функции вынесены на комбинации клавиш Media Center и я с удовольствием ими пользуюсь.

 

ОС

Операционка - конечно же Vista Ultimate. После того как разберусь со всеми драйверами и устройствами, скорее всего переставлю начисто, уже с SP1.   

Я не отключал UAC, но вот Auto Logon для Media Center - необходимая вещь.

Ноутбуки дома "смотрят" на расшаренный Public Folder - BackupStorage, куда и настроен ежедневный (еженощный) backup средствами Vista на самих ноутбуках. Компьютеры обычно не выключаются на ночь и постоянно находятся в сети через WiFi, поэтому бекап критичной информации проходит автоматически и без излишних сложностей.

Также во всю используются функции Sharing Media в Media Player. Настроены динамические playlists которые автоматически срабатывают при подключении ассоциированных с ними устройств. Оцифровал новый альбом, появилась новая пачка семейных фото, не думая втыкаешь флешку, с которой слушаешь музыку в машине, туда заливаются последние обновления. (Позже будет Zune 2).  

Soft

Телевизор я не смотрю, НО, настройка заливки программы передач и автоматическая запись нужных программ по сложному расписанию - задача интересная. Собственно было бы здорово записывать:   

  • Discovery MythBusters
  • Discovery How It's Made
  • Discovery Brainiacs
  • Смешариков на любых каналах
  • MTV Клиника
  • Пару фильмов с TV1000, чтобы посмотреть на выходных  

    Программа передач основных каналов эфирного телевидения, которая предоставляется Microsoft для пользователей Media Center, мне не подходит, потому что я пользуюсь услугами Диван-ТВ. Понятно, что я не один такой и есть варианты решения.   

    После недолгих поисков в Интернет стало понятно, что мне должны помочь TVxb и BladeRunner, который в свою очередь был написан с использованием программы QuickGuide. Убил я времени на выяснение истории этих программ порядочно и выяснилось, что последняя версия BladeRunner не работает под Vista, а QuickGuide не поддерживается последнее время.  

    И это замечательно! Потому что появилась отличная возможность на практике использовать PowerShell, до которого руки не доходили еще с тех пор как он был Monad'ом. Удачно получилось, что еще и Самару всю снегом занесло и выходные были свободные :)   

     

PowerEPG  

Немного теории. Существует сторонняя компания, которая собирает и обрабатывает программы передач основных TV каналов по всему миру. Microsoft централизованно забирает эти данные и отдает пользователям Media Center через Electronic Program Guide (EPG) сервис. Этот Web Service (https://data.tvdownload.microsoft.com/discovery/discoveryservice.asmx/GetTVServicesMetaInfo?protocolVersion=1.0&clientAuthToken=111&clientId=111&countryCode=ru&languageId=en&clientType=ehome&version=6.0) в качестве входных данных принимает номер версии Media Center, страну, почтовый индекс и тип передачи сигнала (кабельное, эфир), а, в конечном итоге, на выходе отдает XML с указанием откуда можно забрать ужатый и зашифрованный XML файл с программой передач для указанного региона и провайдера услуг.  

Собственно задача состоит из двух частей - собрать программу передач с нужных каналов и потом скомпоновать эту информацию в нужный формат. Первую часть решает вполне адекватная программа TVxb. Единственное, для нее нужно подготовить правильный .ini файл и создание этого инишника хотелось бы автоматизировать. А вот преобразование текстовой (да и любой другой) информации - это отличная задача для PowerShell. Также я предполагаю использовать API Windows Media Center из того же PowerShell.   

Итак, нужно сделать входной .ini файл для TVxb. На сайте Диван-ТВ я нашел частотный план, подобрал соответствующие каналам программы передач на tv.mail.ru и после нескольких экспериментов родился XLS файл, в котором собрана информация по каналам. После сохранения XLS файла в формат CSV мы получаем возможность обработать его в PowerShell:

	$channels = Import-MyCsv $CHANNELSFILE
	
	Function Import-MyCsv ([string] $CsvPath)
	{
	    $script:unicode_bug = [IO.Path]::GetTempFileName()
	    (gc $CsvPath) -replace '("[^"\r\n]*")?;(?![^";\r\n]*"$)', ',' > $script:unicode_bug
	    $return = Import-Csv $script:unicode_bug
	    Remove-Item $script:unicode_bug
	    $return
	}

Мне пришлось написать функцию, которая заменяет разделители ";" для используемого в России формата на ",", которые ожидает PowerShell. Также команда Import-Csv в бета версии PowerShell 2.0 выдает и принимает текст в формате ANSI, а мне нужен UTF - поэтому здесь используется Trick с перенаправлением вывода, который, по сути, перекодирует текст в ANSI.

	Function Make-TVxbIni
	{
		echo "Generating TVxb.ini..."
		$i=0
	@"
	auto=no
	htmlencoding=windows-1251
	xmltvoutput="$($XMLTVFILE)"
	mcechanneloutput="channelinfo.xml"
	xmlencoding=utf-8
	lang=ru
	days=7,+1
	
	$($channels | foreach {
		$i++
		if ($_.Url -ne '') {
	'
	[{0}]
	name={1}
	name={2}
	icon={3}
	' -f $_.Id, $_.Title, $i, $_.Icon
				if ($_.Url -match "^http") {
	'
	url={0}
	start={1}
	title={2}
	' -f $_.Url, $_.TVxbStart, $_.TVxbTitle
				} else {
	'
	start=1
	title=2
	htmlstart=
	url=http://tv.mail.ru/?date=[day=yyyy-mm-dd]&channel={0}&period=3
	' -f , [int]$_.Url
					if ($_.Descriptions -ne '') {
	'
	special=fulldescriptions
	descriptionhtmlstart=
	extractelement=from=description,to=subtitle,position=4,start=Производство:
	extractelement=from=description,to=director,position=3,start=Режиссер :,Режиссеры :
	extractelement=from=description,to=actors,position=2,start=Ведущий :,Актер :,Звезды кино :,В ролях :, Звезды тв :
	descriptionhours={0}
	' -f $_.Descriptions
					}
	'
	extractelement=from=title,to=subtitle,position=1,start=(,end=)
	'
				}
			}
	})
	"@ | Out-File -encoding UTF8 $TVXBINIFILE
	echo "Ok`n"
		
		if (($run -eq 1))
		{
			echo "Running TVxb..."
			. $TVXBPATH -NoConsole
			echo "Ok`n"
		}
	}

Также можно сгенерировать .reg файл, который подскажет вашему тюнеру на каких частотах нужно искать интересные вам каналы. В остальном формирование .ini файла банальная для PowerShell задача, особенно если использовать @" "@ Here-Strings. Полученный .ini мы можем подкорректировать, добавить какие-то совсем нестандартные источники и скопировать в папку, где его будет искать TVxb. Дальше работа за ним - собрать программу передач. На выходе мы получим xmltv.xml, с которым мы уже и будем возиться.   

Какое же это удовольствие работать с XML (да и не только с XML) в PowerShell!!! Все запросы можно отлаживать прямо в командной строке прежде чем вставить их скрипт, например:   

	PS C:\Users\serpo> $xml = [xml]""
	PS C:\Users\serpo> $xml.Load("C:\programdata\tvxb\xml\xmltv.xml")
	PS C:\Users\serpo> $xml
	
	xml                                                         tv
	---                                                           --
	version="1.0" encoding="utf-8"                  tv
	
	
	PS C:\Users\serpo> $xml.tv
	
	generator-info-name           generator-info-url          channel                               programme
	-------------------                    ------------------                 -------                                   ---------
	TVxb/1.0108                     http://www.tvxb.com/    {channel, channel, channel... {programme, programme, pro...
	
	
	PS C:\Users\serpo> $xml.tv.programme.Count
	5409
	PS C:\Users\serpo> $xml.tv.programme | where {$_.channel -eq "Discovery"} | select-object -first 3
	
	
	start     : 20080205060500 +0400
	stop      : 20080205070000 +0400
	channel   : Discovery
	title     : title
	sub-title : sub-title
	desc      : Сновит - это первый завод сжиженного природного газа в Европе, и его строительство ведется в порту Кадиз на
	             юге Испании. Оборудование в 35000 тонн представляет гигантский проект.
	
	start     : 20080205101000 +0400
	stop      : 20080205110500 +0400
	channel   : Discovery
	title     : title
	sub-title : sub-title
	desc      : Развлекательная передача, в которой научные принципы проверяются на практике. От взрыва домиков на колесах
	            до варки яиц с помощью ста мобильных телефонов.
	
	start     : 20080205110500 +0400
	stop      : 20080205120000 +0400
	channel   : Discovery
	title     : title
	sub-title : sub-title
	desc      : Разрушители мифов Джемми и Адам проверяют старые легенды и современные мифы с помощью современной науки.

Все просто и интерактивно!   

Формируем Guide.xml (Make-GuideXml) который потом будем использовать в нашем EPG сервисе. Дальше остается дело техники - упаковать файл, закриптовать и подписать. Файл готов.   

Переходим к инсталляции всего этого хозяйства.

  • TVxb установлен по умолчанию.
  • Нужно установить на компьютер IIS и дать необходимые права на папку InetPub пользователю, из под которого этого скрипт будет работать.
  • Раскладываем компоненты нашего решения по папкам в соответствии с настроенными в скрипте путями
  • Поправляем URL с которого Media Center забирает данные. В моем случае это:
    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Media Center\Service\EPG\discSvc

    http://localhost/epg/GetTVServicesMetaInfo.html

  • Читаем статью, достаем hotfix, устанавливаем патч и добавляем ключ:
    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Media Center\Service\EPG\disableUpdateDiscSvc - 1
  • Дальше в Media Center выбираем Set Up TV Signal, свой почтовый индекс (хотя можно любой) и через несколько минут и возможного рестарта Media Center программы должны загрузится
  • После этого нужно назначить программы передач на найденные каналы (надо посмотреть SDK на предмет сделать это программно)
  • Tada!   

     

Next Steps   

Помимо необходимых кодеков (ffdshow-tryouts) я посчитал целесообразным установку Media Control PlugIn, но пока руки не дошли до настройки и использования функционала J

У меня Audio настроено через SPDIF и есть проблема - Master Volume (с пульта) не влияет на громкость воспроизведения Dolby Digital на DVD. Нужно будет разобраться c настройками аудио кодеков.  

Надо разобраться с возможностью просмотра роликов с YouTube - есть программа Yougle которая вроде это может делать.

Реализовать функционал домашнего Web сервера – публикация фото и видео, управление запиью передач (и возможно другими функциями) удаленно. Это вообще-то функционал Windows Home Server, но пока мне кажется проще (интереснее!) сделать это самому, хотя скорее всего через некоторое время проще будет купить еще и полноценный сервер, чтобы он делал лампочками blinkety-blink, blinkety-blink J.

Настроить подключенную видео камеру, чтобы с дочерью и женой общаться в командировках можно было через Live Meeting, Live Messenger и Office Communicator. Ради смеха можно сделать для камеры моторизированную площадку из конструктора Lego MindStorm которая будет управляться через Web и Bluetooth J

Ах да! Забрать скрипт можно здесь :)    

Comments
  • Супер пост!

    У меня так руки и не дошли скрипт доделать, даже снегопад не в помощь был. Куча TAP программы и активных багов в premier support не дают ни минуты покоя :)

    Кстати, насколько я понял по форумам, IIS в явном виде нет необходимости ставить, можно URI и в виде "file://" прописать.

  • Можно и без IIS. Но мне он так или иначе понадобится.

  • Немного оффтоп, но может кто подскажет.

    Я заметил, что под Vista Media Center у меня тормозят фильмы (особенно если кодек ffdshow). Использую кодек DivX, стало лучше. Что странно, если запустить фильм напрямую из Media Player, то тормозов не наблюдаю. Может кто знает причину, а то юзать VMC без напряга невозможно

  • 2 Andy73

    Vista 64х битная?

    В случае 64х битной висты нельзя сравнивать Media Center и WMP, ибо Media Center 64х битное приложение, а WMP 32х битное :)

  • Кстати, Сергей, а телевизор поменять?

    Не солидно он уже как то смотрится в этой компании :)

  • Об этом в следующих постах ;)

  • 2 ekazakov

    Vista x32, Конфигурация компа похожа на приведенную (мать чуть отличается ну и проц Е4400). Почему сравниваю с mplayer, так ehshell (оболочка VMC?), вроде использует его. Тормоза появляются если VMC в полноэкранном режиме. Пики загрузки процессора. Только что обновил ffdshow, тормоза жуть. Тоже купил пульт и клаву Microsoftа для Media Center подключил ЖК панель вторым монитором, а тут засада. Поставил SP1 все равно тормозит

  • 2 Andy 73

    Карта тоже Nvidia 8800?

    Дрова последние? VMC сразу на ЖК моник как на второй монитор настроил так сказать?

    А если на одном мониторе все, и mplayer тоже fullscreen - не тормозит, а VMC тормозит?

  • Как и обещал , пишу о дальнейшей настройке Media Center. С приходом цифрового вещания DVB-T,...

  • Я может быть эмоционален выше среднего, но как бы то ни было… Вожусь с Windows 7 третий день – и положительные

Your comment has been posted.   Close
Thank you, your comment requires moderation so it may take a while to appear.   Close
Leave a Comment