Instafeed.js — как отфильтровать или исключить конкретное изображение или пользователя?

Я понимаю, что фильтр используется для отображения более конкретных результатов. Но есть ли способ, которым я могу использовать его, чтобы вместо этого исключить определенного пользователя или изображение? Или у instafeed.js есть другой способ сделать это?

var feed = new Instafeed({
      target: 'instafeed',
      get: 'tagged',
      tagName: 'hashtag',
      limit: '10',
      sortBy: 'most-recent',
      resolution: 'standard_resolution',
      clientId: 'xxxxx', 
      template:'<img class="item" src="{{image}}">',
      filter: function(image) {
        //filter to exclude specific user
      }
    });

Цените любые отзывы. Большое спасибо!


person soulefay    schedule 20.01.2015    source источник


Ответы (3)


Да. Если вы вернете false из функции фильтра, изображение будет исключено из результатов.

Таким образом, чтобы заблокировать изображения от определенного пользователя, вы можете проверить свойство image.user.username:

filter: function(image) {
  var blockedUsernames = [
    'reallybaduser',
    'otherreallybaduser'
  ];

  // check for blocked users
  for (var i=0; i<blockedUsernames.length; i++) {
    if (image.user.username === blockedUsernames[i]) {
      return false;
    }
  }

  return true;
}

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

person Steven Schobert    schedule 21.01.2015
comment
Извините за поздний ответ, но спасибо за оперативный ответ. Приведенный выше код работает для меня! Что делать, если вместо этого я хочу исключить определенный идентификатор изображения? - person soulefay; 20.02.2015
comment
Если вы знаете конкретный идентификатор, вы должны проверить его, используя if (image.id === "THE_ID") { return false } else { return true }, и заменить THE_ID идентификатором, который хотите удалить. - person Steven Schobert; 21.02.2015

Решил ли ответ Стивенса вашу проблему?

У меня не работает =/. Протестировано с помощью model.user.username (которое я использую, когда распечатываю имя пользователя загрузчика), но это не сработало.

<script type="text/javascript">

                var feed = new Instafeed({
                  get:'tagged',
                  tagName: 'horizon',
                  clientId: 'xxxxxxx',
                  limit:'16',
                  sortBy: 'most-liked',
                  resolution:'low_resolution',
                  template: '<img src="{{image}}" class="imagen" <p>Likes: {{likes}} User: {{model.user.username}} </p> ',
                /*  filter: function(image) {
                      var blockedUsernames = [
                        'reallybaduser',
                        'otherreallybaduser'
                      ];

                      // check for blocked users
                      for (var i=0; i<blockedUsernames.length; i++) {
                        if (image.user.username === blockedUsernames[i]) {
                          return false;
                        }
                      }

                      return true;
                    }, */
                  after:function(){
                    var images = $('#instafeed').find('a');
                  }
                });

                feed.run();

                /*==== GET MORE PICTURES.. ======*/
                $(function() {
                      $("#load-more").click( function()
                           {
                             feed.next();
                           }
                      );
                });
             </script>
person DeveloperDahak    schedule 18.02.2015

В ответ Дахаку, у меня работает код Стивена! Вот полный код на моем сайте:

<script type="text/javascript">

    var feed = new Instafeed({
        get: 'tagged',
        tagName: 'hashtag',
        clientId: 'xxxxxxxx',
        template: '<a href="{{link}}" target="_blank"><img src="http:{{image}}" class="insta" /></a>',
        limit: 20,
        filter: function(image) {
            var blockedUsernames = [
            'baduser',
            'otherreallybaduser'
            ];

            // check for blocked users
            for (var i=0; i<blockedUsernames.length; i++) {
               if (image.user.username === blockedUsernames[i]) {
                 return false;
               }
            }
            return true;
        }

    });
    feed.run();

</script>

Вы исключили тег комментария /* и */ при тестировании кода?

Извините, у меня ограниченное знание javascript. знак равно

person soulefay    schedule 20.02.2015