add scripts
This commit is contained in:
@@ -0,0 +1,82 @@
|
||||
## Red Letter Media
|
||||
# Set URL and Location
|
||||
$URL = "https://www.youtube.com/@RedLetterMedia"
|
||||
$folderPath = "\\truenas3.kwyjibo.info\RedLetterMedia$"
|
||||
|
||||
Set-Location $folderPath
|
||||
|
||||
$rejects = @()
|
||||
$rejects_string = $rejects -join '|'
|
||||
|
||||
# Download flat playlist
|
||||
Write-Verbose -Message "Download flat playlist"
|
||||
$flat = D:\youtube-dlp\yt-dlp.exe -j --flat-playlist $URL
|
||||
$flat | Set-Content -Path RLM.json
|
||||
|
||||
# load json into memory, convert to psobject
|
||||
$json = Get-Content -Path RLM.json | ConvertFrom-Json
|
||||
|
||||
# Load all .mp4 files into memory once at the start
|
||||
$mp4Files = Get-ChildItem -Path $folderPath -Recurse -Filter "*.mp4"
|
||||
|
||||
ForEach ($obj in $json) {
|
||||
# Initialize $fileFound as null for each iteration
|
||||
$fileFound = $false
|
||||
|
||||
# Extract information from the JSON object
|
||||
$videoUrl = $obj.webpage_url
|
||||
$Title = $obj.title
|
||||
$Id = $obj.id
|
||||
|
||||
# Log the start of the process
|
||||
Write-Verbose -Message "Start $Id ##### $Title"
|
||||
|
||||
# Check if the title matches any reject term using wildcards
|
||||
$reject_matches = $rejects | Where-Object { $Title -like "*$($_)*" }
|
||||
|
||||
# If matches are found, reject the title
|
||||
If ($reject_matches) {
|
||||
Write-Warning -Message "Skip $Id ##### $Title"
|
||||
}
|
||||
Else {
|
||||
# downloaded already?
|
||||
# Regular expression to match the ID after "youtube-" and before the closing bracket
|
||||
$regex = "(?i)youtube-$Id"
|
||||
|
||||
# Check if any file already exists that matches the video ID
|
||||
$fileFound = $mp4Files | Where-Object { $_.Name -match $regex }
|
||||
|
||||
# If no file is found, notify the user
|
||||
if ($fileFound) {
|
||||
Write-Warning "File found with the YouTube ID: $Id"
|
||||
}
|
||||
Else {
|
||||
# Execute yt-dlp command for non-rejected videos
|
||||
try {
|
||||
Write-Warning -Message "Dwnld $Id ##### $Title"
|
||||
#$attemptedDownloads.Add($obj)
|
||||
D:\youtube-dlp\yt-dlp.exe $videoUrl `
|
||||
--write-info-json `
|
||||
--write-thumbnail `
|
||||
--convert-thumbnails jpg `
|
||||
--no-progress `
|
||||
-t sleep `
|
||||
--rate-limit 5M `
|
||||
-o "Season %(release_date>%y,upload_date>%y|Unknown)s/%(release_date>%Y%m%d,upload_date>%Y%m%d)s - %(title).180B [%(extractor)s-%(id)s].%(ext)s" `
|
||||
-f "bestvideo[ext=mp4]+bestaudio[ext=m4a]/best[ext=mp4]/best" `
|
||||
-S vcodec:h264 `
|
||||
--reject-title $rejects_string `
|
||||
--playlist-reverse
|
||||
#--cookies "D:\youtube-dlp\20251024_currentsite_cookies.firefox-private.txt" #`
|
||||
#--extractor-args "youtube:player_client=default,web_safari;player_js_version=actual"
|
||||
# --reject-title "Dude Soup|Podcast" ` # FH
|
||||
}
|
||||
catch {
|
||||
Write-Error "Failed to download $Id - $_"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
# Log the end of the process
|
||||
Write-Verbose -Message "End $Id ##### $Title"
|
||||
}
|
||||
Reference in New Issue
Block a user