Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # Скрипт скачивания всех фотографий катушки на компьютер в максимально доступном качестве
- #
- # Использование:
- # 0. Установить PowerShell 3.0 (для Windows 8+ не требуется), создать новый документ и скопировать текст скрипта туда
- # 1. Задать в начале скрипта параметр $local:folderToSave ( строка 18 ) - папка сохранения фотографий
- # 2. Задать в начале скрипта параметр $local:rideURI ( строка 20 )- адрес страницы катушки, без имени сайта.
- # 3. НЕ СОХРАНЯТЬ ДОКУМЕНТ! Запустить (зеленый треугольник вверху) и ждать
- #
- # By Alexey D. Filimonov <alexey@filimonic.net>
- # for www.katushkin.ru
- #
- # Changelog:
- # 2014-05-19 Добавлена загрузка модуля System.Web
- # 2014-05-17 Первый релиз
- #
- #
- # ИЗМЕНИТЬ! Папка, куда скачивать фотографии
- $local:folderToSave = 'd:\photos'
- # ИЗМЕНТЬ! Кусок адреса катушки
- $local:rideURI = '/rides/2014/05/16/39835'
- #ДАЛЕЕ ТО, ЧТО, СКОРЕ ВСЕГО, ВАМ НЕ НАДО МЕНЯТЬ!
- #Адрес сайта
- $local:site = 'http://katushkin.ru'
- #Класс кнопки альбома
- $local:albumLinkClassName = 'b-photos-albums-article-cover-link'
- $local:albums = @()
- $local:photos = @()
- #Работа
- Add-Type -AssemblyName System.Web
- $local:albumsOnPage = $null
- $local:skipAlbums = 0
- do {
- $local:albumsOnPage = $null
- $local:tempURI = $( $local:site + $local:rideURI + '/photos?skip=' + $local:skipAlbums )
- Write-Host -ForegroundColor Yellow "Загружаю список альбомов [$($local:tempURI)]"
- $local:webpage = Invoke-WebRequest -Uri $local:tempURI
- $local:albumsOnPage = @( $local:webpage.Links | Where-Object {$_.class -eq $local:albumLinkClassName} )
- $local:skipAlbums += $local:albumsOnPage.Count
- $local:albums += @( $local:albumsOnPage )
- } While ( $local:albumsOnPage -ne $null)
- ForEach ($album in $local:albums) {
- $local:tempURI = $($local:site + $album.href)
- Write-Host -ForegroundColor Yellow "Загружаю альбом [$($local:tempURI)]"
- $local:webpage = Invoke-WebRequest -Uri $local:tempURI
- $local:albumPhotos = @( $local:webpage.Links | Where-Object {$_.class -eq $local:albumLinkClassName} )
- $local:photos += @($local:albumPhotos)
- }
- $local:photoCounter = 0
- ForEach ($photo in $local:photos) {
- $local:photoCounter++
- $local:photoName = $null
- $local:albumId = $photo.href -replace '^(?:/[^/]+)+/(\d+)/(?:\d+)$','$1'
- $local:photoId = $photo.href -replace '^(?:/[^/]+)+/(?:\d+)/(\d+)$','$1'
- $local:tempURI = $( $local:site + $photo.href)
- $local:photoURIEncoded = [System.Web.HttpUtility]::UrlEncode($local:tempURI)
- Write-Host -ForegroundColor Gray "[$($local:photoCounter) / $($local:photos.Count)]`t" -NoNewline
- if ( @( Get-Item -Path $( Join-Path -Path $local:folderToSave -ChildPath $('alb'+$($local:albumId)+'_pho'+$($local:photoId)+'_*') ) ).Count -ne 0 ) {
- Write-Host -ForegroundColor Cyan "Фотография [alb=$($local:albumId):pho=$($local:photoId)] уже скачана. Не буду скачивать повторно"
- continue
- }
- Write-Host -ForegroundColor Yellow "Загружаю страницу фотографию [$($local:tempURI)]"
- $local:photoWebPage = Invoke-WebRequest -Uri $local:tempURI
- $local:bigPictureScript = @( $local:photoWebPage.Scripts | Where-Object {if ($_.innerHTML -ne $null) { return $_.innerHTML.Contains('function getOriginalImageUrl()') } } )[0]
- $local:bigPictureScript = @( $local:bigPictureScript.innerHTML -split "`n" | Where-Object {$_.Contains( 'var screenFormats')} )[0]
- $local:bigPictureScript = $local:bigPictureScript -replace '^.*(\[.*\]).*$','$1'
- $local:tempURIList = $local:bigPictureScript | ConvertFrom-Json
- $local:tempURI = @( $local:tempURIList | Sort-Object -Descending -Property 'width' )[0]
- $local:picSize = $local:tempURI.width
- $local:tempURI = $local:tempURI.url
- $local:fileName = $( 'alb'+$($local:albumId)+'_pho'+$($local:photoId)+'_'+$($local:picSize)+'_'+$local:photoURIEncoded + '.jpg' )
- $local:fileFullName= Join-Path -Path $local:folderToSave -ChildPath $local:fileName
- if (Test-Path -Path $local:fileFullName -PathType Leaf) {
- Write-Host -ForegroundColor Magenta "Файл [$($local:fileFullName)] уже существует. Не буду скачивать повторно"
- } else {
- Write-Host -ForegroundColor Green "Загружаю фотографию [$($local:tempURI)] в [$($local:fileFullName)]"
- Invoke-WebRequest -Uri $local:tempURI -OutFile $local:fileFullName
- }
- }
- Write-Host -ForegroundColor Yellow "Завершено"
Add Comment
Please, Sign In to add comment