filimonic

Katushkin.ru ride photos downloader

May 17th, 2014
509
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. # Скрипт скачивания всех фотографий катушки на компьютер в максимально доступном качестве
  2. #
  3. # Использование:
  4. #     0. Установить PowerShell 3.0 (для Windows 8+ не требуется), создать новый документ и скопировать текст скрипта туда
  5. #     1. Задать в начале скрипта параметр $local:folderToSave ( строка 18 ) - папка сохранения фотографий
  6. #     2. Задать в начале скрипта параметр $local:rideURI ( строка 20 )- адрес страницы катушки, без имени сайта.
  7. #     3. НЕ СОХРАНЯТЬ ДОКУМЕНТ! Запустить (зеленый треугольник вверху) и ждать
  8. #
  9. # By Alexey D. Filimonov <alexey@filimonic.net>
  10. #     for www.katushkin.ru
  11. #
  12. # Changelog:
  13. #     2014-05-19 Добавлена загрузка модуля System.Web  
  14. #     2014-05-17 Первый релиз
  15. #
  16. #
  17.  
  18. # ИЗМЕНИТЬ! Папка, куда скачивать фотографии
  19. $local:folderToSave = 'd:\photos'
  20. # ИЗМЕНТЬ! Кусок адреса катушки
  21. $local:rideURI = '/rides/2014/05/16/39835'
  22.  
  23. #ДАЛЕЕ ТО, ЧТО, СКОРЕ ВСЕГО, ВАМ НЕ НАДО МЕНЯТЬ!
  24. #Адрес сайта
  25. $local:site = 'http://katushkin.ru'
  26. #Класс кнопки альбома
  27. $local:albumLinkClassName = 'b-photos-albums-article-cover-link'
  28. $local:albums = @()
  29. $local:photos = @()
  30.  
  31.  
  32. #Работа
  33. Add-Type -AssemblyName System.Web  
  34. $local:albumsOnPage = $null
  35. $local:skipAlbums = 0
  36. do {
  37.     $local:albumsOnPage = $null
  38.     $local:tempURI = $( $local:site + $local:rideURI  + '/photos?skip=' + $local:skipAlbums )
  39.     Write-Host -ForegroundColor Yellow "Загружаю список альбомов [$($local:tempURI)]"
  40.     $local:webpage = Invoke-WebRequest -Uri $local:tempURI
  41.     $local:albumsOnPage = @( $local:webpage.Links | Where-Object {$_.class -eq $local:albumLinkClassName} )
  42.     $local:skipAlbums += $local:albumsOnPage.Count
  43.     $local:albums += @( $local:albumsOnPage )
  44. } While ( $local:albumsOnPage -ne $null)
  45.  
  46. ForEach ($album in $local:albums) {
  47.     $local:tempURI = $($local:site + $album.href)
  48.     Write-Host -ForegroundColor Yellow "Загружаю альбом [$($local:tempURI)]"
  49.     $local:webpage = Invoke-WebRequest -Uri $local:tempURI
  50.     $local:albumPhotos = @( $local:webpage.Links | Where-Object {$_.class -eq $local:albumLinkClassName} )
  51.     $local:photos += @($local:albumPhotos)
  52.  
  53. }
  54.  
  55. $local:photoCounter = 0
  56. ForEach ($photo in $local:photos) {
  57.     $local:photoCounter++
  58.     $local:photoName = $null
  59.     $local:albumId = $photo.href -replace '^(?:/[^/]+)+/(\d+)/(?:\d+)$','$1'
  60.     $local:photoId = $photo.href -replace '^(?:/[^/]+)+/(?:\d+)/(\d+)$','$1'
  61.     $local:tempURI = $( $local:site + $photo.href)
  62.     $local:photoURIEncoded = [System.Web.HttpUtility]::UrlEncode($local:tempURI)
  63.     Write-Host -ForegroundColor Gray "[$($local:photoCounter) / $($local:photos.Count)]`t" -NoNewline
  64.     if ( @( Get-Item -Path $( Join-Path -Path $local:folderToSave -ChildPath $('alb'+$($local:albumId)+'_pho'+$($local:photoId)+'_*') ) ).Count -ne 0 ) {
  65.         Write-Host -ForegroundColor Cyan "Фотография [alb=$($local:albumId):pho=$($local:photoId)] уже скачана. Не буду скачивать повторно"
  66.         continue
  67.     }
  68.     Write-Host -ForegroundColor Yellow "Загружаю страницу фотографию [$($local:tempURI)]"
  69.    
  70.     $local:photoWebPage = Invoke-WebRequest -Uri $local:tempURI
  71.     $local:bigPictureScript = @( $local:photoWebPage.Scripts | Where-Object {if ($_.innerHTML -ne $null) { return  $_.innerHTML.Contains('function getOriginalImageUrl()') } } )[0]
  72.     $local:bigPictureScript = @( $local:bigPictureScript.innerHTML -split "`n" | Where-Object {$_.Contains( 'var screenFormats')} )[0]
  73.     $local:bigPictureScript = $local:bigPictureScript -replace '^.*(\[.*\]).*$','$1'
  74.     $local:tempURIList = $local:bigPictureScript | ConvertFrom-Json
  75.     $local:tempURI = @( $local:tempURIList | Sort-Object -Descending -Property 'width' )[0]
  76.    
  77.         $local:picSize = $local:tempURI.width
  78.         $local:tempURI = $local:tempURI.url
  79.         $local:fileName = $( 'alb'+$($local:albumId)+'_pho'+$($local:photoId)+'_'+$($local:picSize)+'_'+$local:photoURIEncoded + '.jpg' )
  80.         $local:fileFullName= Join-Path -Path $local:folderToSave -ChildPath $local:fileName
  81.         if (Test-Path -Path $local:fileFullName -PathType Leaf) {
  82.             Write-Host -ForegroundColor Magenta "Файл [$($local:fileFullName)] уже существует. Не буду скачивать повторно"
  83.         } else {
  84.             Write-Host -ForegroundColor Green "Загружаю фотографию [$($local:tempURI)] в [$($local:fileFullName)]"
  85.             Invoke-WebRequest -Uri $local:tempURI -OutFile $local:fileFullName
  86.         }
  87.    
  88. }
  89.  
  90. Write-Host -ForegroundColor Yellow "Завершено"
Add Comment
Please, Sign In to add comment