Можно ли очистить все просматриваемые изображения + отмеченное местоположение одного из ваших друзей на Facebook? - PullRequest
0 голосов
/ 22 января 2012

Я хочу выбрать пользователя (чьи изображения общедоступны и доступны для просмотра, он же текущий друг на Facebook) и загрузить все просматриваемые фотографии этого человека, а также расположение их тега на этом изображении. В любом случае, это все публично доступно для меня, поэтому это не должно быть проблемой, я просто не знаю, как извлечь помеченное местоположение на изображении.

Это что-то, что можно сделать через API Facebook или другими способами? Как бы вы это сделали?

Ответы [ 3 ]

3 голосов
/ 22 января 2012

Эта информация не будет доступна через API Graph, потому что для получения информации о пользователе требуется, чтобы пользователь авторизовал ваше приложение, или человек должен дружить с пользователем, который одобрил ваше приложение. Вы можете поцарапать сайт Facebook, но это противоречит их условиям обслуживания, и это сложно, потому что у них есть много мер, принятых для предотвращения соскоба.

1 голос
/ 23 января 2012

Вам нужно будет запросить у пользователей разрешение friends_photos, чтобы получить доступ к этой информации.

Загрузка фотографий пользователей без его / ее явного разрешения очень неприятные и навязчивые действия (в дополнение к нарушению политик платформы facebooks). Если бы я увидел это поведение, приложение было бы оскорбительно сообщено, и изменения в том, что ваша личная учетная запись также будет деактивирована или не сможет открывать новые приложения. до тех пор, пока вопрос о нарушении не будет рассмотрен соответствующим образом.

0 голосов
/ 25 августа 2016

Я использую скрипт, подобный 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 больше не доступен.

...