Продолжая вчерашний пост про RSS.Благодаря MVP Василию Гусеву по PowerShell ,я немного подрихтовал его скрипт и адаптировал для получения RSS с античат.Его скрипт http://xaegr.wordpress.com/2009/01/19/pstwitps1/ .
Цитата:
################################################## #############################
#
# Скрипт получения записей с RSS Antichat.Сам скрипт был взят у автора и немного
# подправлен.Часть данных было выкинуто.
#
# Copyright (C) Vasily Gusev, 2009 (http://windowspowershell.ru)
#
# Requres PowerShell v2
# Usage:
#
# powershell -NoProfile -WindowStyle Hidden -File c:\rssantichat.ps1
# powershell -NoProfile -WindowStyle Hidden -Command c:\rssantichat.ps1 -Icon c:\icon.ico
#
################################################## ############################
#Устанавливаем свойства элементов управления
$t.Interval = $Interval * 1000
$form.ShowInTaskbar = $False
$form.WindowState = "minimized"
$form.Visible = $false
$ni.Icon = New-object System.Drawing.Icon($Icon)
$ni.ContextMenu = $niMenu
#Создаем элементы меню - Exit
$miExit = new-object System.Windows.Forms.MenuItem
$miExit.Text = "Exit" #Текст меню
$miExit.Add_Click({ #Действие выполняемое при щелчке на элементе
$ni.Visible = $False
$form.close() #При закрытии этой формы, выполнение нашего сценария завершиться
})
#При выборе этого пункта будет вызвана функция Check (см. ниже)
$miCheck = new-object System.Windows.Forms.MenuItem
$miCheck.Text = "Check now!"
$miCheck.Add_Click({Check})
#Добавляем элементы в меню
$niMenu.MenuItems.AddRange(@($miList,$miCheck,$miE xit))
#Привязываем к двойному щелчку на значке в области уведомлений вызов функции List
$ni.add_DoubleClick({Check;List})
Function Check
{
write-host "Checking feed $(get-date)"
#Загружаем ленту, и сразу преобразоываем её в xml
$client = New-Object System.Net.WebClient
$url = "http://forum.antichat.ru/news.rss"
$global:timeline = [xml]([System.Text.Encoding]::GetEncoding('windows-1251').GetString([Byte[]]$client.DownloadData($url)))
Write-host "Done $(get-date)"
}
Function List
{
#Создаем элементы
$formList = New-Object system.windows.forms.form
$list = New-Object system.windows.forms.listview
#Задаём их свойства
$formList.controls.add($list)
$formList.width = 700
$formList.height = 350
$formList.Text = "Rss Antichat"
$list.dock="fill"
$List.View = "Details"
$List.MultiSelect = $false
$List.FullRowSelect = $True
$List.Columns.Add("Title").width = 300
$List.Columns.Add("Link").width = 200
$List.Columns.Add("Date").width = 100
$List.Columns.Add("Creator").width = 70
#Добавляем записи
$global:timeline.rss.channel.item |
foreach {
$I = $List.Items.Add($_.title)
$I.SubItems.Add($_.link) | Out-Null
$I.SubItems.Add($([System.Datetime]::Parse($_.date).tostring())) | Out-Null
$I.SubItems.Add($_.Creator) | Out-Null
}
#Указываем что делать при двойном щелчке на списке
$List.Add_DoubleClick({
if($List.SelectedItems.Count -ge 1)
{
Write-Host ($list.SelectedItems[0].subitems[1].text)
#Открываем Internet Explorer и передаем url выбранного элемента как аргумент
& "$env:ProgramFiles\Internet Explorer\iexplore.exe" $list.SelectedItems[0].subitems[1].text
}
})
#Показываем форму
$formList.ShowDialog()
}
#Указываем что при каждом тике таймера, вызывать функцию Check
$t.add_tick({Check})
#Включаем таймер
$t.start()
#Показываем значок в области уведомлений
$NI.Visible = $True
#"Показываем" невидимую форму (когда она закроется - сценарий завершиться)
$form.showdialog()