• Recent
  • Tags
  • Unsolved
  • Solved
  • MagicMirror² Repository
  • Documentation
  • 3rd-Party-Modules
  • Donate
  • Discord
  • Register
  • Login
MagicMirror Forum
  • Recent
  • Tags
  • Unsolved
  • Solved
  • MagicMirror² Repository
  • Documentation
  • 3rd-Party-Modules
  • Donate
  • Discord
  • Register
  • Login
A New Chapter for MagicMirror: The Community Takes the Lead
Read the statement by Michael Teeuw here.

MMM-Instagram - Pull and animate photos from Instagram feed

Scheduled Pinned Locked Moved Utilities
87 Posts 26 Posters 94.7k Views 27 Watching
Loading More Posts
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • Y Offline
    Yurick
    last edited by Jun 26, 2017, 7:50 PM

    Read my post 4 months ago. I changed the code and it works fine for me. As I am a copy-paste coder, I can’t post it here for not to be damned. :) But if we ask a author to fix it using my clues it would be nice to have a working module.

    R 1 Reply Last reply Jun 26, 2017, 9:04 PM Reply Quote 0
    • R Offline
      rudibarani Project Sponsor @Yurick
      last edited by Jun 26, 2017, 9:04 PM

      Thanks @Yurick for finding the solution to the problem. Would be great to see this implemented so everyone could benefit from @kapsolas module.

      1 Reply Last reply Reply Quote 0
      • K Offline
        kapsolas Module Developer
        last edited by Jun 26, 2017, 9:12 PM

        The module was not loading new images. I was thinking to fix that and I have a solution i am testing.

        Sounds like @Yurick has a solution for this too. If he pm’s it i can test it and incorporate into the code

        1 Reply Last reply Reply Quote 0
        • Y Offline
          Yurick
          last edited by Yurick Jun 27, 2017, 3:01 PM Jun 27, 2017, 2:55 PM

          Here is my MMM-Instagram.js

          /* global Module */
          
          /* Magic Mirror
           * Module: MMM-Instagram
           *
           * By Jim Kapsalis https://github.com/kapsolas
           * MIT Licensed.
           */
          
          Module.register('MMM-Instagram', {
          
              defaults: {
                  format: 'json',
                  lang: 'en-us',
                  id: '',
                  animationSpeed: 1000,
                  updateInterval: 60000, // 10 minutes
                  access_token: '',
                  count: 200,
                  min_timestamp: 0,
                  loadingText: 'Loading...'
              },
              
              // Define required scripts
              getScripts: function() {
                  return ["moment.js"];
              },
              
              /*
              // Define required translations
              getTranslations: function() {
                  return false;
              },
              */
              
            
          
              // Define start sequence
              start: function() {
          	var self = this;
                  Log.info('Starting module: ' + this.name);
                  this.data.classes = 'bright medium';
                  this.loaded = false;
                  this.images = {};
                  this.activeItem = 0;
                  this.url = 'https://api.instagram.com/v1/users/self/media/recent' + this.getParams();
          	var insturl = this.url;
          //        Log.info('instaurl = ' + this.url);
          	setInterval(function() {
          //				Log.info('NewUrl = ' + this.url);
          			        self.sendSocketNotification("INSTAGRAM_GET", insturl); 
          				    }, 40000); //perform every 1000 milliseconds.	
          
          },
          
              
              getStyles: function() {
                  return ['instagram.css', 'font-awesome.css'];
              },
          
              // Override the dom generator
              getDom: function() {
                  var wrapper = document.createElement("div");
                  var imageDisplay = document.createElement('div'); //support for config.changeColor
          
                  if (!this.loaded) {
                      wrapper.innerHTML = this.config.loadingText;
                      return wrapper;
                  }
                  
                  // set the first item in the list...
                  if (this.activeItem >= this.images.photo.length) {
                      this.activeItem = 0;
                  }
                  
                  var tempimage = this.images.photo[this.activeItem];
                  
                  // image
                  var imageLink = document.createElement('div');
                  //imageLink.innerHTML = "<img src='https://www.google.com/images/branding/googlelogo/1x/googlelogo_color_272x92dp.png'>";
                  imageLink.id = "MMM-Instagram-image";
                  imageLink.innerHTML = "<img src='" + tempimage.photolink + "'>";
                  
                  imageDisplay.appendChild(imageLink);
                  wrapper.appendChild(imageDisplay);
                 
                  return wrapper;
              },
          
              /* scheduleUpdateInterval()
               * Schedule visual update.
               */
              scheduleUpdateInterval: function() {
                  var self = this;
          
                  Log.info("Scheduled update interval set up...");
                  self.updateDom(self.config.animationSpeed);
          	
          
                  setInterval(function() {
                      Log.info("incrementing the activeItem and refreshing");
                      self.activeItem++;
                      self.updateDom(self.config.animationSpeed);
                  }, this.config.updateInterval);
              },
          
              /*
               * getParams()
               * returns the query string required for the request to flickr to get the 
               * photo stream of the user requested
               */
              getParams: function() {
                  var params = '?';
                  params += 'count=' + this.config.count;
                  params += '&min_timestamp=' + this.config.min_timestamp;
                  params += '&access_token=' + this.config.access_token;
                  return params;
              },
          
              // override socketNotificationReceived
              socketNotificationReceived: function(notification, payload) {
                  //Log.info('socketNotificationReceived: ' + notification);
                  if (notification === 'INSTAGRAM_IMAGE_LIST')
                  {
                      //Log.info('received INSTAGRAM_IMAGE_LIST');
                      this.images = payload;
                      
                      //Log.info("count: " +  this.images.photo.length);
                      
                      // we want to update the dom the first time and then schedule next updates
                      if (!this.loaded) {
                      this.updateDom(1000);
                          this.scheduleUpdateInterval();
                      }
                      
                      this.loaded = true;
                  }
              }
          
          });
          
          :::
          
          Spoiler Text
          
          :::
          
          
          
          1 Reply Last reply Reply Quote 0
          • M Offline
            microkost
            last edited by Jan 23, 2018, 9:07 AM

            This post is deleted!
            M 1 Reply Last reply Jan 23, 2018, 10:30 AM Reply Quote 0
            • M Offline
              microkost @microkost
              last edited by microkost Jan 24, 2018, 1:19 PM Jan 23, 2018, 10:30 AM

              Is this module still working? Because after clonning and providing access_token according to manual is still stucked on Loading… warning.

              Output from starting MagicMirror:

              Connecting socket for: MMM-Instagram
              Starting node_helper for module [MMM-Instagram]
              

              OK, some debug… I finally used multi account fork from O5ten and used his API key from README 1160247792.b119586.49fa97770ee34deb92e621069c760cee then it started to show pictures, so finall problem is on my access_token. Good to know for debuging, should help someone else…

              How to test that access token is OK?
              Put to web browser:
              https://api.instagram.com/v1/users/self/media/recent?access_token=1160247792.b119586.49fa97770ee34deb92e621069c760cee
              did you see some data as result?

              "data": [{"id": "1698285770916717663...
              

              So now test your key
              https://api.instagram.com/v1/users/self/media/recent?access_token=[TOKEN_HERE]
              If there is result, everything is OK, if you get

              data	[]
              

              then is time to investigate! Do you have content on your wall? Because your’s last 20 posts are only accessible in sandbox https://www.instagram.com/developer/sandbox/ (!!!)
              For rest and another use cases read carefully https://www.instagram.com/developer/ guide.

              My problem was empty my wall… Sorry for spam, but maybe it helps someone not familiar with that with debuging.

              1 Reply Last reply Reply Quote 1
              • N Offline
                nobita @kapsolas
                last edited by Apr 25, 2018, 5:57 AM

                @kapsolas
                I have 3 questions

                1. What happen after install this module, Loading…status on monitor (not show photo)
                2. How to get API KEY
                3. in config, ask access_token so I have to put access_token or API KEY
                  Thanks for all your kind
                1 Reply Last reply Reply Quote 0
                • B Offline
                  benderstwin
                  last edited by Dec 19, 2018, 4:53 AM

                  This works great, but is it possible to make it actually reload the pictures from instagram without reloading MM?

                  1 Reply Last reply Reply Quote 0
                  • A Offline
                    AlexanderSalter
                    last edited by Jan 21, 2020, 6:30 PM

                    Hi all, had the same problem, Instagram was acquired by Facebook who have updated the way the API works.
                    I spent a couple of days writing and testing a new module for Instagram that was based off the original.

                    It requires a Facebook developer account and app, but I have explained it as best i can in readme

                    Intro_Post
                    MMM-Instagram2020

                    C 1 Reply Last reply Jan 23, 2020, 6:50 AM Reply Quote 0
                    • C Offline
                      chassain 0 @AlexanderSalter
                      last edited by Jan 23, 2020, 6:50 AM

                      @AlexanderSalter

                      It works fine. Thanks Alexander.

                      1 Reply Last reply Reply Quote 0
                      • 1
                      • 2
                      • 5
                      • 6
                      • 7
                      • 8
                      • 9
                      • 9 / 9
                      • First post
                        Last post
                      Enjoying MagicMirror? Please consider a donation!
                      MagicMirror created by Michael Teeuw.
                      Forum managed by Sam, technical setup by Karsten.
                      This forum is using NodeBB as its core | Contributors
                      Contact | Privacy Policy