Я использую скрипт, подобный AppleScript ниже, хотя он только создает список URL-адресов миниатюр, а не полноразмерных изображений, и не помечает местоположения с тегами.
paragraphs of (do shell script "cat /tmp/ids_of_users")
repeat with user in result
set s to "open -gagoogle\\ chrome https://www.facebook.com/profile.php?id=" & user & "\\&sk=photos_albums"
tell application "Google Chrome"
close windows
repeat until exists window 1 -- the open command sometimes results in an `LSOpenURLsWithRole() failed` error
do shell script s
delay 5
end repeat
repeat while loading of tabs of window 1 contains true
delay 1
end repeat
tell active tab of window 1
set albums to execute javascript "o='';a=document.querySelectorAll('.albumThumbLink');for(i=0;e=a[i];i++){o+=e.href+'\\n'};o"
end tell
if albums is not missing value and albums is not "" then
repeat with p in paragraphs 1 thru -2 of albums
do shell script "open -jgagoogle\\ chrome " & quoted form of p
delay 1
end repeat
repeat while loading of tabs of window 1 contains true
delay 1
end repeat
tell application "Google Chrome" to tell active tab of window 1
repeat while loading is true
delay 1
end repeat
set src to execute javascript "document.body.innerHTML"
if src contains "no photos in this album" then exit repeat
if src contains "you may not have permission to view this page" then return -- your account got restricted for a week by Facebook
set prev to 0
repeat
set y to execute javascript "document.querySelector('.fbTimelineStarGridSeparator').scrollIntoView();window.scrollY"
delay 1
if y is prev then exit repeat
set prev to y
end repeat
set out to execute javascript "o='';a=document.querySelectorAll('.tagWrapper i');for(i=0;e=a[i];i++)o+=e.getAttribute('style').replace(/.*?\\(/,'').replace(/\\).*/,'')+'\\n';o"
if out is not "" then
do shell script "printf %s " & quoted form of out & "|sed s/^/" & user & "\\ />>/tmp/albums"
end if
end tell
end if
end tell
end repeat
Я используюскрипт, подобный приведенному ниже, для создания списка более крупных версий изображений, размером до 960 на 960 пикселей, чтобы они не всегда были полноразмерными версиями.
paragraphs of (do shell script "cat /tmp/ids_of_images")
repeat with photoid in result
tell application "Google Chrome"
close windows
repeat until exists window 1
do shell script "open -gagoogle\\ chrome https://www.facebook.com/" & photoid
delay 5
end repeat
repeat while loading of tabs of window 1 contains true
delay 1
end repeat
tell active tab of window 1
set src to execute javascript "document.querySelector('.spotlight').src"
if src is not missing value then
do shell script "echo '" & src & "'>>/tmp/bigger"
end if
end tell
end tell
end repeat
Некоторые фотографии частоне отображается на странице для всех фотографий, но отображается при индивидуальном просмотре альбомов.
https://www.facebook.com/profile.php?id=<user id>&sk=photos_albums
перенаправляется на страницу для альбомов пользователя, https://www.facebook.com/profile.php?id=<user id>&sk=photos_all
перенаправляется на страницу для всех опубликованных фотографийпользователем, и https://www.facebook.com/<fbid of image or user>
перенаправляется на страницу для изображения или пользователя.
После того, как я загрузил более тысячи или несколько тысяч страниц, моя учетная запись иногда ограничивается на неделю, поэтомучто я не могу просмотреть профили пользователей, которые не являются моими друзьями.
Число во втором поле с подчеркиванием в имени файла изображения является идентификаторомизображение или, например, 10102454385528521
в 12208495_10102454385528521_4749095086285673716_n.jpg
.
Идентификатор пользователя - это последний номер в идентификаторе альбома, который начинается с a.
, и первый номер в идентификаторе альбома, который начинается с fb.
.
https://www.facebook.com/photo/download/?fbid=<fbid of photo>
использовался для перенаправления на полноразмерную версию изображения, но перестал работать в начале этого года.
https://graph.facebook.com/<user id>/picture?width=9999
перенаправляется на полноразмерное изображение профиляпользователь, который все еще работает, даже если Graph API больше не доступен.