add media api
This commit is contained in:
parent
53c94bbeff
commit
d2fb6b4fed
2 changed files with 452 additions and 212 deletions
330
README.md
330
README.md
|
|
@ -9,8 +9,6 @@
|
|||
|
||||
[➡️ Веб-версия](https://lifailon.github.io/)
|
||||
|
||||
[WinForms](https://github.com/Lifailon/PS-Commands/blob/rsa/WinForms/WinForms-Test-Stend.ps1) (тестовый стенд с примерами)
|
||||
|
||||
📢 Habr: [PowerShell и его возможности](https://habr.com/ru/articles/782592/)
|
||||
|
||||
- [Help](#help)
|
||||
|
|
@ -18,7 +16,9 @@
|
|||
- [npp](#npp)
|
||||
- [Regex](#regex)
|
||||
- [DataType](#datatype)
|
||||
- [Module](#module)
|
||||
- [Bit](#bit)
|
||||
- [Cycle](#cycle)
|
||||
- [Files](#files)
|
||||
- [Credential](#credential)
|
||||
- [WinEvent](#winevent)
|
||||
|
|
@ -97,13 +97,16 @@
|
|||
- [Git](#git)
|
||||
- [DSC](#dsc)
|
||||
- [Ansible](#ansible)
|
||||
- [Win_Modules](#win_modules)
|
||||
- [GigaChat](#GigaChat)
|
||||
- [YandexGPT](#YandexGPT)
|
||||
- [SuperAGI](#superagi)
|
||||
- [Replicate](#replicate)
|
||||
- [Google-Filter](#google-filter)
|
||||
- [Google-API](#google-api)
|
||||
- [RapidAPI](#rapidapi)
|
||||
- [TMDB](#tmdb)
|
||||
- [OMDb](#omdb)
|
||||
- [ivi](#ivi)
|
||||
- [Kinopoisk](#kinopoisk)
|
||||
- [VideoCDN](#videocdn)
|
||||
|
|
@ -111,8 +114,8 @@
|
|||
- [Discord](#discord)
|
||||
- [oh-my-posh](#oh-my-posh)
|
||||
- [Pester](#pester)
|
||||
- [FFmpeg](#ffmpeg)
|
||||
- [Pandoc](#pandoc)
|
||||
- [FFmpeg](#ffmpeg)
|
||||
- [ImageMagick](#imagemagick)
|
||||
|
||||
# Help
|
||||
|
|
@ -332,12 +335,71 @@ $(foreach ($Group in $Groups) {
|
|||
$Group.Group[0]
|
||||
}) | Format-Table
|
||||
```
|
||||
### Error
|
||||
|
||||
`$Error` выводит все ошибки текущего сеанса \
|
||||
`$Error[0].InvocationInfo` развернутый отчет об ошибке \
|
||||
`$Error.clear()` \
|
||||
`$LASTEXITCODE` результат выполнения последней команды (0 - успех) \
|
||||
`exit 1` код завершения, который возвращается $LASTEXITCODE
|
||||
|
||||
### Property
|
||||
|
||||
`$srv.Count` кол-во элементов в массиве \
|
||||
`$srv.Length` содержит количество символом строки переменной [string] или количество значений (строк) объекта \
|
||||
`$srv.Chars(2)` отобразить 3-й символ в строке \
|
||||
`$srv[2]` отобразить 3-ю строку в массиве
|
||||
|
||||
### Method
|
||||
|
||||
`$srv.Insert(0,"https://")` добавить значение перед первым символом \
|
||||
`$srv.Substring(4)` удалить (из всего массива) первые 4 символа \
|
||||
`$srv.Remove(3)` удалить из всего массива все после 3 символа \
|
||||
`$string = "123"` создать строку \
|
||||
`$int = [convert]::ToInt32($string)` преобразовать строку в тип данных число \
|
||||
`[string]::Concat($text,$num)` объеденить переменные в одну строку \
|
||||
`[string]::Join(":",$text,$num)` объеденить используя разделитель \
|
||||
`[string]::Compare($text,$num,$true)` выдает 0 при совпадении или 1/-1 при несовпадении, $true (без учета регистра) или $false (с учетом регистра) \
|
||||
`[string]::Equals($text,$num)` производит сравнение двух строк и выдает $true при их совпадении или $false при несовпадении \
|
||||
`[string]::IsNullOrEmpty($text)` проверяет наличие строки, если строка пуста $true, если нет $false \
|
||||
`[string]::IsNullOrWhiteSpace($text2)` проверяет на наличие только символов пробел, табуляция или символ новой строки
|
||||
|
||||
### DateTime
|
||||
|
||||
`Get-TimeZone` часовой пояс \
|
||||
`[DateTime]::UtcNow` время в формате UTC 0 \
|
||||
`(Get-Date).AddHours(-3)` \
|
||||
`$Date = (Get-Date -Format "dd/MM/yyyy hh:mm:ss")` \
|
||||
`$Date = Get-Date -f "dd/MM/yyyy"` получаем тип данных [string] \
|
||||
`[DateTime]$gDate = Get-Date "$Date"` преобразовать в тип [DateTime] \
|
||||
`[int32]$days=($fDate-$gDate).Days` получить разницу в днях \
|
||||
`"5/7/07" -as [DateTime]` преобразовать входные данные в тип данных [DateTime] \
|
||||
`New-TimeSpan -Start $VBRRP.CreationTimeUTC -End $VBRRP.CompletionTimeUTC` получить разницу во времени
|
||||
|
||||
### Measure-Command
|
||||
|
||||
`(Measure-Command {ping ya.ru}).TotalSeconds` узнать только время выполнения \
|
||||
`(Get-History)[-1] | select @{Name="RunTime"; Expression={$_.EndExecutionTime - $_.StartExecutionTime}},ExecutionStatus,CommandLine` посчитать время работы последней [-1] (select -Last 1) выполненной команды и узнать ее статус
|
||||
|
||||
### Timer
|
||||
|
||||
`$start_time = Get-Date` зафиксировать время до выполнения команды \
|
||||
`$end_time = Get-Date` зафиксировать время по завершению \
|
||||
`$time = $end_time - $start_time` высчитать время работы скрипта \
|
||||
`$min = $time.minutes` \
|
||||
`$sec = $time.seconds` \
|
||||
`Write-Host "$min минут $sec секунд"` \
|
||||
`$timer = [System.Diagnostics.Stopwatch]::StartNew()` запустить таймер \
|
||||
`$timer.IsRunning` статус работы таймера \
|
||||
`$timer.Elapsed.TotalSeconds` отобразить время с момента запуска (в секундах) \
|
||||
`$timer.Stop()` остановить таймер
|
||||
|
||||
# npp
|
||||
|
||||
`pwsh -NoExit -ExecutionPolicy Unrestricted -WindowStyle Maximized -File "$(FULL_CURRENT_PATH)"`
|
||||
|
||||
`%AppData%\Notepad++` themes/shortcuts.xml
|
||||
```
|
||||
`%AppData%\Notepad++` themes/shortcuts.xml \
|
||||
```xml
|
||||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<NotepadPlus>
|
||||
<InternalCommands />
|
||||
|
|
@ -550,6 +612,53 @@ foreach ($p in $gp) {
|
|||
`[Char]` cимвол Юникода (16-разрядный) \
|
||||
`$char = $srv.ToCharArray()` разбить строку [string] на массив [System.Array] из букв \
|
||||
|
||||
# Module
|
||||
|
||||
### psd1
|
||||
```PowerShell
|
||||
@{
|
||||
RootModule = "Get-Function.psm1"
|
||||
ModuleVersion = "0.1"
|
||||
Author = "Lifailon"
|
||||
CompanyName = "Open Source Community"
|
||||
Copyright = "Apache-2.0"
|
||||
Description = "Function example"
|
||||
PowerShellVersion = "7.2"
|
||||
PrivateData = @{
|
||||
PSData = @{
|
||||
Tags = @("Function","Example")
|
||||
ProjectUri = "https://github.com/Lifailon/PS-Commands"
|
||||
LicenseUri = "https://github.com/Lifailon/Console-Translate/blob/rsa/LICENSE"
|
||||
ReleaseNotes = "Second release"
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
### psm1
|
||||
```PowerShell
|
||||
function Get-Function {
|
||||
<#
|
||||
.SYNOPSIS
|
||||
Описание
|
||||
.DESCRIPTION
|
||||
Описание
|
||||
.LINK
|
||||
https://github.com/Lifailon/PS-Commands
|
||||
#>
|
||||
param (
|
||||
[Parameter(Mandatory,ValueFromPipeline)][string]$Text,
|
||||
[ValidateSet("Test1","Test2")][string]$Provider = "Test1",
|
||||
[ValidateRange(1,3)][int]$Number = 2,
|
||||
[Switch]$Switch
|
||||
)
|
||||
Write-Host Param Text: $Text
|
||||
Write-Host Param Provider: $Provider
|
||||
Write-Host Param Number: $Number
|
||||
Write-Host Param Switch: $Switch
|
||||
}
|
||||
```
|
||||
`Get-Function Test`
|
||||
|
||||
### Switch
|
||||
```PowerShell
|
||||
$MMM = Get-Date -UFormat "%m"
|
||||
|
|
@ -575,6 +684,7 @@ Function fun-switch (
|
|||
) {
|
||||
If ($param) {"yes"} else {"no"}
|
||||
}
|
||||
|
||||
fun-switch -param
|
||||
```
|
||||
# Bit
|
||||
|
|
@ -687,53 +797,10 @@ function ConvertFrom-Bit {
|
|||
`(Get-Process pwsh).ProcessorAffinity = 61440` 1111000000000000 присвоить 4 последних ядра \
|
||||
`(Get-Process pwsh).ProcessorAffinity = (ConvertFrom-Bit 1111000000000000)`
|
||||
|
||||
### Property
|
||||
`$srv.Count` кол-во элементов в массиве \
|
||||
`$srv.Length` содержит количество символом строки переменной [string] или количество значений (строк) объекта \
|
||||
`$srv.Chars(2)` отобразить 3-й символ в строке \
|
||||
`$srv[2]` отобразить 3-ю строку в массиве
|
||||
|
||||
### Method
|
||||
`$srv.Insert(0,"https://")` добавить значение перед первым символом \
|
||||
`$srv.Substring(4)` удалить (из всего массива) первые 4 символа \
|
||||
`$srv.Remove(3)` удалить из всего массива все после 3 символа \
|
||||
`$string = "123"` создать строку \
|
||||
`$int = [convert]::ToInt32($string)` преобразовать строку в тип данных число \
|
||||
`[string]::Concat($text,$num)` объеденить переменные в одну строку \
|
||||
`[string]::Join(":",$text,$num)` объеденить используя разделитель \
|
||||
`[string]::Compare($text,$num,$true)` выдает 0 при совпадении или 1/-1 при несовпадении, $true (без учета регистра) или $false (с учетом регистра) \
|
||||
`[string]::Equals($text,$num)` производит сравнение двух строк и выдает $true при их совпадении или $false при несовпадении \
|
||||
`[string]::IsNullOrEmpty($text)` проверяет наличие строки, если строка пуста $true, если нет $false \
|
||||
`[string]::IsNullOrWhiteSpace($text2)` проверяет на наличие только символов пробел, табуляция или символ новой строки
|
||||
|
||||
### DateTime
|
||||
`Get-TimeZone` часовой пояс \
|
||||
`[DateTime]::UtcNow` время в формате UTC 0 \
|
||||
`(Get-Date).AddHours(-3)` \
|
||||
`$Date = (Get-Date -Format "dd/MM/yyyy hh:mm:ss")` \
|
||||
`$Date = Get-Date -f "dd/MM/yyyy"` получаем тип данных [string] \
|
||||
`[DateTime]$gDate = Get-Date "$Date"` преобразовать в тип [DateTime] \
|
||||
`[int32]$days=($fDate-$gDate).Days` получить разницу в днях \
|
||||
`"5/7/07" -as [DateTime]` преобразовать входные данные в тип данных [DateTime] \
|
||||
`New-TimeSpan -Start $VBRRP.CreationTimeUTC -End $VBRRP.CompletionTimeUTC` получить разницу во времени
|
||||
|
||||
### Measure-Command
|
||||
`(Measure-Command {ping ya.ru}).TotalSeconds` узнать только время выполнения \
|
||||
`(Get-History)[-1] | select @{Name="RunTime"; Expression={$_.EndExecutionTime - $_.StartExecutionTime}},ExecutionStatus,CommandLine` посчитать время работы последней [-1] (select -Last 1) выполненной команды и узнать ее статус
|
||||
|
||||
### Timer
|
||||
`$start_time = Get-Date` зафиксировать время до выполнения команды \
|
||||
`$end_time = Get-Date` зафиксировать время по завершению \
|
||||
`$time = $end_time - $start_time` высчитать время работы скрипта \
|
||||
`$min = $time.minutes` \
|
||||
`$sec = $time.seconds` \
|
||||
`Write-Host "$min минут $sec секунд"` \
|
||||
`$timer = [System.Diagnostics.Stopwatch]::StartNew()` запустить таймер \
|
||||
`$timer.IsRunning` статус работы таймера \
|
||||
`$timer.Elapsed.TotalSeconds` отобразить время с момента запуска (в секундах) \
|
||||
`$timer.Stop()` остановить таймер
|
||||
# Cycle
|
||||
|
||||
### Foreach
|
||||
|
||||
`$list = 100..110` создать массив из цифр от 100 до 110 \
|
||||
`foreach ($srv in $list) {ping 192.168.3.$srv -n 1 -w 50}` $srv хранит текущий элемент из $list и повторяет команду до последнего элемента в массиве \
|
||||
`$foreach.Current` текущий элемент в цикле \
|
||||
|
|
@ -741,45 +808,40 @@ function ConvertFrom-Bit {
|
|||
`$foreach.MoveNext()` переход к следующему элементу в цикле
|
||||
|
||||
### ForEach-Object (%)
|
||||
`100..110 | %{ping -n 1 -w 50 192.168.3.$_ > $null` \
|
||||
`if ($LastExitCode -eq 0) {Write-Host "192.168.3.$_" -ForegroundColor green` \
|
||||
`} else {` \
|
||||
`Write-Host "192.168.3.$_"-ForegroundColor Red}}` \
|
||||
`%` передать цикл через конвеер (ForEach-Object) \
|
||||
`$_` переменная цикла и конвеера ($PSItem) \
|
||||
`gwmi Win32_QuickFixEngineering | where {$_.InstalledOn.ToString() -match "2022"} | %{($_.HotFixID.Substring(2))}` gwmi создает массив, вывод команды передается where для поиска подходящих под критерии объектов. По конвееру передается в цикл для удаления первых (2) символов методом Substring из всех объектов HotFixID.
|
||||
|
||||
```PowerShell
|
||||
100..110 | %{ping -n 1 -w 50 192.168.3.$_ > $null
|
||||
if ($LastExitCode -eq 0) {Write-Host "192.168.3.$_" -ForegroundColor green
|
||||
} else {
|
||||
Write-Host "192.168.3.$_"-ForegroundColor Red}}
|
||||
% # передать цикл через конвеер (ForEach-Object)
|
||||
$_ # переменная цикла и конвеера ($PSItem)
|
||||
gwmi Win32_QuickFixEngineering | where {$_.InstalledOn.ToString() -match "2022"} | %{($_.HotFixID.Substring(2))} # gwmi создает массив, вывод команды передается where для поиска подходящих под критерии объектов. По конвееру передается в цикл для удаления первых (2) символов методом Substring из всех объектов HotFixID.
|
||||
```
|
||||
### While
|
||||
`$srv = "yandex.ru"` \
|
||||
`$out2 = "Есть пинг"` \
|
||||
`$out3 = "Нет пинга"` \
|
||||
`$out = $false`` предварительно сбросить переменную, While проверяет условие до запуска цикла \
|
||||
`While ($out -eq $false){`` пока условие является $true, цикл будет повторяться \
|
||||
`$out = ping -n 1 -w 50 $srv` \
|
||||
`if ($out -match "ttl") {$out = $true; $out2} else {$out = $false; $out3; sleep 1}` \
|
||||
`}`
|
||||
|
||||
`while ($True){`` запустить бесконечный цикл \
|
||||
`$result = ping yandex.ru -n 1 -w 50` \
|
||||
`if ($result -match "TTL"){`` условие, при котором будет выполнен break \
|
||||
`Write-Host "Сайт доступен"` \
|
||||
`break`` остановит цикл \
|
||||
`} else {Write-Host "Сайт недоступен"; sleep 1}` \
|
||||
`}`
|
||||
```PowerShell
|
||||
$srv = "yandex.ru"
|
||||
$out2 = "Есть пинг"
|
||||
$out3 = "Нет пинга"
|
||||
$out = $false # предварительно сбросить переменную, While проверяет условие до запуска цикла
|
||||
While ($out -eq $false){ # пока условие является $true, цикл будет повторяться
|
||||
$out = ping -n 1 -w 50 $srv
|
||||
if ($out -match "ttl") {$out = $true; $out2} else {$out = $false; $out3; sleep 1}
|
||||
}
|
||||
|
||||
while ($True){ # запустить бесконечный цикл
|
||||
$result = ping yandex.ru -n 1 -w 50
|
||||
if ($result -match "TTL"){ # условие, при котором будет выполнен break
|
||||
Write-Host "Сайт доступен"
|
||||
break # остановит цикл
|
||||
} else {Write-Host "Сайт недоступен"; sleep 1}
|
||||
}
|
||||
```
|
||||
### Try-Catch-Finally
|
||||
```PowerShell
|
||||
Try {$out = pping 192.168.3.1}
|
||||
Catch {Write-Warning "$($error[0])"} # выводит в случае ошибки (вместо ошибки)
|
||||
finally {$out = "End"} # выполняется в конце в любом случае
|
||||
```
|
||||
### Error
|
||||
`$Error` выводит все ошибки текущего сеанса \
|
||||
`$Error[0].InvocationInfo` развернутый отчет об ошибке \
|
||||
`$Error.clear()` \
|
||||
`$LASTEXITCODE` результат выполнения последней команды (0 - успех) \
|
||||
`exit 1` код завершения, который возвращается $LASTEXITCODE
|
||||
|
||||
# Files
|
||||
|
||||
`$file = [System.IO.File]::Create("$home\desktop\test.txt")` создать файл \
|
||||
|
|
@ -791,6 +853,7 @@ finally {$out = "End"} # выполняется в конце в любом сл
|
|||
`$file.ReadToEnd()` прочитать файл целиком
|
||||
|
||||
### Read/Write Bytes
|
||||
|
||||
`$file = [io.file]::ReadAllBytes("$home\desktop\powershell.jpg")` метод открывает двоичный файл, считывает его в массив байт и закрывает файл \
|
||||
`[io.file]::WriteAllBytes("$home\desktop\tloztotk-2.jpg",$file)` сохранить байты в файл (можно использовать для выгрузки двоичных файлов из БД)
|
||||
|
||||
|
|
@ -838,7 +901,7 @@ foreach ($l in $ls) {
|
|||
|
||||
# Credential
|
||||
|
||||
`$Cred = Get-Credential` сохраняет креды в переменные $Cred.Username и $Cred.Password \
|
||||
`$Cred = Get-Credential` сохраняет креды в переменные `$Cred.Username` и `$Cred.Password` \
|
||||
`$Cred.GetNetworkCredential().password` извлечь пароль \
|
||||
`cmdkey /generic:"TERMSRV/$srv" /user:"$username" /pass:"$password"` добавить указанные креды аудентификации на на терминальный сервер для подключения без пароля \
|
||||
`mstsc /admin /v:$srv` авторизоваться \
|
||||
|
|
@ -4975,10 +5038,11 @@ Security: \
|
|||
`Get-Service SNMP | Restart-Service`
|
||||
|
||||
### snmpwalk
|
||||
|
||||
`snmpwalk -v 2c -c public 192.168.3.100` \
|
||||
`snmpwalk -v 2c -c public -O e 192.168.3.100`
|
||||
|
||||
### Modules
|
||||
### SNMP Modules
|
||||
|
||||
`Install-Module -Name SNMP` \
|
||||
`Get-SnmpData -IP 192.168.3.100 -OID 1.3.6.1.2.1.1.4.0 -UDPport 161 -Community public` \
|
||||
|
|
@ -6074,7 +6138,7 @@ ansible_shell_type=powershell
|
|||
```
|
||||
`ansible-inventory --list` проверить конфигурацию (читает в формате JSON) или YAML (-y) с просмотром все применяемых переменных
|
||||
|
||||
# Modules
|
||||
# Win_Modules
|
||||
|
||||
`ansible us -m ping` \
|
||||
`ansible win_ssh -m ping` \
|
||||
|
|
@ -6742,6 +6806,23 @@ while ($response.status -ne "succeeded") {
|
|||
}
|
||||
$response.output
|
||||
```
|
||||
# Google-Filter
|
||||
|
||||
`https://www.google.com/search?q=the+rookie+2018+imdb` формат url-запроса поиска с пробелами \
|
||||
`https://www.google.com/search?q=the+rookie+2018+site:imdb.com` поиск по сайту \
|
||||
`https://www.google.com/search?q=the+rookie+intitle:index.of+"last modified"+(mkv|avi)` искать страницы, на которых указано "last modified" (последние изменения), заголовок страницы через расширенный оператор поиска (все перечисленные слова должны встречаться в заголовке) содержит слово "index.of" (указывает на директорию на веб-сервере, которая содержит список файлов) и искать файлы с расширениями .mkv или (|) .avi \
|
||||
`https://www.google.com/search?q=the+rookie+2018+filetype:torrent` \
|
||||
`инструкция gopro hero 11 filetype:pdf` искать сразу документ (на странице .pdf или загрузка) \
|
||||
`"действия/глаголы, утвержденные для использования в командлетах"` искать по фразе целиком, без разбиения на отдельные слова \
|
||||
`"ягуар скорость -животное -xe -xj"` узнаем скорость Ягуара, исключаем животное и модели автомобиля \
|
||||
`"intitle:лучшие фильмы 2023"` запрос ищет страницы, заголовки (title HTML документа) которых содержат слова "лучшие", "фильмы" и "2023" (все слова должны быть в заголовке) \
|
||||
`"allintitle:лучшие фильмы 2023"` запрос ищет страницы, заголовки (title HTML документа) которых содержат слова "лучшие", "фильмы" или "2023" (одно из) \
|
||||
`"intext:telegram бот powershell"` поиск страниц, содержащих указанное ключевое слово в тексте страницы (а не только в заголовке) \
|
||||
`"inurl:lifailon"` поиск страниц, в URL которых содержится указанное ключевое слово \
|
||||
`intitle:index.of "game of thrones" mkv daterange:2010..2015` фильтрация по дате изменения, оператор позволяет задать диапазон дат в формате YYYYMMDD..YYYYMMDD \
|
||||
`intitle:index.of "game of thrones" mkv after:2015` ограничить результаты поиска файлов, измененных до (before) или после (after) указанной даты \
|
||||
`intitle:index.of "game of thrones" mkv from:2010 to:2015` фильтрация по диапазону дат
|
||||
|
||||
# Google-API
|
||||
|
||||
### Google-Translate
|
||||
|
|
@ -6834,6 +6915,20 @@ $(Invoke-RestMethod -Uri $url -Method Get) # список сезонов (.seaso
|
|||
(Invoke-RestMethod -Uri "https://api.themoviedb.org/3/tv/$id/season/2?api_key=$Token" -Method Get).episodes # вывести 2 сезон
|
||||
Invoke-RestMethod -Uri "https://api.themoviedb.org/3/tv/$id/season/2/episode/8?api_key=$Token" -Method Get # вывести 8 эпизод
|
||||
```
|
||||
# OMDb
|
||||
|
||||
Получение API ключа по [email](https://www.omdbapi.com)
|
||||
|
||||
`$API_KEY = "XXXXXXXX"` \
|
||||
`$IMDb_ID = "tt7587890"` \
|
||||
`curl -s "https://omdbapi.com/?apikey=$($API_KEY)&i=$($IMDb_ID)" | jq .` \
|
||||
`curl -s "https://omdbapi.com/?apikey=$($API_KEY)&i=$($IMDb_ID)" | ConvertFrom-Json` \
|
||||
`Invoke-RestMethod "https://omdbapi.com/?apikey=$($API_KEY)&s=The Rookie"` \
|
||||
`Invoke-RestMethod "https://omdbapi.com/?apikey=$($API_KEY)&t=The Rookie"` поиск по Title \
|
||||
`Invoke-RestMethod "https://omdbapi.com/?apikey=$($API_KEY)&t=The Rookie&y=1990"` поиск по Title и году выхода \
|
||||
`Invoke-RestMethod "https://omdbapi.com/?apikey=$($API_KEY)&t=The Rookie&type=movie"` поиск только фильма (movie) или сериала (series) \
|
||||
`$(Invoke-RestMethod "https://omdbapi.com/?apikey=$($API_KEY)&s=The Rookie").Search` поиск всех совпадений (фильмы и сериалы)
|
||||
|
||||
# ivi
|
||||
|
||||
[ivi api doc](https://ask.ivi.ru/knowledge-bases/10/articles/51697-dokumentatsiya-dlya-api-ivi)
|
||||
|
|
@ -6853,7 +6948,7 @@ Invoke-RestMethod -Uri "https://api.themoviedb.org/3/tv/$id/season/2/episode/8?a
|
|||
```Bash
|
||||
id=5106881
|
||||
get=$(curl -s https://www.kinopoisk.ru/film/$id/episodes/)
|
||||
printf "%s\n" "${get[@]}" | grep -A 1 "Сезон 2" | grep "эпизодов" | sed -r "s/^.+\: //" # количество эпиздовод во втором сезоне (8)
|
||||
printf "%s\n" "${get[@]}" | grep -A 1 "Сезон 2" | grep "эпизодов" | sed -r "s/^.+\: //" # количество эпиздовод во втором сезоне
|
||||
```
|
||||
### kinopoisk.dev
|
||||
|
||||
|
|
@ -6943,6 +7038,31 @@ percent-decode() {
|
|||
}
|
||||
percent-decode "%D0%B7%D0%B8%D0%BC%D0%BE%D1%80%D0%BE%D0%B4%D0%BE%D0%BA"
|
||||
```
|
||||
### KinopoiskApiUnofficial
|
||||
|
||||
Бесплатно 500 запросов в сутки. [Swagger documentation](https://kinopoiskapiunofficial.tech/documentation/api)
|
||||
```PowerShell
|
||||
API_KEY="828ec96a-f45d-4e3d-84b1-XXXXXXXXXXXX"
|
||||
$headers = @{
|
||||
"accept" = "application/json"
|
||||
"X-API-KEY" = "$API_KEY"
|
||||
}
|
||||
Invoke-RestMethod -Uri 'https://kinopoiskapiunofficial.tech/api/v2.2/films/1142153' -Headers $headers
|
||||
```
|
||||
`curl -s "https://kinopoiskapiunofficial.tech/api/v2.2/films/1142153" -H "accept: application/json" -H "X-API-KEY: $API_KEY" | jq .`
|
||||
|
||||
### Kinobox
|
||||
|
||||
`$url = "https://www.kinopoisk.ru/film/694051"` \
|
||||
`$kp_id = $url -replace ".+/"` \
|
||||
`https://kinomix.web.app/#694051` \
|
||||
`curl -s -X GET "https://kinobox.tv/api/players/main?kinopoisk=$kp_id" -H "accept: application/json"` поиск по id Кинопоиск \
|
||||
`curl -s -X GET "https://kinobox.tv/api/players/main?imdb=tt2293640" -H "accept: application/json"` поиск по id IMDb \
|
||||
`curl -s -X GET "https://kinobox.tv/api/players/main?title=minions" -H "accept: application/json"` поиск основных плееров по названию \
|
||||
`curl -s -X GET "https://kinobox.tv/api/players/all?title=minions" -H "accept: application/json"` поиск всех плееров \
|
||||
`curl -s -X GET "https://kinobox.tv/api/popular/films" -H "accept: application/json"` популярные фильмы \
|
||||
`curl -s -X GET "https://kinobox.tv/api/popular/series" -H "accept: application/json"` популярные сериалы
|
||||
|
||||
# VideoCDN
|
||||
|
||||
[API](https://github.com/notssh/videocdn-api) \
|
||||
|
|
@ -7277,26 +7397,6 @@ Describe "Get-RunningProcess" {
|
|||
}
|
||||
}
|
||||
```
|
||||
# FFmpeg
|
||||
```PowerShell
|
||||
$release_latest = Invoke-RestMethod "https://api.github.com/repos/BtbN/FFmpeg-Builds/releases/latest"
|
||||
$url = $($release_latest.assets | Where-Object name -match "ffmpeg-master-latest-win64-gpl.zip").browser_download_url
|
||||
Invoke-RestMethod $url -OutFile $home\Downloads\ffmpeg-master-latest-win64-gpl.zip
|
||||
Expand-Archive -Path "$home\Downloads\ffmpeg-master-latest-win64-gpl.zip" -DestinationPath "$home\Downloads\"
|
||||
Copy-Item -Path "$home\Downloads\ffmpeg-master-latest-win64-gpl\bin\ffmpeg.exe" -Destination "C:\Windows\System32\ffmpeg.exe"
|
||||
Remove-Item "$home\Downloads\ffmpeg-*" -Force -Recurse
|
||||
```
|
||||
`ffmpeg -i input.mp4 output.gif` конвертировать mp4 в gif \
|
||||
`ffmpeg -i input.mp4 -filter_complex "scale=1440:-1:flags=lanczos" output.gif` изменить разрешение на выходе \
|
||||
`ffmpeg -i input.mp4 -filter_complex "scale=1440:-1:flags=lanczos" -r 10 output.gif` изменить количество кадров в секунду на выходе \
|
||||
`ffmpeg -i input.mp4 -filter_complex "fps=5,scale=960:-1:flags=lanczos,split[s0][s1];[s0]palettegen=max_colors=32[p];[s1][p]paletteuse=dither=bayer" output.gif` сжатие за счет цветовой политры \
|
||||
`ffmpeg -i input.mp4 -ss 00:00:10 -frames:v 1 -q:v 1 output.jpg` вытащить скриншот из видео на 10 секунде \
|
||||
`ffmpeg -i input.mp4 -ss 00:00:05 -to 00:00:10 -c copy output.mp4` вытащить кусок видео \
|
||||
`ffmpeg -i "%d.jpeg" -framerate 2 -c:v libx264 -r 30 -pix_fmt yuv420p output.mp4` создать видео из фото (1.jpeg, 2.jpeg и т.д.) с framerate (частотой кадров) в создаваемом видео 2 кадра в секунду \
|
||||
`ffmpeg -i "rtsp://admin:password@192.168.3.201:554" -rtsp_transport tcp -c:v copy -c:a aac -strict experimental output.mp4` запись без перекодирования (copy) RTSP-потока с камеры видеонаблюдения (+ аудио в кодеке AAC) в файл \
|
||||
`ffmpeg -i "rtsp://admin:password@192.168.3.201:554" -rtsp_transport tcp -c:v copy -c:a aac -strict experimental -movflags +faststart+frag_keyframe+empty_moov output.mp4` переместить метаданные в начало файла, что позволяет начать воспроизведение файла в видеоплеере до его полной загрузки \
|
||||
`ffmpeg -i "rtsp://admin:password@192.168.3.201:554" -rtsp_transport tcp -frames:v 1 -c:v mjpeg output.jpg` сделать скриншот
|
||||
|
||||
# Pandoc
|
||||
```PowerShell
|
||||
$release_latest = Invoke-RestMethod "https://api.github.com/repos/jgm/pandoc/releases/latest"
|
||||
|
|
@ -7318,6 +7418,26 @@ Import-Module ImportExcel
|
|||
Import-Excel -Path srv.xlsx | Export-Csv -Path $csvFilePath -NoTypeInformation -Encoding UTF8 # конвертация Excel в csv
|
||||
pandoc -s -f csv -t markdown input.csv -o output.md # конвертация таблицу csv в markdown
|
||||
```
|
||||
# FFmpeg
|
||||
```PowerShell
|
||||
$release_latest = Invoke-RestMethod "https://api.github.com/repos/BtbN/FFmpeg-Builds/releases/latest"
|
||||
$url = $($release_latest.assets | Where-Object name -match "ffmpeg-master-latest-win64-gpl.zip").browser_download_url
|
||||
Invoke-RestMethod $url -OutFile $home\Downloads\ffmpeg-master-latest-win64-gpl.zip
|
||||
Expand-Archive -Path "$home\Downloads\ffmpeg-master-latest-win64-gpl.zip" -DestinationPath "$home\Downloads\"
|
||||
Copy-Item -Path "$home\Downloads\ffmpeg-master-latest-win64-gpl\bin\ffmpeg.exe" -Destination "C:\Windows\System32\ffmpeg.exe"
|
||||
Remove-Item "$home\Downloads\ffmpeg-*" -Force -Recurse
|
||||
```
|
||||
`ffmpeg -i input.mp4 output.gif` конвертировать mp4 в gif \
|
||||
`ffmpeg -i input.mp4 -filter_complex "scale=1440:-1:flags=lanczos" output.gif` изменить разрешение на выходе \
|
||||
`ffmpeg -i input.mp4 -filter_complex "scale=1440:-1:flags=lanczos" -r 10 output.gif` изменить количество кадров в секунду на выходе \
|
||||
`ffmpeg -i input.mp4 -filter_complex "fps=5,scale=960:-1:flags=lanczos,split[s0][s1];[s0]palettegen=max_colors=32[p];[s1][p]paletteuse=dither=bayer" output.gif` сжатие за счет цветовой политры \
|
||||
`ffmpeg -i input.mp4 -ss 00:00:10 -frames:v 1 -q:v 1 output.jpg` вытащить скриншот из видео на 10 секунде \
|
||||
`ffmpeg -i input.mp4 -ss 00:00:05 -to 00:00:10 -c copy output.mp4` вытащить кусок видео \
|
||||
`ffmpeg -i "%d.jpeg" -framerate 2 -c:v libx264 -r 30 -pix_fmt yuv420p output.mp4` создать видео из фото (1.jpeg, 2.jpeg и т.д.) с framerate (частотой кадров) в создаваемом видео 2 кадра в секунду \
|
||||
`ffmpeg -i "rtsp://admin:password@192.168.3.201:554" -rtsp_transport tcp -c:v copy -c:a aac -strict experimental output.mp4` запись без перекодирования (copy) RTSP-потока с камеры видеонаблюдения (+ аудио в кодеке AAC) в файл \
|
||||
`ffmpeg -i "rtsp://admin:password@192.168.3.201:554" -rtsp_transport tcp -c:v copy -c:a aac -strict experimental -movflags +faststart+frag_keyframe+empty_moov output.mp4` переместить метаданные в начало файла, что позволяет начать воспроизведение файла в видеоплеере до его полной загрузки \
|
||||
`ffmpeg -i "rtsp://admin:password@192.168.3.201:554" -rtsp_transport tcp -frames:v 1 -c:v mjpeg output.jpg` сделать скриншот
|
||||
|
||||
# ImageMagick
|
||||
|
||||
Source: [ImageMagick](https://sourceforge.net/projects/imagemagick)
|
||||
|
|
|
|||
278
posh.txt
278
posh.txt
|
|
@ -7,9 +7,7 @@ GitHub Repo stars: https://img.shields.io/github/stars/Lifailon/PS-Commands
|
|||
|
||||
Большая база заметок PowerShell на русском языке.
|
||||
|
||||
Веб-версия (https://lifailon.github.io/)
|
||||
|
||||
WinForms - тестовый стенд с примерами (https://github.com/Lifailon/PS-Commands/blob/rsa/WinForms/WinForms-Test-Stend.ps1)
|
||||
Веб-версия (https://lifailon.github.io)
|
||||
|
||||
Habr: PowerShell и его возможности (https://habr.com/ru/articles/782592/)
|
||||
|
||||
|
|
@ -18,7 +16,9 @@ Habr: PowerShell и его возможности (https://habr.com/ru/articles/
|
|||
# npp
|
||||
# Regex
|
||||
# DataType
|
||||
# Module
|
||||
# Bit
|
||||
# Cycle
|
||||
# Files
|
||||
# Credential
|
||||
# WinEvent
|
||||
|
|
@ -97,13 +97,16 @@ Habr: PowerShell и его возможности (https://habr.com/ru/articles/
|
|||
# Git
|
||||
# DSC
|
||||
# Ansible
|
||||
# Win_Modules
|
||||
# GigaChat
|
||||
# YandexGPT
|
||||
# SuperAGI
|
||||
# Replicate
|
||||
# Google-Filter
|
||||
# Google-API
|
||||
# RapidAPI
|
||||
# TMDB
|
||||
# OMDb
|
||||
# ivi
|
||||
# Kinopoisk
|
||||
# VideoCDN
|
||||
|
|
@ -111,8 +114,8 @@ Habr: PowerShell и его возможности (https://habr.com/ru/articles/
|
|||
# Discord
|
||||
# oh-my-posh
|
||||
# Pester
|
||||
# FFmpeg
|
||||
# Pandoc
|
||||
# FFmpeg
|
||||
# ImageMagick
|
||||
|
||||
# Help
|
||||
|
|
@ -332,6 +335,65 @@ $(foreach ($Group in $Groups) {
|
|||
$Group.Group[0]
|
||||
}) | Format-Table
|
||||
|
||||
### Error
|
||||
|
||||
$Error # выводит все ошибки текущего сеанса
|
||||
$Error[0].InvocationInfo # развернутый отчет об ошибке
|
||||
$Error.clear()
|
||||
$LASTEXITCODE # результат выполнения последней команды (0 - успех)
|
||||
exit 1 # код завершения, который возвращается $LASTEXITCODE
|
||||
|
||||
### Property
|
||||
|
||||
$srv.Count # кол-во элементов в массиве
|
||||
$srv.Length # содержит количество символом строки переменной [string] или количество значений (строк) объекта
|
||||
$srv.Chars(2) # отобразить 3-й символ в строке
|
||||
$srv[2] # отобразить 3-ю строку в массиве
|
||||
|
||||
### Method
|
||||
|
||||
$srv.Insert(0,"https://") # добавить значение перед первым символом
|
||||
$srv.Substring(4) # удалить (из всего массива) первые 4 символа
|
||||
$srv.Remove(3) # удалить из всего массива все после 3 символа
|
||||
$string = "123" # создать строку
|
||||
$int = [convert]::ToInt32($string) # преобразовать строку в тип данных число
|
||||
[string]::Concat($text,$num) # объеденить переменные в одну строку
|
||||
[string]::Join(":",$text,$num) # объеденить используя разделитель
|
||||
[string]::Compare($text,$num,$true) # выдает 0 при совпадении или 1/-1 при несовпадении, $true (без учета регистра) или $false (с учетом регистра)
|
||||
[string]::Equals($text,$num) # производит сравнение двух строк и выдает $true при их совпадении или $false при несовпадении
|
||||
[string]::IsNullOrEmpty($text) # проверяет наличие строки, если строка пуста $true, если нет $false
|
||||
[string]::IsNullOrWhiteSpace($text2) # проверяет на наличие только символов пробел, табуляция или символ новой строки
|
||||
|
||||
### DateTime
|
||||
|
||||
Get-TimeZone # часовой пояс
|
||||
[DateTime]::UtcNow # время в формате UTC 0
|
||||
(Get-Date).AddHours(-3)
|
||||
$Date = (Get-Date -Format "dd/MM/yyyy hh:mm:ss")
|
||||
$Date = Get-Date -f "dd/MM/yyyy" # получаем тип данных [string]
|
||||
[DateTime]$gDate = Get-Date "$Date" # преобразовать в тип [DateTime]
|
||||
[int32]$days=($fDate-$gDate).Days # получить разницу в днях
|
||||
"5/7/07" -as [DateTime] # преобразовать входные данные в тип данных [DateTime]
|
||||
New-TimeSpan -Start $VBRRP.CreationTimeUTC -End $VBRRP.CompletionTimeUTC # получить разницу во времени
|
||||
|
||||
### Measure-Command
|
||||
|
||||
(Measure-Command {ping ya.ru}).TotalSeconds # узнать только время выполнения
|
||||
(Get-History)[-1] | select @{Name="RunTime"; Expression={$_.EndExecutionTime - $_.StartExecutionTime}},ExecutionStatus,CommandLine # посчитать время работы последней [-1] (select -Last 1) выполненной команды и ее узнать статус
|
||||
|
||||
### Timer
|
||||
|
||||
$start_time = Get-Date # зафиксировать время до выполнения команды
|
||||
$end_time = Get-Date # зафиксировать время по завершению
|
||||
$time = $end_time - $start_time # высчитать время работы скрипта
|
||||
$min = $time.minutes
|
||||
$sec = $time.seconds
|
||||
Write-Host "$min минут $sec секунд"
|
||||
$timer = [System.Diagnostics.Stopwatch]::StartNew() # запустить таймер
|
||||
$timer.IsRunning # статус работы таймера
|
||||
$timer.Elapsed.TotalSeconds # отобразить время с момента запуска (в секундах)
|
||||
$timer.Stop() # остановить таймер
|
||||
|
||||
# npp
|
||||
|
||||
pwsh -NoExit -ExecutionPolicy Unrestricted -WindowStyle Maximized -File "$(FULL_CURRENT_PATH)"
|
||||
|
|
@ -550,6 +612,53 @@ $srv -isnot [System.Object] # проверка на несоответствие
|
|||
[Char] # cимвол Юникода (16-разрядный)
|
||||
$char = $srv.ToCharArray() # разбить строку [string] на массив [System.Array] из букв
|
||||
|
||||
# Module
|
||||
|
||||
### psd1
|
||||
|
||||
@{
|
||||
RootModule = "Get-Function.psm1"
|
||||
ModuleVersion = "0.1"
|
||||
Author = "Lifailon"
|
||||
CompanyName = "Open Source Community"
|
||||
Copyright = "Apache-2.0"
|
||||
Description = "Function example"
|
||||
PowerShellVersion = "7.2"
|
||||
PrivateData = @{
|
||||
PSData = @{
|
||||
Tags = @("Function","Example")
|
||||
ProjectUri = "https://github.com/Lifailon/PS-Commands"
|
||||
LicenseUri = "https://github.com/Lifailon/Console-Translate/blob/rsa/LICENSE"
|
||||
ReleaseNotes = "Second release"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
### psm1
|
||||
|
||||
function Get-Function {
|
||||
<#
|
||||
.SYNOPSIS
|
||||
Описание
|
||||
.DESCRIPTION
|
||||
Описание
|
||||
.LINK
|
||||
https://github.com/Lifailon/PS-Commands
|
||||
#>
|
||||
param (
|
||||
[Parameter(Mandatory,ValueFromPipeline)][string]$Text,
|
||||
[ValidateSet("Test1","Test2")][string]$Provider = "Test1",
|
||||
[ValidateRange(1,3)][int]$Number = 2,
|
||||
[Switch]$Switch
|
||||
)
|
||||
Write-Host Param Text: $Text
|
||||
Write-Host Param Provider: $Provider
|
||||
Write-Host Param Number: $Number
|
||||
Write-Host Param Switch: $Switch
|
||||
}
|
||||
|
||||
Get-Function Test
|
||||
|
||||
### Switch
|
||||
|
||||
$MMM = Get-Date -UFormat "%m"
|
||||
|
|
@ -575,6 +684,7 @@ Function fun-switch (
|
|||
) {
|
||||
If ($param) {"yes"} else {"no"}
|
||||
}
|
||||
|
||||
fun-switch -param
|
||||
|
||||
# Bit
|
||||
|
|
@ -687,53 +797,10 @@ Get-Process pwsh | fl ProcessorAffinity # привязка процесса к
|
|||
(Get-Process pwsh).ProcessorAffinity = 61440 # 1111000000000000 присвоить 4 последних ядра
|
||||
(Get-Process pwsh).ProcessorAffinity = (ConvertFrom-Bit 1111000000000000)
|
||||
|
||||
### Property
|
||||
$srv.Count # кол-во элементов в массиве
|
||||
$srv.Length # содержит количество символом строки переменной [string] или количество значений (строк) объекта
|
||||
$srv.Chars(2) # отобразить 3-й символ в строке
|
||||
$srv[2] # отобразить 3-ю строку в массиве
|
||||
|
||||
### Method
|
||||
$srv.Insert(0,"https://") # добавить значение перед первым символом
|
||||
$srv.Substring(4) # удалить (из всего массива) первые 4 символа
|
||||
$srv.Remove(3) # удалить из всего массива все после 3 символа
|
||||
$string = "123" # создать строку
|
||||
$int = [convert]::ToInt32($string) # преобразовать строку в тип данных число
|
||||
[string]::Concat($text,$num) # объеденить переменные в одну строку
|
||||
[string]::Join(":",$text,$num) # объеденить используя разделитель
|
||||
[string]::Compare($text,$num,$true) # выдает 0 при совпадении или 1/-1 при несовпадении, $true (без учета регистра) или $false (с учетом регистра)
|
||||
[string]::Equals($text,$num) # производит сравнение двух строк и выдает $true при их совпадении или $false при несовпадении
|
||||
[string]::IsNullOrEmpty($text) # проверяет наличие строки, если строка пуста $true, если нет $false
|
||||
[string]::IsNullOrWhiteSpace($text2) # проверяет на наличие только символов пробел, табуляция или символ новой строки
|
||||
|
||||
### DateTime
|
||||
Get-TimeZone # часовой пояс
|
||||
[DateTime]::UtcNow # время в формате UTC 0
|
||||
(Get-Date).AddHours(-3)
|
||||
$Date = (Get-Date -Format "dd/MM/yyyy hh:mm:ss")
|
||||
$Date = Get-Date -f "dd/MM/yyyy" # получаем тип данных [string]
|
||||
[DateTime]$gDate = Get-Date "$Date" # преобразовать в тип [DateTime]
|
||||
[int32]$days=($fDate-$gDate).Days # получить разницу в днях
|
||||
"5/7/07" -as [DateTime] # преобразовать входные данные в тип данных [DateTime]
|
||||
New-TimeSpan -Start $VBRRP.CreationTimeUTC -End $VBRRP.CompletionTimeUTC # получить разницу во времени
|
||||
|
||||
### Measure-Command
|
||||
(Measure-Command {ping ya.ru}).TotalSeconds # узнать только время выполнения
|
||||
(Get-History)[-1] | select @{Name="RunTime"; Expression={$_.EndExecutionTime - $_.StartExecutionTime}},ExecutionStatus,CommandLine # посчитать время работы последней [-1] (select -Last 1) выполненной команды и ее узнать статус
|
||||
|
||||
### Timer
|
||||
$start_time = Get-Date # зафиксировать время до выполнения команды
|
||||
$end_time = Get-Date # зафиксировать время по завершению
|
||||
$time = $end_time - $start_time # высчитать время работы скрипта
|
||||
$min = $time.minutes
|
||||
$sec = $time.seconds
|
||||
Write-Host "$min минут $sec секунд"
|
||||
$timer = [System.Diagnostics.Stopwatch]::StartNew() # запустить таймер
|
||||
$timer.IsRunning # статус работы таймера
|
||||
$timer.Elapsed.TotalSeconds # отобразить время с момента запуска (в секундах)
|
||||
$timer.Stop() # остановить таймер
|
||||
# Cycle
|
||||
|
||||
### Foreach
|
||||
|
||||
$list = 100..110 # создать массив из цифр от 100 до 110
|
||||
foreach ($srv in $list) {ping 192.168.3.$srv -n 1 -w 50} # $srv хранит текущий элемент из $list и повторяет команду до последнего элемента в массиве
|
||||
$foreach.Current # текущий элемент в цикле
|
||||
|
|
@ -741,6 +808,7 @@ $foreach.Reset() # обнуляет итерацию, перебор начне
|
|||
$foreach.MoveNext() # переход к следующему элементу в цикле
|
||||
|
||||
### ForEach-Object (%)
|
||||
|
||||
100..110 | %{ping -n 1 -w 50 192.168.3.$_ > $null
|
||||
if ($LastExitCode -eq 0) {Write-Host "192.168.3.$_" -ForegroundColor green
|
||||
} else {
|
||||
|
|
@ -750,6 +818,7 @@ $_ # переменная цикла и конвеера ($PSItem)
|
|||
gwmi Win32_QuickFixEngineering | where {$_.InstalledOn.ToString() -match "2022"} | %{($_.HotFixID.Substring(2))} # gwmi создает массив, вывод команды передается where для поиска подходящих под критерии объектов. По конвееру передается в цикл для удаления первых (2) символов методом Substring из всех объектов HotFixID.
|
||||
|
||||
### While
|
||||
|
||||
$srv = "yandex.ru"
|
||||
$out2 = "Есть пинг"
|
||||
$out3 = "Нет пинга"
|
||||
|
|
@ -773,13 +842,6 @@ Try {$out = pping 192.168.3.1}
|
|||
Catch {Write-Warning "$($error[0])"} # выводит в случае ошибки (вместо ошибки)
|
||||
finally {$out = "End"} # выполняется в конце в любом случае
|
||||
|
||||
### Error
|
||||
$Error # выводит все ошибки текущего сеанса
|
||||
$Error[0].InvocationInfo # развернутый отчет об ошибке
|
||||
$Error.clear()
|
||||
$LASTEXITCODE # результат выполнения последней команды (0 - успех)
|
||||
exit 1 # код завершения, который возвращается $LASTEXITCODE
|
||||
|
||||
# Files
|
||||
|
||||
$file = [System.IO.File]::Create("$home\desktop\test.txt") # создать файл
|
||||
|
|
@ -791,6 +853,7 @@ $file.ReadLine() # построчный вывод
|
|||
$file.ReadToEnd() # прочитать файл целиком
|
||||
|
||||
### Read/Write Bytes
|
||||
|
||||
$file = [io.file]::ReadAllBytes("$home\desktop\powershell.jpg") # метод открывает двоичный файл, считывает его в массив байт и закрывает файл
|
||||
[io.file]::WriteAllBytes("$home\desktop\tloztotk-2.jpg",$file) # сохранить байты в файл (можно использовать для выгрузки двоичных файлов из БД)
|
||||
|
||||
|
|
@ -4975,10 +5038,11 @@ New-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Services\SNMP\Parameters\
|
|||
Get-Service SNMP | Restart-Service
|
||||
|
||||
### snmpwalk
|
||||
|
||||
snmpwalk -v 2c -c public 192.168.3.100
|
||||
snmpwalk -v 2c -c public -O e 192.168.3.100
|
||||
|
||||
### Modules
|
||||
### SNMP Modules
|
||||
|
||||
Install-Module -Name SNMP
|
||||
Get-SnmpData -IP 192.168.3.100 -OID 1.3.6.1.2.1.1.4.0 -UDPport 161 -Community public
|
||||
|
|
@ -6074,7 +6138,7 @@ ansible_shell_type=powershell
|
|||
|
||||
ansible-inventory --list # проверить конфигурацию (читает в формате JSON) или YAML (-y) с просмотром все применяемых переменных
|
||||
|
||||
# Modules
|
||||
# Win_Modules
|
||||
|
||||
ansible us -m ping
|
||||
ansible win_ssh -m ping
|
||||
|
|
@ -6742,6 +6806,23 @@ while ($response.status -ne "succeeded") {
|
|||
}
|
||||
$response.output
|
||||
|
||||
# Google-Filter
|
||||
|
||||
https://www.google.com/search?q=the+rookie+2018+imdb # формат url-запроса поиска с пробелами
|
||||
https://www.google.com/search?q=the+rookie+2018+site:imdb.com # поиск по сайту
|
||||
https://www.google.com/search?q=the+rookie+intitle:index.of+"last modified"+(mkv|avi) # искать страницы, на которых указано "last modified" (последние изменения), заголовок страницы через расширенный оператор поиска (все перечисленные слова должны встречаться в заголовке) содержит слово "index.of" (указывает на директорию на веб-сервере, которая содержит список файлов) и искать файлы с расширениями .mkv или (|) .avi
|
||||
https://www.google.com/search?q=the+rookie+2018+filetype:torrent
|
||||
инструкция gopro hero 11 filetype:pdf # искать сразу документ (на странице .pdf или загрузка)
|
||||
"действия/глаголы, утвержденные для использования в командлетах" # искать по фразе целиком, без разбиения на отдельные слова
|
||||
"ягуар скорость -животное -xe -xj" # узнаем скорость Ягуара, исключаем животное и модели автомобиля
|
||||
"intitle:лучшие фильмы 2023" # запрос ищет страницы, заголовки (title HTML документа) которых содержат слова "лучшие", "фильмы" и "2023" (все слова должны быть в заголовке)
|
||||
"allintitle:лучшие фильмы 2023" # запрос ищет страницы, заголовки (title HTML документа) которых содержат слова "лучшие", "фильмы" или "2023" (одно из)
|
||||
"intext:telegram бот powershell" # поиск страниц, содержащих указанное ключевое слово в тексте страницы (а не только в заголовке)
|
||||
"inurl:lifailon" # поиск страниц, в URL которых содержится указанное ключевое слово
|
||||
intitle:index.of "game of thrones" mkv daterange:2010..2015 # фильтрация по дате изменения, оператор позволяет задать диапазон дат в формате YYYYMMDD..YYYYMMDD
|
||||
intitle:index.of "game of thrones" mkv after:2015 # ограничить результаты поиска файлов, измененных до (before) или после (after) указанной даты
|
||||
intitle:index.of "game of thrones" mkv from:2010 to:2015 # фильтрация по диапазону дат
|
||||
|
||||
# Google-API
|
||||
|
||||
### Google-Translate
|
||||
|
|
@ -6834,6 +6915,20 @@ $(Invoke-RestMethod -Uri $url -Method Get) # список сезонов (.seaso
|
|||
(Invoke-RestMethod -Uri "https://api.themoviedb.org/3/tv/$id/season/2?api_key=$Token" -Method Get).episodes # вывести 2 сезон
|
||||
Invoke-RestMethod -Uri "https://api.themoviedb.org/3/tv/$id/season/2/episode/8?api_key=$Token" -Method Get # вывести 8 эпизод
|
||||
|
||||
# OMDb
|
||||
|
||||
Получение API ключа по email (https://www.omdbapi.com)
|
||||
|
||||
$API_KEY = "XXXXXXXX"
|
||||
$IMDb_ID = "tt7587890"
|
||||
curl -s "https://omdbapi.com/?apikey=$($API_KEY)&i=$($IMDb_ID)" | jq .
|
||||
curl -s "https://omdbapi.com/?apikey=$($API_KEY)&i=$($IMDb_ID)" | ConvertFrom-Json
|
||||
Invoke-RestMethod "https://omdbapi.com/?apikey=$($API_KEY)&s=The Rookie"
|
||||
Invoke-RestMethod "https://omdbapi.com/?apikey=$($API_KEY)&t=The Rookie" # поиск по Title
|
||||
Invoke-RestMethod "https://omdbapi.com/?apikey=$($API_KEY)&t=The Rookie&y=1990" # поиск по Title и году выхода
|
||||
Invoke-RestMethod "https://omdbapi.com/?apikey=$($API_KEY)&t=The Rookie&type=movie" # поиск только фильма (movie) или сериала (series)
|
||||
$(Invoke-RestMethod "https://omdbapi.com/?apikey=$($API_KEY)&s=The Rookie").Search # поиск всех совпадений (фильмы и сериалы)
|
||||
|
||||
# ivi
|
||||
|
||||
https://ask.ivi.ru/knowledge-bases/10/articles/51697-dokumentatsiya-dlya-api-ivi
|
||||
|
|
@ -6853,7 +6948,7 @@ id=$(curl -s https://api.ivi.ru/mobileapi/search/v7/?query=zimorodok | jq .resul
|
|||
|
||||
id=5106881
|
||||
get=$(curl -s https://www.kinopoisk.ru/film/$id/episodes/)
|
||||
printf "%s\n" "${get[@]}" | grep -A 1 "Сезон 2" | grep "эпизодов" | sed -r "s/^.+\: //" # количество эпиздовод во втором сезоне (8)
|
||||
printf "%s\n" "${get[@]}" | grep -A 1 "Сезон 2" | grep "эпизодов" | sed -r "s/^.+\: //" # количество эпиздовод во втором сезоне
|
||||
|
||||
### kinopoisk.dev
|
||||
|
||||
|
|
@ -6943,6 +7038,31 @@ percent-decode() {
|
|||
}
|
||||
percent-decode "%D0%B7%D0%B8%D0%BC%D0%BE%D1%80%D0%BE%D0%B4%D0%BE%D0%BA"
|
||||
|
||||
### KinopoiskApiUnofficial
|
||||
|
||||
Бесплатно 500 запросов в сутки. Swagger documentation (https://kinopoiskapiunofficial.tech/documentation/api)
|
||||
|
||||
API_KEY="828ec96a-f45d-4e3d-84b1-XXXXXXXXXXXX"
|
||||
$headers = @{
|
||||
"accept" = "application/json"
|
||||
"X-API-KEY" = "$API_KEY"
|
||||
}
|
||||
Invoke-RestMethod -Uri 'https://kinopoiskapiunofficial.tech/api/v2.2/films/1142153' -Headers $headers
|
||||
|
||||
curl -s "https://kinopoiskapiunofficial.tech/api/v2.2/films/1142153" -H "accept: application/json" -H "X-API-KEY: $API_KEY" | jq .
|
||||
|
||||
### Kinobox
|
||||
|
||||
$url = "https://www.kinopoisk.ru/film/694051"
|
||||
$kp_id = $url -replace ".+/"
|
||||
https://kinomix.web.app/#694051
|
||||
curl -s -X GET "https://kinobox.tv/api/players/main?kinopoisk=$kp_id" -H "accept: application/json" # поиск по id Кинопоиск
|
||||
curl -s -X GET "https://kinobox.tv/api/players/main?imdb=tt2293640" -H "accept: application/json" # поиск по id IMDb
|
||||
curl -s -X GET "https://kinobox.tv/api/players/main?title=minions" -H "accept: application/json" # поиск основных плееров по названию
|
||||
curl -s -X GET "https://kinobox.tv/api/players/all?title=minions" -H "accept: application/json" # поиск всех плееров
|
||||
curl -s -X GET "https://kinobox.tv/api/popular/films" -H "accept: application/json" # популярные фильмы
|
||||
curl -s -X GET "https://kinobox.tv/api/popular/series" -H "accept: application/json" # популярные сериалы
|
||||
|
||||
# VideoCDN
|
||||
|
||||
https://github.com/notssh/videocdn-api
|
||||
|
|
@ -7277,26 +7397,6 @@ Describe "Get-RunningProcess" {
|
|||
}
|
||||
}
|
||||
|
||||
# FFmpeg
|
||||
|
||||
$release_latest = Invoke-RestMethod "https://api.github.com/repos/BtbN/FFmpeg-Builds/releases/latest"
|
||||
$url = $($release_latest.assets | Where-Object name -match "ffmpeg-master-latest-win64-gpl.zip").browser_download_url
|
||||
Invoke-RestMethod $url -OutFile $home\Downloads\ffmpeg-master-latest-win64-gpl.zip
|
||||
Expand-Archive -Path "$home\Downloads\ffmpeg-master-latest-win64-gpl.zip" -DestinationPath "$home\Downloads\"
|
||||
Copy-Item -Path "$home\Downloads\ffmpeg-master-latest-win64-gpl\bin\ffmpeg.exe" -Destination "C:\Windows\System32\ffmpeg.exe"
|
||||
Remove-Item "$home\Downloads\ffmpeg-*" -Force -Recurse
|
||||
|
||||
ffmpeg -i input.mp4 output.gif # конвертировать mp4 в gif
|
||||
ffmpeg -i input.mp4 -filter_complex "scale=1440:-1:flags=lanczos" output.gif # изменить разрешение на выходе
|
||||
ffmpeg -i input.mp4 -filter_complex "scale=1440:-1:flags=lanczos" -r 10 output.gif # изменить количество кадров в секунду на выходе
|
||||
ffmpeg -i input.mp4 -filter_complex "fps=5,scale=960:-1:flags=lanczos,split[s0][s1];[s0]palettegen=max_colors=32[p];[s1][p]paletteuse=dither=bayer" output.gif # сжатие за счет цветовой политры
|
||||
ffmpeg -i input.mp4 -ss 00:00:10 -frames:v 1 -q:v 1 output.jpg # вытащить скриншот из видео на 10 секунде
|
||||
ffmpeg -i input.mp4 -ss 00:00:05 -to 00:00:10 -c copy output.mp4 # вытащить кусок видео
|
||||
ffmpeg -i "%d.jpeg" -framerate 2 -c:v libx264 -r 30 -pix_fmt yuv420p output.mp4 # создать видео из фото (1.jpeg, 2.jpeg и т.д.) с framerate (частотой кадров) в создаваемом видео 2 кадра в секунду
|
||||
ffmpeg -i "rtsp://admin:password@192.168.3.201:554" -rtsp_transport tcp -c:v copy -c:a aac -strict experimental output.mp4 # запись без перекодирования (copy) RTSP-потока с камеры видеонаблюдения (+ аудио в кодеке AAC) в файл
|
||||
ffmpeg -i "rtsp://admin:password@192.168.3.201:554" -rtsp_transport tcp -c:v copy -c:a aac -strict experimental -movflags +faststart+frag_keyframe+empty_moov output.mp4 # переместить метаданные в начало файла, что позволяет начать воспроизведение файла в видеоплеере до его полной загрузки
|
||||
ffmpeg -i "rtsp://admin:password@192.168.3.201:554" -rtsp_transport tcp -frames:v 1 -c:v mjpeg output.jpg # сделать скриншот
|
||||
|
||||
# Pandoc
|
||||
|
||||
$release_latest = Invoke-RestMethod "https://api.github.com/repos/jgm/pandoc/releases/latest"
|
||||
|
|
@ -7318,6 +7418,26 @@ Import-Module ImportExcel
|
|||
Import-Excel -Path srv.xlsx | Export-Csv -Path $csvFilePath -NoTypeInformation -Encoding UTF8 # конвертация Excel в csv
|
||||
pandoc -s -f csv -t markdown input.csv -o output.md # конвертация таблицу csv в markdown
|
||||
|
||||
# FFmpeg
|
||||
|
||||
$release_latest = Invoke-RestMethod "https://api.github.com/repos/BtbN/FFmpeg-Builds/releases/latest"
|
||||
$url = $($release_latest.assets | Where-Object name -match "ffmpeg-master-latest-win64-gpl.zip").browser_download_url
|
||||
Invoke-RestMethod $url -OutFile $home\Downloads\ffmpeg-master-latest-win64-gpl.zip
|
||||
Expand-Archive -Path "$home\Downloads\ffmpeg-master-latest-win64-gpl.zip" -DestinationPath "$home\Downloads\"
|
||||
Copy-Item -Path "$home\Downloads\ffmpeg-master-latest-win64-gpl\bin\ffmpeg.exe" -Destination "C:\Windows\System32\ffmpeg.exe"
|
||||
Remove-Item "$home\Downloads\ffmpeg-*" -Force -Recurse
|
||||
|
||||
ffmpeg -i input.mp4 output.gif # конвертировать mp4 в gif
|
||||
ffmpeg -i input.mp4 -filter_complex "scale=1440:-1:flags=lanczos" output.gif # изменить разрешение на выходе
|
||||
ffmpeg -i input.mp4 -filter_complex "scale=1440:-1:flags=lanczos" -r 10 output.gif # изменить количество кадров в секунду на выходе
|
||||
ffmpeg -i input.mp4 -filter_complex "fps=5,scale=960:-1:flags=lanczos,split[s0][s1];[s0]palettegen=max_colors=32[p];[s1][p]paletteuse=dither=bayer" output.gif # сжатие за счет цветовой политры
|
||||
ffmpeg -i input.mp4 -ss 00:00:10 -frames:v 1 -q:v 1 output.jpg # вытащить скриншот из видео на 10 секунде
|
||||
ffmpeg -i input.mp4 -ss 00:00:05 -to 00:00:10 -c copy output.mp4 # вытащить кусок видео
|
||||
ffmpeg -i "%d.jpeg" -framerate 2 -c:v libx264 -r 30 -pix_fmt yuv420p output.mp4 # создать видео из фото (1.jpeg, 2.jpeg и т.д.) с framerate (частотой кадров) в создаваемом видео 2 кадра в секунду
|
||||
ffmpeg -i "rtsp://admin:password@192.168.3.201:554" -rtsp_transport tcp -c:v copy -c:a aac -strict experimental output.mp4 # запись без перекодирования (copy) RTSP-потока с камеры видеонаблюдения (+ аудио в кодеке AAC) в файл
|
||||
ffmpeg -i "rtsp://admin:password@192.168.3.201:554" -rtsp_transport tcp -c:v copy -c:a aac -strict experimental -movflags +faststart+frag_keyframe+empty_moov output.mp4 # переместить метаданные в начало файла, что позволяет начать воспроизведение файла в видеоплеере до его полной загрузки
|
||||
ffmpeg -i "rtsp://admin:password@192.168.3.201:554" -rtsp_transport tcp -frames:v 1 -c:v mjpeg output.jpg # сделать скриншот
|
||||
|
||||
# ImageMagick
|
||||
|
||||
Source (https://sourceforge.net/projects/imagemagick)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue