Разбор RSS и если дата совпадает с текущей, переходите к загрузке - PullRequest
0 голосов
/ 29 марта 2020

Идея состоит в том, чтобы проверить канал RSS на <updated> </updated>, если заголовок Обновленный RSS обновлен в соответствии с датой его запуска в данный момент, а затем перейти к загрузке.

Образец канала RSS:

 <?xml version="1.0" encoding="UTF-8" ?>
<feed xmlns="http://www.w3.org/2005/Atom">
    <title type="text"> Updates</title>
    <subtitle type="html"><![CDATA[Latest  updates]]></subtitle>
    <link href="http://website/website.rss"></link>
    <id>http://website</id>
    <link rel="alternate" type="text/html" href="http://website/website.rss" ></link>
    <link rel="self" type="application/atom+xml" href="https://website/site/download" ></link>
    <logo>http://website/website</logo>
        <updated>2020-03-28 T17:32:48+00:00</updated>
        <entry>
            <author>
                <name>ueam</name>
            </author>
            <title type="text"><![CDATA[2.0.4516]]></title>
            <link rel="alternate" type="text/html" href="https://website/site/download"></link>
            <id>https://website/site/download</id>
            <summary type="html"><![CDATA[<ul>
<li>Patched for March 23rd update</li>
<li>Fixed known bug JIRA</li>
</ul>]]></summary>
            <content type="html"><![CDATA[]]></content>
            <updated>2020-03-28 17:32:48</updated>
        </entry>
        <entry>
            <author>
                <name>Team</name>
            </author>
            <title type="text"><![CDATA[2.0.4516]]></title>
            <link rel="alternate" type="text/html" href="https://website/site/download"></link>
            <id>https://website/site/download</id>
            <summary type="html"><![CDATA[<ul>
        <li>
        Patch for March 23rd update 
    </li>
    </ul>]]></summary>
            <content type="html"><![CDATA[]]></content>
            <updated>2020-03-28 17:32:48</updated>
        </entry>
        <entry>
            <author>
                <name>Team</name>
            </author>
            <title type="text"><![CDATA[2.0.4514]]></title>
            <link rel="alternate" type="text/html" href="https://website/site/download></link>
            <id>https://website/site/download</id>
            <summary type="html"><![CDATA[<ul>
<li>Fixed Bug</li>

Здесь

<updated>2020-03-28 17:32:48</updated>

, который, если бы я работал сегодня, продолжил бы загрузку, так как она соответствует текущему дню

Загрузка тогда была бы вызвана через

Invoke-WebRequest -uri https://website/site/download

Я просто не уверен, как проанализировать RSS, чтобы посмотреть на "обновленные" и сравнить с текущей датой, и, если совпадения дат, перейти к загрузке.

Обновление: я попробовал следующее

   #Grab RSS
$rssString = Invoke-WebRequest "http://website/website.rss"

# convert rss to xml
$xml = [xml] $rssString

# select the <updated> node
$updateString = $xml.SelectSingleNode("/feed/updated").innerText

# convert string to date
$date = Get-Date $updateString

# compare to todays date
if($date.Date -eq (Get-Date).Date){
  # proceed to download
}

Вы получаете эту ошибку: Get-Date: Невозможно привязать параметр 'Date' к цели. Параметр исключения «Дата»: «Невозможно преобразовать значение NULL в тип« System.DateTime ».»

При запуске

$ updatestring

ничего не происходит возвращается и пусто, кажется, что обновленный узел не читается

1 Ответ

0 голосов
/ 29 марта 2020

RSS - это xml, поэтому относитесь к нему как к такому :)

Узел <updated>, находящийся непосредственно под root <feed>, похоже, отражает последнее обновление, поэтому возьмите следующее:

# convert rss to xml
$xml = [xml]$rssString; 

# select the <updated> node
$updateString = $xml.SelectSingleNode("/feed/updated").innerText

# convert string to date
$date = Get-Date $updateString

# compare to todays date
if($date.Date -eq (Get-Date).Date){
  # proceed to download
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...