как определить, является ли URL-адрес для синего изображения по умолчанию gravatar

Есть ли способ определить, является ли URL-адрес для синего изображения граватара по умолчанию?

Вот два URL-адреса изображения Gravatar по умолчанию:

http://www.gravatar.com/avatar/19b2990ba88512ab38abdbbca5701d27?s=120

http://www.gravatar.com/avatar/88a771dc1a611b2038c9a0ad0770b595?s=120

Вот URL с изображением:

http://www.gravatar.com/avatar/d8f98df8a6ed24a727b993ea01cc91f6?s=120

Есть ли что-то в этих URL-адресах, что я могу найти в URL-адресе синего изображения gravatar по умолчанию, которого нет у gravatas не по умолчанию?


Редактировать:

Я пытаюсь сделать следующее: у меня есть лист Excel, загруженный из приложения, в котором есть столбец для URL-адресов gravatar. Мне нужно удалить все ссылки, которые ведут к синему изображению граватара по умолчанию.


person xyz    schedule 31.07.2015    source источник
comment
Какой язык вы используете? Кроме того, для чего это нужно, с точки зрения использования?   -  person andrewgu    schedule 31.07.2015
comment
Спасибо за вопрос. У меня есть лист Excel, загруженный из приложения, в котором есть столбец или gravatar URL-адреса, мне нужно удалить все ссылки, которые ведут the default blue gravatar image   -  person xyz    schedule 31.07.2015


Ответы (2)


URL-адреса изображения аватара Gravatar, которые являются изображением по умолчанию, будут возвращать 404 Not Found ошибку, если следующий параметр установлен d=404. Например, вот URL-адреса, которые вы использовали в качестве примеров, но с набором параметров:

http://www.gravatar.com/avatar/19b2990ba88512ab38abdbbca5701d27?s=120&d=404

http://www.gravatar.com/avatar/88a771dc1a611b2038c9a0ad0770b595?s=120&d=404

http://www.gravatar.com/avatar/d8f98df8a6ed24a727b993ea01cc91f6?s=120&d=404


Предполагая, что вы определяете, используются ли изображения по умолчанию с помощью JavaScript, вы можете использовать AJAX (без отображения изображения) или обработчик ошибок (отображение изображений не по умолчанию), чтобы определить, успешно ли загружены эти изображения.

JQuery (AJAX)

// Image Exists
$.ajax({url:"http://www.gravatar.com/avatar/d8f98df8a6ed24a727b993ea01cc91f6?s=120&d=404",type:"GET",crossDomain:true,success:(function(){console.log("Custom Gravatar");}),error:(function(){console.log("Default Gravatar");})});

// Image Does Not Exist
$.ajax({url:"http://www.gravatar.com/avatar/88a771dc1a611b2038c9a0ad0770b595?s=120&d=404",type:"GET",crossDomain:true,success:(function(){console.log("Custom Gravatar");}),error:(function(){console.log("Default Gravatar");})});

Отслеживание ошибок

You can use either the jQuery load and error event handlers, or the HTML onload and onerror attributes.

$("img").load(function(e) {
  e.target.parentNode.parentNode.getElementsByClassName("stat")[0].innerHTML = e.type;
}).error(function(e) {
  e.target.parentNode.parentNode.getElementsByClassName("stat")[0].innerHTML = e.type;
});
table,
td {
  border: 1px solid black;
  border-collapse: collapse;
}
table img {
  width: 48px;
  height: 48px;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<table>
  <tbody>
    <tr>
      <td>Image</td>
      <td>Expected Result</td>
      <td>Actual Result</td>
    </tr>
    <tr>
      <td>
        <img id="good" src="http://www.gravatar.com/avatar/d8f98df8a6ed24a727b993ea01cc91f6?s=120&d=404" />
      </td>
      <td>load</td>
      <td class="stat">Loading...</td>
    </tr>
    <tr>
      <td>
        <img id="bad" src="http://www.gravatar.com/avatar/88a771dc1a611b2038c9a0ad0770b595?s=120&d=404" />
      </td>
      <td>error</td>
      <td class="stat">Loading...</td>
    </tr>
  </tbody>
</table>


EDIT: OP пояснил, о чем просили

Я написал небольшой скрипт VBA в этом файле примера для итерации по первому столбцу до первого пустого ячейке, создав запросы WinHTTP с измененным URL-адресом, а затем, по запросу OP, удалив содержимое ячеек, содержащих ссылку на аватар Gravatar по умолчанию.

Чтобы запустить код в образце файла Excel:

  • Excel 2003 и более ранние версии: Инструменты > Макрос > Макросы (Alt + F8) > checkGravatar
  • Excel 2007 и новее: Разработчик > Макросы > проверить Граватар

Для запуска VBA вам также может понадобиться включить макросы и ссылка на MSXML.

Sub checkGravatar()
    Set objHTTP = CreateObject("WinHttp.WinHttpRequest.5.1")
    Dim URL As String
    Dim goodStat As String
    Dim badStat As String
    Dim row As Integer
    Dim pos As Integer
    row = 1
    URL = Cells(row, 1).Value
    Do While Len(URL) > 0
        If InStr(URL, "gravatar.com/avatar/") > 0 Then
            If InStr(URL, "?") = 0 Then
                URL = URL & "?d=404"
            Else
                If Not InStr(URL, "&d=") Then
                    URL = URL & "&d=404"
                End If
            End If
            objHTTP.Open "GET", URL, False
            objHTTP.send ("")
            If objHTTP.Status = 404 Then
                Cells(row, 1).Value = ""
        Else
            MsgBox "GET request failed"
        End If
        row = row + 1
        URL = Cells(row, 1).Value
    Loop
End Sub
person andrewgu    schedule 31.07.2015
comment
Только что увидел комментарии. Я исправлю это через минуту. - person andrewgu; 31.07.2015
comment
Привет Fond42518, вот что я пытаюсь сделать, извиняюсь за то, что не упомянул об этом в своем вопросе. У меня есть лист Excel, загруженный из приложения, в котором есть столбец или gravatar URL-адреса, мне нужно удалить все ссылки, которые ведут the default blue gravatar image - person xyz; 31.07.2015

Вы можете попробовать передать изображение по умолчанию по вашему выбору и посмотреть, что будет возвращено.

URL-адреса, сопоставленные с существующими граватарами, будут игнорировать параметр изображения по умолчанию, возвращая изображение.

Сопоставление URL-адресов без изображений будет использовать предоставленное вами значение по умолчанию (вместо синего G). Если вы передадите что-то недопустимое (пустая строка), вы получите 400.

Сравните существующий: http://www.gravatar.com/avatar/d8f98df8a6ed24a727b993ea01cc91f6?d=%22%22

С несуществующим: http://www.gravatar.com/avatar/19b2990ba88512ab38abdbbca5701d27?d=%22%22

Тем не менее... Довольно грубо намеренно вызывать ошибки в чужом API.
Вы можете запустить какого-нибудь фонового исполнителя, который будет ПОЛУЧАТЬ изображения и посмотреть, что будет возвращено.

person tompave    schedule 31.07.2015
comment
Привет, tompave, вот что я пытаюсь извиниться за то, что не указал это в своем вопросе. У меня есть лист Excel, загруженный из приложения, в котором есть столбец или gravatar URL-адреса, мне нужно удалить все ссылки, которые ведут the default blue gravatar image - person xyz; 31.07.2015
comment
Понимаю. Тогда я не знал бы, как тебе помочь. Лучше всего написать скрипт, чтобы определить, являются ли изображения стандартными или нет, и импортировать результаты в файл xls. - person tompave; 01.08.2015