# פיד RSS לתיקיית אודיו באמצעות Tailscale Funnel המדריך מפרסם תיקיית אודיו משרת Windows כפיד RSS שאפשר להוסיף לאפליקציית פודקאסט. אין צורך לפתוח פורטים בנתב. > חשוב: Funnel מפרסם את התיקייה לאינטרנט. כל מי שמכיר את הקישור יכול להוריד את הקבצים. השתמשו רק בתיקייה ייעודית שאינה מכילה קבצים פרטיים אחרים. ## כתובת הפיד לאחר ההגדרה, כתובת הפיד היא: ```text https://desktop-ikm3jnc.tail32f32e.ts.net/rss.xml ``` הדביקו אותה באפליקציית הפודקאסט. בדקו תחילה שהכתובת נפתחת בדפדפן ומציגה XML. ## תנאים להפעלה - מחשב השרת דולק ומחובר לאינטרנט. - Tailscale מותקן ומחובר לחשבון. - Funnel פעיל ברקע. - קובצי האודיו ופיד ה-RSS נמצאים באותה תיקייה. ## הפעלה ראשונית של Funnel פתחו PowerShell כמנהל והפעילו את הפקודה הבאה. בחרו בחלון את תיקיית האודיו הייעודית: ```powershell Add-Type -AssemblyName System.Windows.Forms $picker = New-Object System.Windows.Forms.FolderBrowserDialog $picker.Description = 'בחר את תיקיית האודיו לפרסום' if ($picker.ShowDialog() -ne [System.Windows.Forms.DialogResult]::OK) { exit } $folder = $picker.SelectedPath & 'C:\Program Files\Tailscale\tailscale.exe' funnel --bg $folder ``` הפעילו פעם אחת בלבד. אפשר לראות את המצב והכתובת באמצעות: ```powershell & 'C:\Program Files\Tailscale\tailscale.exe' funnel status ``` ## עדכון הפיד לאחר הוספת קובצי אודיו לאחר שמעתיקים קובצי אודיו חדשים לתיקייה, מריצים את הסקריפט הבא. הוא מחדש את הקובץ `rss.xml`. הוא תומך ב-MP3, M4A, AAC, OGG ו-OPUS, וגם בשמות תיקיות וקבצים בעברית. ```powershell Add-Type -AssemblyName System.Windows.Forms $picker = New-Object System.Windows.Forms.FolderBrowserDialog $picker.Description = 'בחר את תיקיית האודיו' if ($picker.ShowDialog() -ne [System.Windows.Forms.DialogResult]::OK) { exit } $folder = $picker.SelectedPath $baseUrl = 'https://desktop-ikm3jnc.tail32f32e.ts.net' function Add-TextNode { param($document, $parent, [string]$name, [string]$value) $node = $document.CreateElement($name) [void]$node.AppendChild($document.CreateTextNode($value)) [void]$parent.AppendChild($node) } $xml = New-Object System.Xml.XmlDocument [void]$xml.AppendChild($xml.CreateXmlDeclaration('1.0', 'UTF-8', $null)) $rss = $xml.CreateElement('rss') $rss.SetAttribute('version', '2.0') [void]$xml.AppendChild($rss) $channel = $xml.CreateElement('channel') [void]$rss.AppendChild($channel) Add-TextNode $xml $channel 'title' 'My Audio Feed' Add-TextNode $xml $channel 'link' $baseUrl Add-TextNode $xml $channel 'description' 'Audio RSS Feed' Add-TextNode $xml $channel 'language' 'he' Get-ChildItem -LiteralPath $folder -File | Where-Object { $_.Extension.ToLower() -in '.mp3', '.m4a', '.aac', '.ogg', '.opus' } | Sort-Object LastWriteTime | ForEach-Object { $file = $_ $url = $baseUrl + '/' + [uri]::EscapeDataString($file.Name) $item = $xml.CreateElement('item') [void]$channel.AppendChild($item) Add-TextNode $xml $item 'title' $file.BaseName Add-TextNode $xml $item 'guid' $url Add-TextNode $xml $item 'pubDate' $file.LastWriteTimeUtc.ToString('r') $enclosure = $xml.CreateElement('enclosure') $enclosure.SetAttribute('url', $url) $enclosure.SetAttribute('length', [string]$file.Length) $enclosure.SetAttribute('type', 'audio/mpeg') [void]$item.AppendChild($enclosure) } $settings = New-Object System.Xml.XmlWriterSettings $settings.Encoding = New-Object System.Text.UTF8Encoding($false) $settings.Indent = $true $writer = [System.Xml.XmlWriter]::Create((Join-Path $folder 'rss.xml'), $settings) $xml.Save($writer) $writer.Close() Write-Host 'RSS updated:' Write-Host ($baseUrl + '/rss.xml') ``` ## מה עושים בכל עדכון 1. העתיקו את קובצי האודיו החדשים לתיקיית האודיו. 2. פתחו PowerShell. 3. הדביקו והריצו את סקריפט העדכון שמעל. 4. בחרו את אותה תיקייה. 5. רעננו את הפיד באפליקציית הפודקאסט, אם האפליקציה אינה עושה זאת אוטומטית. אין צורך להריץ שוב את פקודת Funnel לאחר הוספת אודיו או אתחול המחשב: היא נשמרה כרכיב רקע של Tailscale. ## הפסקת פרסום להפסקת הפרסום הציבורי, פתחו PowerShell כמנהל והריצו: ```powershell & 'C:\Program Files\Tailscale\tailscale.exe' funnel --https=443 off ```