Powershell: скачиваем фотографии из Вконтакте
Раньше я уже публиковал powershell скрипт с помощью которого можно скачать из Вконтакте все аудиозаписи с вашей страницы, на этот раз делюсь скриптом который поможет скачать общедоступные фотографии указанной страницы, профиля, группы.
Скрипт скачивает все фотографии из фотоальбомов и складывает их по соответствующим папкам. Также скачиваются фотографии из служебного альбома «Фотографии на стене сообщества», это может пригодится, если нужно скачать фотографии из какого-либо фото-паблика Вконтакте, который в принципе не пользуется фотоальбомами, просто публикует фотографии сразу на стену.
Но и это еще не все: скрипт записывает в метаданные (поле «Название») скачанного файла количество набранных лайков к фотографии. Это может пригодится тем, кто хочет скачать у группы-конкурента все фотографии и отсортировать изображения по лайкам для добавления наиболее залайканных фотографий — так сказать снять самые сливки. При следующем запуске скрипта если изображение уже скачано, то будет лишь обновлена информация в метаданных о количестве лайков:
Скрипт также запоминает какие фотографии были скачаны (в текстовом файле downloaded_files. txt каждой папки-альбом) и потом удалены — такие фотографии заново не перекачиваются.
Код скрипта:
#скрипт скачивает фотографии из вконтакте #автор: elims.org.ua <# #> $photo_path = "D:\vk-photos\" #папка для сохранения изображений $id = -22786271 #HD Обои #альбомы которые нужно исключить: $need_albums_id = 147102139,134040033,147102144,132334095 $global:photos_array = $null #обнулили масив всех фотографий сохраненного альбома $global:album_photos_count = $null #обнуление переменной с количествов фотографий в альбоме $sleep_time = 1 #время задержки между запросами [void][reflection.assembly]::loadwithpartialname("system.drawing") #для доступа как метаданным в файлах изображений function get_photo_list { #функция получения списка фотографий $j = 0 do { #выбираем по 1000 фотографий пока не дойдем до конца альбома Start-Sleep -s $sleep_time $uri = $uri_part1 + $j + "&extended=1&v=5.24" $request = $null do { #пытаемся получить ответ от сервера пока это не получится "Ссылка запроса: " + $uri $request = Invoke-WebRequest -Uri $uri Start-Sleep -s 1 #задержка в одну секунду } while ($request -eq $null) #пока не получим нормальный ответ $response_array = $request. content | ConvertFrom-Json #Конвертируем полученные данные из формата JSON в массив $global:album_photos_count = $response_array.response.count #переопределяем количество фотографий в альбоме исходя из данных последнего запроса $global:photos_array = $photos_array + $response_array.response.items #сохраняем в масив список фотографий "Сохраненны данные " + $photos_array.count + " фотографий" $j = $j + 1000 } while ($j -le $global:album_photos_count) #выбираем по 1000 фотографий пока не дойдем до конца альбома } function save_photos { #функция сохранения фотографии "начинаем сохранять фотографии, если есть задержка значит найдены уже скачанные фотографии и происходит их пропуск" $file_of_downloaded_files = $path + "\downloaded_files.txt" #имя файла со списком скачанных файлов if (Test-Path $file_of_downloaded_files) { #если список скачанных файлов существует $array_of_downloaded_files = Get-Content $file_of_downloaded_files #считываем его в массив } else { #если списка скачанных файлов не существует $array_of_downloaded_files = @() #создаем пустой массив } foreach ($photo_id in $photos_array.id) { if ($photos_array.photo_2560[$i_photo] -ne $null) { $photo = $photos_array.photo_2560[$i_photo] } #пытаемся скачать фотографию в качестве 2560 elseif ($photos_array.photo_1280[$i_photo] -ne $null) { $photo = $photos_array.photo_1280[$i_photo] } #если нет качества 2560 пытаемся скачать в 1280 elseif ($photos_array.photo_807[$i_photo] -ne $null) { $photo = $photos_array.photo_807[$i_photo] } #если нет качества 1280 качаем в 807 elseif ($photos_array.photo_604[$i_photo] -ne $null) { $photo = $photos_array.photo_604[$i_photo] } #если нет качества 807 качаем в 604 else { $photo = $null } #если нет необходимого качества, то ничего не качаем $likes = $photos_array.likes[$i_photo].count #количество лайков к фотографии $likes_sum = $likes_sum + $likes #сумма лайков к фотографиям в альбоме $album_and_photo_id = [string]$photos_array.owner_id[$i_photo] + "_" + [string]$photos_array.id[$i_photo] $filename = $path + $album_and_photo_id + ".jpg" #формируем имя файла без лайков в метаданных $filename2 = $filename. substring(0,$filename.length - 5) + "_with_likes.jpg" #формируем временное имя файла с лайками в метаданных if ( $photo -ne $null ) { #если ссылка на фотографию не пуста "Альбом " + $i + " из " + $album_count + " : " + $album_title + " Фото " + $i_photo + " из " + $global:album_photos_count + ": " + $photo + " idPhoto: " + $photos_array.id[$i_photo] + " likes: " + $likes if ((-not(Test-Path $filename))-and(-not($array_of_downloaded_files -contains $album_and_photo_id))) { #если такого файла не существует и он ранее не скачивался Invoke-WebRequest $photo -OutFile $filename #скачиваем и сохраняем изображение } #прописывание количества лайков в метаданные изображения, в поле "название" if (Test-Path $filename) { #если такой файл существует if (-not($array_of_downloaded_files -contains $album_and_photo_id)) { #если ранее этот файл не скачивался $array_of_downloaded_files = $array_of_downloaded_files + $album_and_photo_id } $img = [System.Drawing.Image]::Fromfile($filename) $item = $img. psbase.GetPropertyItem(20624) #взяли в качестве примера не пустое поле с метаданными $item.id = 270 #поле "название" $item.type = 2 $likes_string = [int[]][char[]][string]("likes: " + $likes) $likes_string = $likes_string + 0 $item.len = $likes_string.count $item.Value = $likes_string #поле с количеством лайков $img.SetPropertyItem($item) #сохраняем информацию о лайках $filename2 = $filename.substring(0,$filename.length - 5) + "_with_likes.jpg" $img.Save($filename2) #сохраняем файл с временным именем с информацией о лайках $img.dispose() #закрываем файл без информации о лайках Remove-Item $filename #удаляем файл без информации о лайках Rename-Item $filename2 $filename #переименовываем временное имя файла с метаданными в исходное имя } } $i_photo++ } $likes_average = $likes_sum/$i_photo #подсчитываем в альбоме среднее количество лайков на фотографию $likes_text = "Суммарное количество лайков: " + $likes_sum + " количество фотографий: " + $i_photo + " средняя оценка фотографии: " + $likes_average + " лайков" $export_file = $path + "\likescount. txt" $likes_text | Out-File $export_file -Encoding UTF8 #сохраняем в файл информацию о среднем количестве лайков на фотографию $array_of_downloaded_files | Out-File $file_of_downloaded_files -Encoding UTF8 #сохраняем в файл информацию о скачанных фотографиях $i_photo = 0 #обнулили порядковый номер фотографии в альбоме $likes_sum = $null #обнулили сумарное количество лайков } #Получаем имя страницы\группы if ($id -gt 0) { $uri = "https://api.vk.com/method/users.get?user_ids="+$id } else { $group_id = $id * -1 $uri = "https://api.vk.com/method/groups.getById?group_ids="+$group_id } $request = Invoke-WebRequest -Uri $uri $response_array = $request.content | ConvertFrom-Json #Конвертируем полученные данные из формата JSON в массив $id_name = $response_array.response.name + $response_array.response.first_name + $response_array.response.last_name $id_name = $id_name -replace '(\\)|(\/)|(\*)|:|(\?)|"|<|>|(\|)|(\[)|(\])|(\n)', "_" #убираем некорректные знаки для имени файла $id_name #имя страницы $uri = "https://api. vk.com/method/photos.getAlbums?owner_id="+$id $request = Invoke-WebRequest -Uri $uri $response_array = $request.content | ConvertFrom-Json #Конвертируем полученные данные из формата JSON в массив $album_count = $response_array.response.aid.count #количество альбомов $i = 0 #счетчик альбомов foreach ($album in $response_array.response.aid) { #обходим каждый альбом $i_photo = 0 $global:album_photos_count = $response_array.response.size[$i] #количество фотографий в альбоме $album_title = $response_array.response.title[$i] #название альбома "Обрабатываем альбом: " + $album + " " + $album_title + " который состоит из " + $global:album_photos_count + " фотографий" if ($need_albums_id -contains $album) { "Этот альбом пропускаем: " + $album } #перечисленные альбомы исключаются #if (-not($need_albums_id -contains $album)) { "Этот альбом пропускаем: " + $album } #перечисленные альбомы включаются, все другие исключаются else { #создаем папку альбома $album_title = $album_title -replace '(\\)|(\/)|(\*)|:|(\?)|"|<|>|(\|)|(\[)|(\])|(\n)', "_" #убираем некорректные знаки для имени файла $path = $photo_path + $id + "_" + $id_name + "\" + $album_title+"-album" + $album + "\" #имя папки if (-not(Test-Path $path)) { #если папка не существует $result = New-Item -ItemType directory -Path $path #создаем папку } $uri_part1 = "https://api. vk.com/method/photos.get?owner_id="+$id+"&album_id="+$album+"&count=1000&offset=" get_photo_list #функция получения списка фотографий save_photos #функция сохранения фотографий $global:photos_array = $null #обнулили масив всех фотографий сохраненного альбома $global:album_photos_count = $null #обнулили количество фотографий в альбоме } $i++ } #качаем фотографии из альбома типа "Фотографии на стене сообщества" $path = $photo_path + $id + "_" + $id_name + "\photos_from_wall\" #имя папки if (-not(Test-Path $path)) { #если папка не существует $result = New-Item -ItemType directory -Path $path #создаем папку } $album_title = "photos_from_wall" $uri_part1 = "https://api.vk.com/method/photos.get?owner_id="+$id+"&album_id=wall&count=1000&offset=" get_photo_list #функция получения списка фотографий save_photos #функция сохранения фотографий
В самом начале скрипта указываются три входных параметра:
$photo_path = "D:\vk-photos\" #папка для сохранения изображений $id = -22786271 #HD Обои #альбомы которые нужно исключить: $need_albums_id = 147102139,134040033,147102144,132334095,147158535,135840729,139940911,144126590,148117034,150218783,152202307,153578867,154970595,156369728,158058558,159302933,160588607,162081006,164777317,165552996,166939786,169325173,170826148,172398650,128782649,133628616,154341193,131374960,162793467,137349112,132441241,124936139,147158522,203298792,137419682,147102182,147102200,135127647,199208496,187953367
$photo_path — папка в которую будут сохраняться фотографии. У меня это папка «D:\vk-photos\». Можете указать свою папку
$id — id странички или группы во вконтакте из которой нужно скачать фотографии. У меня это id -22786271 которое принадлежит вот этому паблику vk.com/oboihd (если в id есть знак «-» значит это сообщество, ггруппа, паблик)
$need_albums_id — id альбомов которые нужно исключить, то есть не нужно скачивать.
Ну а если Вам нужно избавиться от дубликатов фотографий, то в этом поможет программа «Duplicate Photo Finder» или ее аналог.
Пользуйтесь! Если есть вопросы — задавайте их в комментариях =)
Понравилось? =) Поделись с друзьями:
Опубликовано в рубрике Программирование
Метки: develop
« Рецепт: жареная картошка в духовке
Powershell: Ping with timestamp »
(+122 фото) Аватарки для группы класса
Содержание
Мы любим добавлять сюда классные картинки, 👩🏻💻 которые можно использовать в качестве аватар. Здесь уже много отличных фотографий 📸 и рисунков, которые добавляют пользователи сайта. 👨🏻💻 Благодаря активности посетителей, 🔝 коллекция аватарок постоянно растёт.
Зачем создавать в сети группу класса
Практически все пользователи Интернета, если, конечно, они не принципиальные противники социальных сервисов, зарегистрированы хотя бы в одном сообществе. Социальные сообщества занимают особое место среди сервисов, которые сегодня существуют в сети.
Они успешно объединяют пользователей по общим интересам. Другая важная задача, которую они выполняют, – наполнение сети информацией.
В социальном сообществе можно не только найти нужную книгу, музыку, фильмы, игры, но и обсудить все это с другими пользователями, поделиться продуктами собственного творчества. Постоянно развиваясь, социальные сети регулярно радуют новыми полезными функциями и приложениями.
В социальных сетях педагоги обсуждают актуальные проблемы образования, представляют собственные методические разработки и творческие работы учеников, обмениваются опытом. Но это для взрослых людей.
Возникает вопрос: стоит ли лишний раз втягивать детей в виртуальное общение?
75% подростков проводят в сети в будние дни в среднем от 3–5 ч. В выходные – 5–7 ч. Дети тратят много времени на общение в социальных сетях, а пользы от этого совсем мало. Почему бы классному руководителю не стать координатором, который направит общение подростков в нужное русло: на обсуждение актуальных тем и проблем класса, участие в различных сетевых проектах и т. д.
Совсем не обязательно пускать учеников и их родителей в свое личное информационное пространство, добавлять в друзья. В реальной жизни они же не являются друзьями. А вот в специально созданную для этого группу – стоит.
Если у вас не один класс, а несколько, создайте отдельную группу для каждого класса. Чтобы обезопасить личное информационное пространство, заведите дополнительный аккаунт, в котором вместо имени укажите название группы.
Что можно делать в группе класса
Добавьте в члены группы весь класс. Пригласите родителей или создайте для них отдельную группу.
Создав группу, не ленитесь вести ее и модерировать – снижение вашей активности понизит популярность группы среди учеников и родителей. На стене пишите важные сообщения. Загружайте школьные фото, отчеты с экскурсий, творческих и спортивных мероприятий. Предложите ученикам и их родителям также загрузить интересные фотографии.
Помните, что контроль за распространением информации в Интернете ужесточают. К ответственности могут привлечь не только авторов экстремистских постов, но и тех, кто сохраняет эти материалы на своей странице (делает репост). Уголовная, административная и гражданско-правовая ответственность для граждан может наступить не только за размещение экстремистских материалов, но и за оскорбление чувств верующих, клевету, распространение порнографии и пиратского контента, оскорбление, публикацию чужих изображений и т. д.
Настройте публикацию сообщений в группе так, чтобы предварительно просматривать контент (посты, видеоролики, баннеры и др. ).
Аватарки для группы класса: галерея
фотографий общественного достояния | Скачать бесплатные изображения на Unsplash
Public Domain Pictures | Загрузите бесплатные изображения на UnsplashИсследуйте › Изображения › Фондовые › Public Domain
Выберите из тщательно отобранных фотографий, размещенных на Unsplash с лицензией, аналогичной лицензии Public Domain. Каждое изображение можно использовать бесплатно как в коммерческих, так и в личных целях благодаря фотографам сообщества Unsplash.
События фотоЕда фотоПрирода фотоСпорт фотоВещи фото
Скачать бесплатные изображения unsplash, лицензированные аналогично изображениям общественного достояния ––– –– – –– –––– – – –– ––– –– –––– – –.
ЛОГАН УИВЕР | @LGNWVR
Изображения и картинки автомобилейкупеспортивный автомобиль
Макс Бендер
denverusaadult
Брайс Купер
Hd обоитекстуры и узорыHd узор обои
George Dagerotip
krabiao nanginterior
Jefferson Sees
caninepetDog images & pictures
Peter Herrmann
retro stylelost placespast
Ivan Kazlouskij
studio photographyman modelingwoman modeling
Frankie Cordoba
People images & picturesheadportrait
Anita Austvika
растениеHD обои сакурына открытом воздухе
LOGAN WEAVER | @LGNWVR
facecaphat
Vimal S
Hd pattern wallpapersHq background imagesdigital image
mos design
tokyo shinbashijapannight view
Thomas Becker
Hd chicago wallpapersstreetil
Max Bender
cophotographywalking
Brice Cooper
Texture backgroundsbuildingHd wallpapers
Махдис Мусави
дизайн интерьераполв помещении
George Dagerotip
таиланд район Муанг Крабиотель
Scott Bruxvoort
кожаТату изображения и картинкиЖенские изображения и картинки
–––– –––– –––– – –––– – –––– –– –– –––– – – –– ––– –– –––– – –.
cityvehicleroad
Автомобиль изображения и фотографиикупеспортивный автомобиль
Hd обоитекстура и узорыHd узор обои
caninepetСобака изображения и картинки
ретро стильпотерянные местапрошлое
Люди лица изображения и картинкиheadportrait
30002 Hd chicago wallpapersstreetil
Texture backgroundsbuildingHd wallpapers
interior designfloorindoors
skinTattoo images & picturesWomen images & pictures
Flower imagespetalgeranium
denverusaadult
krabiao nanginterior
studio photographyman modelingwoman modeling
plantHd cherry blossom wallpapersoutdoors
Hd pattern wallpapersHq фоновые изображенияцифровое изображение
tokyo shinbashijapannight view
cophotographywalking
thailandmueang krabi Districthotel
–––– –––– –––– – –––– ––––– –– –– –––– – – –– ––– –– –––– – –.urbanvehicleroad
denverusaadult
caninepetDog images & pictures
retro stylelost placespast
plantHd cherry blossom wallpapersoutdoors
tokyo shinbashijapannight view
interior designfloorindoors
Flower imagespetalgeranium
Hd wallpaperstexture and patternsHd pattern wallpapers
Studio Photographyman Modelingwoman Modeling
FaceCaphat
Cophotographywalking
Skintattoo Images & Pictureswomen Изображения и картин Обоиstreetil
Текстуры backgroundsbuildingHd обои
thailandmueang krabi Districthotel
Просмотр премиальных изображений на iStock | Скидка 20% на iStock
Unsplash
Красивые бесплатные изображения, подаренные самым щедрым сообществом фотографов в мире. Лучше, чем любые бесплатные или стоковые фотографии.
- около
- Блог
- Сообщество
- Присоединяйтесь к команде
- Разработчики/API
- Press
- HELP CENTER
Popular
- Backgrounds
- Free Images
- Free Stock Photos
- Happy Birthday Images
- Cool Photos
- Nature Pictures
- Черный фон
- Белый фон
- Текстуры
- Обои для рабочего стола
Обои
- HD обои
- 4k Wallpapers
- iPhone Wallpapers
- Cool Wallpapers
- Cute Wallpapers
- Live Wallpapers
- PC Wallpapers
- Black Wallpapers
- iPad Wallpapers
- Desktop Wallpapers
- Privacy Policy
- Terms
- Security
- Значок TwitterСкрыть Twitter
- Значок FacebookСкрыть Facebook
- Значок InstagramСкрыть Instagram
500+ публичных изображений [HD] | Скачать бесплатные изображения на Unsplash
500+ Public Pictures [HD] | Скачать бесплатные изображения на UNSPLASH- A Photophotos 4. 8k
- Степка фотосколков 5.6k
- Группа людей 249
Person
Transportation
Artancure
Artivealla
Arthilection
Arthilection
Arthilection
Arthilecry
Arthilecry
.
Логотип UnsplashUnsplash+
В сотрудничестве с Levi Meir Clancy
Unsplash+
Разблокировка
БезопасностьОбщественная безопасностьБезопасность станции
Хосе Мартин Рамирес Карраско
Изображения людей и фотографиибизнесВеб-фоны
– –– –––– – – –– ––– –– –––– – –.
Эмиль Гийемо
толпа ожидающих
Дим Хоу
amsterdamnederlandlarge
Росс Снеддон
glasgowcoatman
Nathaniel Sison
3 images
30003 Unsplash logo
Unsplash+
In collaboration with semenay erdoğan
Unsplash+
Unlock
train stationundergroundeoman
JC Gellidon
transportationtrainurban
Nathaniel Sison
People images & picturesbaguiophilippines
Clay Banks
hudson yardsNew york pictures & фотоСША
Markus Spiske
Текстуры фоныHd узор обоиdeutschland
Arno Senoner
griechenlandathendionysiou areopagitou
Unsplash logoUnsplash+
In collaboration with semenay erdoğan
Unsplash+
Unlock
subwayWomen images & picturestransport
Eiseke Bolaji
protestHd grey wallpapersend police brutality
Fern M. Lomibao
Hd чикаго картинкиHd обои городздание
Дом Эрика
сан-францискоcastreetcar
Julian Myles
Hd art wallpapersTree images & picturessculpture
Nathaniel Sison
benguetfilipinostreet photography
Unsplash logoUnsplash+
In collaboration with semenay erdoğan
Unsplash+
Unlock
tube trainpublic transporttrain carriage
Tetiana SHYSHKINA
architectureoxforduk
безопасностьобщественная безопасностьохрана станции
Глазгоплащ
железнодорожная станцияметрочеловек
TransportationTrainurban
People Images & Pictures Baguiophilippines
Фоны текстуры. Образец обои. –– – –––– –– – –– –––– – – –– ––– –– –––– – –.
Изображения и фотографии людейбизнес Фоны веб-сайтов
ожидание толпы
amsterdamnederlandlarge
Car images & pictureshighwaycloudy
hudson yardsNew york pictures & imagesusa
griechenlandathendionysiou areopagitou
subwayWomen images & picturestransport
Hd chicago wallpapersHd city wallpapersbuilding
Hd art wallpapersTree images & picturessculpture