function Get-RssPost

В состав PowerShell Community Extensions входит замечательный провайдер для FeedStore.

FeedStore — это единое хранилище RSS-подписок пользователя. Появилось оно в Windows Vista, и в настоящий момент его используют Internet Explorer 7, и Outlook 2007. Ну и наверное многие читалки RSS от сторонних производителей. Имея такое открытое объединенное хранилище можно стать менее зависимым от конкретной читалки. Ну и в будущем должна появится возможность синхронизировать свои подписки через интернет на нескольких компьютерах. А возможно и уже появилась.

Благодаря PSCX подписки можно смотреть и из PowerShell — в провайдере они представляются как обычные каталоги, а посты — файлы (ну почти файлы🙂 )

poshrss

Но почему только смотреть, а не читать? Я написал простенькую функцию которая вытаскивает html содержимое из свойства .Description, слегка причесывает его, записывает во временный файл, и открывает с помощью браузера по умолчанию🙂 Вот собственно и всё.

Function Get-RssPost ($Post)
{
	if (-not $post.Description)
	{
		$Post = Get-Item $Post
		if (-not $post.Description) {Throw "Not valid object"}
	}
	$Text="
<html>
<head>
<title> $($post.Title) </title>
</head>
<body>
$($Post.Description)
<br>
<a href=$($post.link)>Original page...</a>
</body>
</html>
"
	$TempFileName = [System.IO.Path]::GetTempFileName() -replace "tmp$","htm"
	$Text | Set-Content $TempFileName
	Invoke-Item $TempFileName
}

Функцию можно поместить прямо в профиль. В качестве аргумента она берет путь к посту в провайдере feed:\ например так:

PS C:\PowerShell> Get-RssPost "feed:\Powershell\The PowerShell Guy\60"

Если кому нибудь это будет интересно — функции явно нехватает возможности получать несколько постов по конвейеру и показывать их лентой🙂 К сожалению моих познаний в html недостаточно чтобы сделать это красиво🙂

Опубликовано в PowerShell. Комментарии к записи function Get-RssPost отключены
%d такие блоггеры, как: