Mostly Harmless

Mostly about my amusement

Scrape IFTTT Instagram media into WordPress

I’m a photography nut. I love using my DSLR, I’m mad about film cameras and I use Instagram all the time. I’m also a WordPress user and I have a problem with Instagram: the photos are not preserved on my own site. To fix that I installed the amazing DsgnWrks Instagram Importer plugin and I’ve been using it for years.

While testing WordPress 4.6 beta the plugin stopped working for me. I raised a support topic and I am convinced that my setup has changed. I do not doubt that the problem is mine somehow.

I’m not proficient enough to locate where the break is and I really wanted to share my Instagram photos via my blog. So I created another WordPress account on my photo blog and with my IFTTT account I used this “Instagram to Blog” recipe. That worked, but it loaded the image from Instagram and used the IFTTT URL shortner for link.

I really wanted a copy of my photo on my own server.

I know less about IFTTT recipes than I do the plugin. But I do know how to use WordPress actions and filters so I wrote a small plugin to do the following.

  1. Via the publish_post action look in the content for Instagram image sources and extract those URLs. The wp_extract_urls function is made for this.
  2. When found import those into the WordPress Media Library and attach it to the post using media_handle_sideload.
  3. Make that new attached image the featured image for the post.
  4. Look for IFTTT short URLs and expand them using a simple function I wrote.
  5. Once that’s done then publish the post.

You can view the code via this Gist link. I have that saved and activated as a plugin on my photo blog.

This isn’t the ideal approach for me but it works. The IFTTT recipe successfully publishes a post when I submit a photo to my Instagram account. I’m taking that data and scraping images from another web site. Generally speaking that’s not cool but until I find a cleaner way to do it I’ll have to live with it.

Screen Shot 2016-08-07 at 9.53.58 AM

Firefox and TLS

Firefox is weird. In a forum conversation (which went so off topic but that’s alright) the following was reported to me. When you visited my site in Firefox, you get a warning about being insecure.

Huh. That’s odd and a little embarrassing. I mean, I’m a network security professional so you can see how that would be awkward. 😉

So I looked at my site on the Qualys SSL Labs page and got this result.

Screen Shot 2016-08-07 at 9.35.58 AM

Which is good but Firefox still didn’t like my site.

A few weeks ago I was playing with my nginx config and something I did made Firefox unhappy. I’m pretty sure I munged the cypher suite in my poking and prodding.

Fair enough, I used the configs from a site that does work in that browser and tonight I’ll play around to see what I broke. In the meanwhile my site is encrypted and viewable in Firefox.


Confirmed: I’m not getting the PC back anytime soon

This may fall under category of “bad parenting” but probably not. I hope not. Just don’t tell Lily, OK?

My daughter saw all of the fun her brother has playing Team Fortress 2 and wanted in on the action. The kitchen iMac doesn’t play games very well but my PC does. So I set her up on an account there, logged her into Steam and the rest was history.

She picked up TF2 quickly. Then she saw that she could play Borderlands 2, Torchlight II, Portal 2 (is there a “two” thing going on?) and spent hours on the PC.

Her normal activity is drawing on the iPad. She’s really good and has developed a real skill. Video games are normally the domain of her brother. But they seem to like playing on the same TF2 server. When they’re on the same team she plays the medic and supplies health to the other players. When she’s on different teams she plays the scout.

She spent the whole evening playing and I had no clue. It wasn’t till I went to turn off the light in the office that I saw her. Her mother would not be happy had she walked into the room.

There is hope that the has inherited Lily’s Adult Supervision™ genes. I told her that I’d get a third PC for her, probably from Costco. Her answer?

That’s wasteful. I can share yours when you are not using it.

I have no idea where she picks that stuff up. I’ve certainly never encouraged that sort of behavior.


I might be overthinking my son’s TF2 server

My son plays Team Fortress 2 a great deal and wanted to host his own server with mods for him and his friends to play on. Rather than using his PC for that I created an account for him on the Linux basement server.

I downloaded the Linux dedicated server, did a little port forwarding, a few small scripts with screen and POOF! he can now run and manage his own TF2 server. I need to email him some troubleshooting steps but it’s pretty basic even with SourceMods. It works.

Except I’m using FIOS and my IP addresss changes from time to time. The basement server does update it’s DNS entry via Namecheap but TF2 favorites work by IP address.

When the address changes the port forwarding still works but my son’s friends can’t find the server. The IP address changed and their favorite is gone. That sucks.

IP Tables to the rescue

I happen to have a fixed IP address on the Internet. This web server. I don’t have to run the dedicated server on my VPS, I just have to port forward TCP and UPD ports 27015 to the FIOS router.

  1. My basement server keeps the dynamic DNS name updated with the external IP address.
  2. My web server runs script every hour to see if the IP address changed for that DNS entry.
  3. If it did change then it deletes just the old iptable rules and re-add them with the new IP address.

I found a useful bash script for targeting specific rules in named sections of iptables. Why re-invent the wheel? 😉

Here’s the script.

I registered the server on Gametracker and the banner works fine.

It works and while the server’s actual IP address changes this will let others find my server. I only change my web server’s host once every few years so this will remain in place for a long time.

They like Minecraft maps. I don’t know why but that’s alright.



HG Char’s Zaku II Origin Version

Last weekend I completed assembling a 1/144 scale Zaku II model and today I quickly detailed and applies some decals. Here’s some photos of the completed model.

It’s a nice Zaku II. I’ll build a Master Grade model next.

Another Char’s Zaku II model

I completed the assembly of the HG Char’s Zaku II (Origin version). It came out OK and the parts have a lot of detail. It’s a 1/144 scale version and didn’t take long to put together.


The next thing I’ll do is add detail lines and the decals.


How to use UpdraftPlus when The Bad Thing™ happens

I am in the process of handing over a site to someone who’s not used WordPress before and doesn’t necessarily know where what lives and how. I thought it would be a good idea for me to document how to use the free UpdraftPlus plugin.

I use the commercial version of this plugin because it is fire-and-forget for my multisite installation. But if you are running a standalone installation of WordPress then the free version is a good suitable option.

Read More

Wait a minute. Beyoncé is black?

Oh, Saturday Night Live. Sometimes you miss it but this you’re right on target.

I should start DVR’ing this season.

Did I mention I like WP-CLI?

I’ve written praise for wp-cli before but it’s a toy that will never get old for me.

I was working on this problem for a friend and I needed to create a test multisite installation. I have a domain I can use aside from my main one so I setup another nginx virtual host, setup the DNS entries and used Let’s Encrypt to obtain legitimate X.509 certificates.

For creating the DB and WordPress config I used CLI commands.

$ mysql -u root -p

create database leeloodallas;
grant all privileges on leeloodallas.* to 
"brucewillis"@"loc1alhost" identified by "5oM3U36ul$tringH3re";
flush privileges;

$ wp core download

$ wp core config --dbname=leeloodallas \
--dbuser=brucewillis \
--dbpass=5oM3U36ul$tringH3re \
--extra-php <<PHP
define( 'WP_DEBUG', true );
define( 'WP_DEBUG_LOG', true );
define( 'WP_DEBUG_DISPLAY', false );

$ wp core install --admin_user=yourlogin \
--admin_password=Y3a2n0tHaP3n1ng \ \ \
--title="Leeloo Dallas Multisite"

$ wp core multisite-convert --subdomains

Yes, all the passwords and IDs are changed.

When I get into deep water (and I did) I just rm * -rf in the virtual host’s directory and in mysql drop database leeloodallas; and do it all over again.

The only thing different from other times is the wp core multisite-convert --subdomains command. I already have cookie cutter nginx configs and DNS is fire and forget. Once I had the vhost setup the Let’s Encrypt commands (also scriptable) was trivial.

WP-CLI is cool and scripting this is such a time saver.

“I’m not Matt”

This is my new favorite thing today.

I would pay money to see the next State of The Word with stormtroopers on stage. 😉

Page 1 of 95

Powered by WordPress & Theme by Anders Norén

%d bloggers like this: