<?xml version="1.0" encoding="UTF-8"?>
<!-- generator="FeedCreator 1.8" -->
<?xml-stylesheet href="https://wiki.soulruins.ru/lib/exe/css.php?s=feed" type="text/css"?>
<rss version="2.0">
    <channel xmlns:g="http://base.google.com/ns/1.0">
        <title>Philip Wiki - docs:blog:2021:08</title>
        <description>Персональный wiki-сайт</description>
        <link>https://wiki.soulruins.ru/</link>
        <lastBuildDate>Fri, 17 Apr 2026 19:44:58 +0000</lastBuildDate>
        <generator>FeedCreator 1.8</generator>
        <image>
            <url>https://wiki.soulruins.ru/_media/wiki/dokuwiki.svg</url>
            <title>Philip Wiki</title>
            <link>https://wiki.soulruins.ru/</link>
        </image>
        <item>
            <title>Исправление Plex-библиотеки</title>
            <link>https://wiki.soulruins.ru/docs/blog/2021/08/plex-library?rev=1760778554&amp;do=diff</link>
            <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;ispravlenie_plex-biblioteki&quot;&gt;Исправление Plex-библиотеки&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Точнее проверка вашей библиотеки с фильмами на предмет пропущенных сканером файлов. Собственно остро вопрос с этим встал после того, как я решил окончательно отказаться от &lt;a href=&quot;https://github.com/amirotin/Kinopoisk.bundle&quot; class=&quot;urlextern&quot; target=&quot;_blank&quot; title=&quot;https://github.com/amirotin/Kinopoisk.bundle&quot; rel=&quot;ugc nofollow noopener&quot;&gt;неофициального агента Кинопоиска&lt;/a&gt; в пользу официального и &lt;a href=&quot;https://support.plex.tv/articles/upgrading-a-movie-library-to-the-use-the-new-plex-movie-agent/&quot; class=&quot;urlextern&quot; target=&quot;_blank&quot; title=&quot;https://support.plex.tv/articles/upgrading-a-movie-library-to-the-use-the-new-plex-movie-agent/&quot; rel=&quot;ugc nofollow noopener&quot;&gt;нового агента Plex&lt;/a&gt;. Новый агент как-то жестко игнорировал некоторые файлы, а искать каждый и сверять показалось неинтересным.
&lt;/p&gt;

&lt;/div&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0418\u0441\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 Plex-\u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;ispravlenie_plex-biblioteki&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;1-881&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit2&quot; id=&quot;trebovanija&quot;&gt;Требования&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;
&lt;ol&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Собственно Plex&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://github.com/PowerShell/PowerShell&quot; class=&quot;urlextern&quot; target=&quot;_blank&quot; title=&quot;https://github.com/PowerShell/PowerShell&quot; rel=&quot;ugc nofollow noopener&quot;&gt;PowerShell&lt;/a&gt; (Важно! Это не Windows PowerShell, а его Core-версия. Консоль у него тоже отдельная!)&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://support.plex.tv/articles/204059436-finding-an-authentication-token-x-plex-token/&quot; class=&quot;urlextern&quot; target=&quot;_blank&quot; title=&quot;https://support.plex.tv/articles/204059436-finding-an-authentication-token-x-plex-token/&quot; rel=&quot;ugc nofollow noopener&quot;&gt;Plex Token&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0422\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u044f&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;trebovanija&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;882-1245&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit3&quot; id=&quot;dejstvuem&quot;&gt;Действуем&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Открываем консоль &lt;abbr title=&quot;Windows PowerShell — расширяемое средство автоматизации от Microsoft, состоящее из оболочки с интерфейсом командной строки и сопутствующего языка сценариев. Впервые публично язык был продемонстрирован на Профессиональной конференции разработчиков (англ. Professional Developers Conference, PDC) в сентябре 2003 года под кодовым названием Monad.&quot;&gt;Powershell&lt;/abbr&gt; &lt;code&gt;pwsh.exe&lt;/code&gt; и переходим в каталог с фильмами. Например:
&lt;/p&gt;
&lt;pre class=&quot;code powershell&quot;&gt;&lt;span class=&quot;kw2&quot;&gt;cd&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;D:\Films&amp;quot;&lt;/span&gt;&lt;/pre&gt;

&lt;p&gt;
Теперь нам надо получить имена всех видео-файлов:
&lt;/p&gt;
&lt;pre class=&quot;code powershell&quot;&gt;&lt;span class=&quot;re0&quot;&gt;$files&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;Get-ChildItem&lt;/span&gt; &lt;span class=&quot;kw5&quot;&gt;-Recurse&lt;/span&gt; &lt;span class=&quot;kw5&quot;&gt;-Include&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;*&lt;/span&gt;.mkv&lt;span class=&quot;sy0&quot;&gt;,*&lt;/span&gt;avi&lt;span class=&quot;sy0&quot;&gt;,*&lt;/span&gt;.mp4 &lt;span class=&quot;sy0&quot;&gt;|&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;select&lt;/span&gt; &lt;span class=&quot;kw5&quot;&gt;-ExpandProperty&lt;/span&gt; name&lt;/pre&gt;

&lt;p&gt;
Ну а теперь самое интересное - получение данных от Plex:
&lt;/p&gt;

&lt;p&gt;
&lt;div class=&quot;mikiop mikiop-alert  mikiop-type-info&quot; role=&quot;alert&quot;&gt;&lt;div class=&quot;mikiop mikiop-alert-icon&quot;&gt;&lt;i class=&quot;fa fa-info-circle&quot;&gt;&lt;/i&gt;&lt;/div&gt;&lt;div class=&quot;mikiop mikiop-alert-content&quot;&gt;&lt;code&gt;librarySectionID&lt;/code&gt; можно узнать в том же XML-файле, что и Plex Token (&lt;code&gt;librarySectionID&lt;/code&gt; содержится в теле файла и у каждой категории свой)&lt;/div&gt;&lt;/div&gt;
&lt;/p&gt;
&lt;pre class=&quot;code powershell&quot;&gt;&lt;span class=&quot;re0&quot;&gt;$token&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&#039;?X-Plex-Token=&amp;lt;ваш_ключ&amp;gt;&#039;&lt;/span&gt; &lt;span class=&quot;co1&quot;&gt;# меняем &amp;lt;ваш_ключ&amp;gt;&lt;/span&gt;
&lt;span class=&quot;re0&quot;&gt;$url&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&#039;https://&amp;lt;ваш_локальный_ip_plex&amp;gt;:32400&#039;&lt;/span&gt; &lt;span class=&quot;co1&quot;&gt;# меняем &amp;lt;ваш_локальный_ip_plex&amp;gt;&lt;/span&gt;
&lt;span class=&quot;re0&quot;&gt;$librarySectionID&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&#039;&amp;lt;ваш_id_категории&amp;gt;&#039;&lt;/span&gt; &lt;span class=&quot;co1&quot;&gt;# меняем &amp;lt;ваш_id_категории&amp;gt;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;re3&quot;&gt;xml&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$Library&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;Invoke&lt;span class=&quot;sy0&quot;&gt;-&lt;/span&gt;WebRequest &lt;span class=&quot;sy0&quot;&gt;-&lt;/span&gt;Uri &lt;span class=&quot;st0&quot;&gt;&amp;quot;$url/library/sections/$librarySectionID/all$Token&amp;quot;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;-&lt;/span&gt;SkipCertificateCheck&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;.Content&lt;/pre&gt;

&lt;p&gt;
Теперь, когда у нас есть выгрузка данных из определенной категории библиотеки мы, например, можем посмотреть соответствие названия фильма и файла:
&lt;/p&gt;
&lt;pre class=&quot;code powershell&quot;&gt;&lt;span class=&quot;re0&quot;&gt;$Library&lt;/span&gt;.MediaContainer.Video &lt;span class=&quot;sy0&quot;&gt;|&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;Select-Object&lt;/span&gt; &lt;span class=&quot;kw5&quot;&gt;-Property&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;title&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,@&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;Name&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;File&amp;quot;&lt;/span&gt;;Expression&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;&lt;a target=&quot;_blank&quot; href=&quot;about:blank&quot;&gt;&lt;span class=&quot;kw6&quot;&gt;$_&lt;/span&gt;&lt;/a&gt;.Media.Part.File&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;/pre&gt;

&lt;p&gt;
Ну а теперь попробуем найти все файлы, которые отсутствуют в библиотеке:
&lt;/p&gt;
&lt;pre class=&quot;code powershell&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;foreach&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$file&lt;/span&gt; &lt;span class=&quot;kw3&quot;&gt;in&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$files&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
    &lt;span class=&quot;co1&quot;&gt;# экранируем спецсимволы&lt;/span&gt;
    &lt;span class=&quot;re0&quot;&gt;$tmp&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$file&lt;/span&gt; &lt;span class=&quot;kw4&quot;&gt;-replace&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&#039;\[&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&#039;\[&#039;&lt;/span&gt; &lt;span class=&quot;kw4&quot;&gt;-replace&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&#039;\]&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&#039;\]&#039;&lt;/span&gt; &lt;span class=&quot;kw4&quot;&gt;-replace&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&#039;\?&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&#039;\?&#039;&lt;/span&gt; &lt;span class=&quot;kw4&quot;&gt;-replace&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&#039;\(&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&#039;\(&#039;&lt;/span&gt; &lt;span class=&quot;kw4&quot;&gt;-replace&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&#039;\)&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&#039;\)&#039;&lt;/span&gt;
    &lt;span class=&quot;re0&quot;&gt;$find&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$Library&lt;/span&gt;.MediaContainer.Video &lt;span class=&quot;sy0&quot;&gt;|&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;Where-Object&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;&lt;a target=&quot;_blank&quot; href=&quot;about:blank&quot;&gt;&lt;span class=&quot;kw6&quot;&gt;$_&lt;/span&gt;&lt;/a&gt;.Media.Part.file &lt;span class=&quot;kw4&quot;&gt;-match&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$tmp&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
    &lt;span class=&quot;kw3&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;!&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$find&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
        &lt;span class=&quot;co1&quot;&gt;# если файл не найден, показать его имя&lt;/span&gt;
        &lt;span class=&quot;re0&quot;&gt;$file&lt;/span&gt;
    &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;/pre&gt;

&lt;p&gt;
При желании из всего этого можно сделать регулярную задачу или прикрутить скрипт к боту.
&lt;/p&gt;

&lt;p&gt;
&lt;span class=&quot;userlabel color-green has-dot&quot;&gt;Новое&lt;/span&gt; Нашел &lt;a href=&quot;https://www.plexopedia.com/plex-media-server/api/library&quot; class=&quot;urlextern&quot; target=&quot;_blank&quot; title=&quot;https://www.plexopedia.com/plex-media-server/api/library&quot; rel=&quot;ugc nofollow noopener&quot;&gt;информацию по API-запросам к Plex&lt;/a&gt; с подробным описанием и примерами  — &lt;em&gt;&lt;a href=&quot;mailto:&amp;#115;&amp;#111;&amp;#117;&amp;#108;&amp;#114;&amp;#117;&amp;#105;&amp;#110;&amp;#115;&amp;#64;&amp;#103;&amp;#109;&amp;#97;&amp;#105;&amp;#108;&amp;#46;&amp;#99;&amp;#111;&amp;#109;&quot; class=&quot;mail&quot; title=&quot;&amp;#115;&amp;#111;&amp;#117;&amp;#108;&amp;#114;&amp;#117;&amp;#105;&amp;#110;&amp;#115;&amp;#64;&amp;#103;&amp;#109;&amp;#97;&amp;#105;&amp;#108;&amp;#46;&amp;#99;&amp;#111;&amp;#109;&quot;&gt;Philip&lt;/a&gt; 18.10.2025 12:04&lt;/em&gt;
&lt;/p&gt;


&lt;div class=&quot;tags&quot;&gt;&lt;span&gt;
	&lt;a href=&quot;https://wiki.soulruins.ru/tags/powershell?do=showtag&amp;amp;tag=powershell&quot; class=&quot;wikilink1&quot; title=&quot;tags:powershell&quot; rel=&quot;tag&quot;&gt;powershell&lt;/a&gt;,
	&lt;a href=&quot;https://wiki.soulruins.ru/tags/plex?do=showtag&amp;amp;tag=plex&quot; class=&quot;wikilink1&quot; title=&quot;tags:plex&quot; rel=&quot;tag&quot;&gt;plex&lt;/a&gt;
&lt;/span&gt;&lt;/div&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0414\u0435\u0439\u0441\u0442\u0432\u0443\u0435\u043c&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;dejstvuem&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:3,&amp;quot;range&amp;quot;:&amp;quot;1246-&amp;quot;} --&gt;</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Sat, 18 Oct 2025 09:09:14 +0000</pubDate>
        </item>
    </channel>
</rss>
