justb3a

Module: Instagram Feed

Recommended Posts

Ahhhh, you know what it could be! I am currently using hosts file to point a domain to another IP address so the rediercts url will be hitting a different server!

Do you think that is it?

Is there any work around whilst I'm in development to get this working on the server I am on?

Share this post


Link to post
Share on other sites

I keep getting the following error - [InstagramFeed]: No user '' was found. However it's working fine. 

Share this post


Link to post
Share on other sites

@justb3a Is it only possible to retrieve the recentMedia of the sandbox user?
EDIT: To clarify: Can I just access images of the access token user or can I get images from every user?

I get the images of my own account (which is in sandbox mode) but if I enter something diffent in the field "Username" in the modules settings, I still get the same images and not the images of the other user.

I even tried

$instagram = $modules->get('InstagramFeed')->getRecentMedia("cocacola");

but still my own images appear. I also tried clearing the cache via the link in the modules setting.

Share this post


Link to post
Share on other sites

The sandbox api is limited to sandbox users everywhere, so even retrieving by tag does only show images of those. You cannot get any other users media.

  • Like 1

Share this post


Link to post
Share on other sites

Hi everyone,

This is a great module. I was just wondering if anyone knows whether it would be possible for me to pull the location of each Instagram post and if so what the correct call is?

Thanks,

Matt

Share this post


Link to post
Share on other sites

@Matt_P If you use the `getRecentMedia()` endpoint you should be able to access the location inside the foreach loop.  Have a look at the instagram api, expand the response and there you'll see an example response containing all data which will be returned including a location entry.

"location": {
  "latitude": 37.778720183610183,
  "longitude": -122.3962783813477,
  "id": "520640",
  "street_address": "",
  "name": "Le Truc"
}

Code example (not tested):

<?php $feed = $modules->get('InstagramFeed')->getRecentMedia(); ?>

<div class="instagram">
  <?php foreach ($feed as $media): ?>
    // check if location is not `null`
    <?php if ($location = $media['location']): ?>
      Location: <?= $location['name'] ?>
    <?php endif; ?>
  <?php endforeach; ?>
</div>

 

  • Like 1

Share this post


Link to post
Share on other sites

Hi everyone,

Do you think it would be possible to save the last 20 or so medias (due to instagram sandbox mode), as if they would have been uploaded on the site?

In order for them not to disappear when the new posts arrive.

Mainly, the idea would be to have the complete feed displayed.

 

I did it manually with the medias urls for now but they keep changing so it's not a very suitable solution…

 

Thanks

Share this post


Link to post
Share on other sites

hi @Tanky you could add an image field to your page and save the image there.

Try something like the following:

$page->of(false);
$page->images->add($media['images']['standard_resolution']['url']);
$page->save("images");

 

Share this post


Link to post
Share on other sites

I pasted your code in the foreach that I use to generate each media of the feed:

$page->setOutputFormatting(false);
$page->insta_image->add($media['images']['standard_resolution']['url']);
$page->save("insta_image");

It returns me this error, which is weird because you already disabled the output formatting:

Error: Exception: Can't save field from page 1: /: Call $page->setOutputFormatting(false) before getting/setting values that will be modified and saved. [insta_image] (in /home/tenutaxyit/www/wire/core/PagesEditor.php line 783)

 

And there is something else I thought about, each time someone will load the page the images will be saved again, so how could I check if a media is already backed up before saving it?

Share this post


Link to post
Share on other sites

@Tanky Sorry, I have not the time at the moment to try this myself. But this is more a general topic, please try to use the forum search, I know there are a lot of topics which cover how to add an image via api. If you want to have an "archive"/Feed of all images/posts, you should consider to decouple the process of saving images from displaying it on the webpage. I would set up a cronjob or something like this which "asks" repeatedly at certain time intervals whether there are new posts. Then you could add a new Page / Page-Table-Item / Repeater-Item (it's up to you how to save it) containing the image and all the desired data (location, comments, ..) as well as the id (`$media['id'|`). Simply check if you already have an item with that id. You could also check whether `$media['created_time']` is greater than the last inserted item.

Or even better: the endpoint supports additional parameters which could be implemented as well:

MAX_ID    Return media earlier than this max_id.
MIN_ID    Return media later than this min_id.

Using MIN_ID you should be able to only receive new posts/images.

Share this post


Link to post
Share on other sites
On 18/10/2016 at 2:42 PM, Tom. said:

I keep getting the following error - [InstagramFeed]: No user '' was found. However it's working fine. 

Hi @Tom., did you solve this? It is working fine, but the the error keeps popping up.

58a88e8c5e2a8_ScreenShot2017-02-18at19_12_15.png.e7044782bfa606426a508b460d425bd8.png

I commented out line #317 of InstagramFeed.module to stop the logging for now.

58a88e54baaf3_ScreenShot2017-02-18at19_10_00.png.84587a9e5a584c006ff6608c63c6aaa8.png

 

Share this post


Link to post
Share on other sites

Here's a question. is there a way of setting the imageCount value when initialising the module. I don't think there is taking a look at the modules methods but perhaps I'm wrong?

This might be handy in the instance where you want to have one page show say 4 images and another show 8.

I know you could do this when iterating and limit but might be able to set limit based on each instance of the instagram feed?

Share this post


Link to post
Share on other sites

There you go:

<?php $feed = $modules->get('InstagramFeed')->setImageCount(8)->getRecentMedia();  ?>

 

  • Like 2

Share this post


Link to post
Share on other sites

Has any one noticed a problem with Instagram posts with multiple images not showing?

I get the output:

// output video  

suggesting that "multiple image" posts are not picked up as media type "image".

<?php if ($media['type'] === 'image'): ?>

With thanks...

Share this post


Link to post
Share on other sites

Found a fix for posts with multiple images...

Replace

// output video

with:

      <a href="<?=$media['link']; ?>" class="instagram-item">
        <picture>
          <source media="(min-width: 55rem)" srcset="<?=$media['images']['standard_resolution']['url']; ?>">
          <source media="(min-width: 45rem)" srcset="<?=$media['images']['low_resolution']['url']; ?>">
          <source srcset="<?=$media['images']['thumbnail']['url']; ?>">
          <img src="<?=$media['images']['thumbnail']['url']; ?>" alt="">
        </picture>
      </a>

e.g.

<div class="instagram">
  <?php foreach ($feed as $media): ?>
    <?php if ($media['type'] === 'image'): ?>
      <a href="<?=$media['link']; ?>" class="instagram-item">
        <picture>
          <source media="(min-width: 55rem)" srcset="<?=$media['images']['standard_resolution']['url']; ?>">
          <source media="(min-width: 45rem)" srcset="<?=$media['images']['low_resolution']['url']; ?>">
          <source srcset="<?=$media['images']['thumbnail']['url']; ?>">
          <img src="<?=$media['images']['thumbnail']['url']; ?>" alt="">
        </picture>
      </a>
    <?php else: ?>
      <a href="<?=$media['link']; ?>" class="instagram-item">
        <picture>
          <source media="(min-width: 55rem)" srcset="<?=$media['images']['standard_resolution']['url']; ?>">
          <source media="(min-width: 45rem)" srcset="<?=$media['images']['low_resolution']['url']; ?>">
          <source srcset="<?=$media['images']['thumbnail']['url']; ?>">
          <img src="<?=$media['images']['thumbnail']['url']; ?>" alt="">
        </picture>
      </a>
    <?php endif; ?>
  <?php endforeach; ?>
</div>

 

 

 

Share this post


Link to post
Share on other sites

Does anyone know if it's possible to get the standard resolution image as square rather than non-square at all?

Share this post


Link to post
Share on other sites

Is there any plans to update this to work with new instagram Graph API, as the plugin stopped working as support for the /users/{id}/media/recent has been deprecated as of the 4th April 2018

Share this post


Link to post
Share on other sites

Cool to have a Module set up for this @justb3a! Cheers! 😄

I've been reading the topic, but still have a question – not so much about the implementation, but more in options I guess;
In understand that it's connected to Sandbox users, but as I'm filling in one user, I take it it's not possible to fill in multiple users?

(either in the module-field, or chained in the getRecentMedia('user1, user2')?
...Just wondering, as I'm working with a collective that has multiple accounts.

Share this post


Link to post
Share on other sites

I see this notice:

[InstagramFeed]: No data was received for 'nome_user' (recentmedia).
[InstagramFeed]: No user 'nome_user.it' was found.

 I use the correct user name and I checked all the keys access and these are correct, also the token. I saw that the account registered the permission to use my app. So, I don't know maybe I miss something... What I can check ?

 

FIXED:

In the end I find that if I disable implicit OAuth and not force the signed requests everything works well. btw I don't know if is a good things!

 

UPDATE:

I still see this error in the log page every time some one visit the page:  [InstagramFeed]: No user 'xxx' was found.

The page work well, but why I see this error and how I can delete it?

Thank you

Share this post


Link to post
Share on other sites

Is there a way to get media with a certain tag limited to one user with this module. Have tried chaining getRecentMediaByTag() but I don't think that's possible.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Recently Browsing   0 members

    No registered users viewing this page.

  • Similar Content

    • By Robin S
      Another little admin helper module...
      Template Field Widths
      Adds a "Field widths" field to Edit Template that allows you to quickly set the widths of inputfields in the template.

      Why?
      When setting up a new template or trying out different field layouts I find it a bit slow and tedious to have to open each field individually in a modal just to set the width. This module speeds up the process.
      Installation
      Install the Template Field Widths module.
      Config options
      You can set the default presentation of the "Field widths" field to collapsed or open. You can choose Name or Label as the primary identifier shown for the field. The unchosen alternative will become the title attribute shown on hover. You can choose to show the original field width next to the template context field width.  
      https://github.com/Toutouwai/TemplateFieldWidths
      https://modules.processwire.com/modules/template-field-widths/
    • By horst
      Croppable Image 3
      for PW 3.0.20+
      Module Version 1.1.16
      Sponsored by http://dreikon.de/, many thanks Timo & Niko!
      You can get it in the modules directory!
      Please refer to the readme on github for instructions.
       
      -------------------------------------------------------------------------
       
      Updating from prior versions:
       
      Updating from Croppable Image 3 with versions prior to 1.1.7, please do this as a one time step:
      In the PW Admin, go to side -> modules -> new, use "install via ClassName" and use CroppableImage3 for the Module Class Name. This will update your existing CroppableImage3 module sub directory, even if it is called a new install. After that, the module will be recogniced by the PW updater module, what makes it a lot easier on further updates.
      -------------------------------------------------------------------------
       
      For updating from the legacy Thumbnail / CropImage to CroppableImage3 read on here.
       
      -------------------------------------------------------------------------
       
    • By MoritzLost
      UPDATE: I have published a stable version of this module!
      Discussion thread:
      Github: https://github.com/MoritzLost/TextformatterPageTitleLinks
      ---
      Hello there,
      I'm working on a tiny textformatter module that searches the text for titles of other pages on your site and creates hyperlinks to them. I'm not sure if something like this exists already, but I haven't found anything in the module directory, so I wrote my own solution 🙂
      It's not properly tested yet and is still missing some functionality I would like to implement, so at the moment it should be considered in BETA. Features include limiting the pages that will get searched by template, and adding a custom CSS class to the generated hyperlinks. As I'm writing this I noticed that it will probably include unpublished and hidden pages at the moment, so yeah ... it's still in development alright 😅
      You can download the module from Github:
      https://github.com/MoritzLost/TextformatterPageTitleLinks
      There's some more information in the readme as well.
      Anyway, let me know what you think! I'm happy about any feedback, possible improvements or ideas on how to improve the module. Cheers.
    • By blad
      Hi guys!
      I just uploaded a module to explore files based on elFinder. By default it will show the "Files" folder.
      Screenshots:

      Video:
       
      To do:
       More options To fix:
       The function of rotating or scaling an image fails  Image editors V 1.01 (view issue)
      Fixed the bug working with the Multi-Language support ( translation of folders ). Fixed the name of elfinder.en  Github:
      https://github.com/LuisSantiago/ProcessElFinder/
      I hope you like it.
    • By BitPoet
      I'm really in love with FormBuilder, but the one thing missing to match all my end users' expectations were repeatable field groups. Think repeaters, in ProcessWire terms. Our primary application of PW is our corporate intranet, so "lines" of fields are quite common in the forms I build. We have all kinds of request forms where the information for a varying number of colleagues needs to be entered (from meal order to flight booking request) and where it is simply impractical to send a form for each, and I don't want to clutter my forms with multiple instances of fields that may only get used ten percent of the time.
      That's why I started to build FormBuilderMultiplier (link to GitHub).
      What it does:
      Adds an option to make a regular Fieldgroup repeatable Lets you limit the number of instances of a Fieldgroup on the form Adds an "Add row" button the form that adds another instance of the Fieldgroup's fields Adds a counter suffix at the end of every affected field's label Stores the entered values just like regular fields Makes the entered values available in preview and email notifications Supports most text based fields, textareas and selects (really, I haven't had enough time to test all the available choices yet) What it doesn't do (yet):
      Support saving to ProcessWire pages (i.e. real Repeaters) I haven't tested all the validation stuff, Date/Time inputs etc. yet, but since I'm utterly swamped with other stuff at work, I didn't want to wait until I have it polished. Any feedback is welcome. There might also be some issues with different output frameworks that I haven't encountered yet. The forms I work with mostly use UIKit.
      Status:
      Still alpha, so test well before using it in the field.
      Known issues:
      When rows are added, the form's iframe needs to be resized, which isn't completely clean yet.
      How it works:
      The Fieldgroup settings are added through regular hooks, as is the logic that adds the necessary field copies for processing the form and displaying previews.
      "Multiplied" field instances are suffixed with _NUM, where NUM is an incremental integer starting from 1. So if you have add two fields named "surname" and "givenname" to a fieldgroup and check the "multiply" checkbox, the form will initially have "surname_1" and "givenname_1" field (I'm still considering changing that to make the risk to shoot oneself into the foot by having a regular "surname_1" field somewhere else in the form less likely).
      When a "row" is added, the first row is cloned through JS and the counter in the fields' IDs, names and "for" attributes as well as the counter in the label are incremented before appending the copies to the Fieldset container in the form.
      To keep backend and frontend in sync, a hidden field named [name of the fieldset]__multiplier_rows is added to the form. Both the backend and the frontend script use this to store and retrieve the number of "rows".
      ToDo:
      Naturally, add the option to store the data in real repeaters when saving to pages. Do a lot of testing (and likely fixing). Make a few things (like the "Add row" button label etc.) configurable in field(set) context. Add a smooth API to retrieve the multiplied values as WireArrays. The mandatory moving screenshot: