• 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 96.0k 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.
  • R Offline
    rudibarani Project Sponsor @kapsolas
    last edited by Jun 26, 2017, 6:11 PM

    Hi @kapsolas,
    I think I need some help with the settings for

    min_timestamp: 0,
    

    Is there a way to set show only images from today and show nothing if there is no image uploaded today?

    Thanks for your help

    K 1 Reply Last reply Jun 26, 2017, 6:54 PM Reply Quote 0
    • K Offline
      kapsolas Module Developer @rudibarani
      last edited by Jun 26, 2017, 6:54 PM

      @rudibarani Hi - There currently is no intelligence on the images selected. It just processes the list that is returned by the API and starts to randomly display them.

      What you are asking for would need to be coded.

      R 1 Reply Last reply Jun 26, 2017, 7:33 PM Reply Quote 0
      • R Offline
        rudibarani Project Sponsor @kapsolas
        last edited by Jun 26, 2017, 7:33 PM

        @kapsolas Thanks for the quick reply. Another question on the side: It seems that only images are are loaded that where on Instagram before I restarted my MM. Is that intended behaviour or am I doing something wrong?

        		{
        			module: 'MMM-Instagram',
        			position: 'middle_center',
        			disabled: false,
        			config: {
        				access_token: '####.####',
        				count: 200,  
        				min_timestamp: 0,
        				animationSpeed: 2500,
        				updateInterval: 30000
        			}
        		},
        

        I waited an hour but non of my new images showed up. Only old ones. Even create a new account with only three images before booting my MM - and it keeps cycling those three and ignores later uploads…
        Any idea?

        1 Reply Last reply Reply Quote 0
        • 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
                      • 1
                      • 2
                      • 5
                      • 6
                      • 7
                      • 8
                      • 9
                      • 8 / 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