A couple of years ago I made a video of all my flickr videos in the style of the now dead pummelvision service.

I dug out the script tidied it up a little, and made the above video with my 2016 photos.

I uploaded the script in the unlikely event that someone else would want to do something like this. It is not a thing of beauty, I am well out of my depth and just type and test. The script need ffmpeg on your computer (I’d guess mac only as it used sips to resize images) and a Flickr API key.

The script also leave you with up to 500 images in a folder. Before I deleted them I made a montage and averaged them using imageMagick

montage -mode concatenate -tile 25x *.jpg out.jpg which is the featured image on this post.

and

convert *.jpg -average aver.jpeg

aver

I guess all that the average proves is that most of my photos are landscapes, given the hit of a sky…

‘Points & grunt’ or ‘eloquently instruct’

A couple of weeks ago Oliver Quinlan was a guest on Radio EDUtalk. The thing that stuck in my mind the most from the episode was this idea. Oliver has now written a bit more about it on his blog.

The command prompt allows you to use the power of language to interact with a computer. In comparison, clicking around in a  desktop environment is akin to pointing and grunting. Getting people to do things by pointing and grunting is OK at first, but as children we naturally put in the effort to learn how to move beyond this to get things done quicker, more precisely and more elegantly.

‘Points & grunt’ or ‘eloquently instruct’ – Language & computers – Oliver Quinlan

I’ve often struggled to explain, even to myself, why I enjoy using the terminal application. This is the best elevator pitch I’ve heard.

I am no command line expert, but I end up using it for small things or interesting experiments most days. I guess my first exposure was on the introduction of Mac OS X in 2001. Af first it was something to use occasionally for system settings that could not be done in other ways. Slowly over the last 15 (eek!) years I’ve used it a bit more and slowly learned. It is not something you need to be an expert to get use from. For example Batch Processing MP3 files is probably not eloquent but it saved me a huge amount of time.

For most of the time I’ve been using the terminal I though of it as a somewhat old fashioned process. It is now fairly obvious that it will be in use for some time yet. This week the news that Microsoft is bringing the Bash shell to Windows 10 brought that home.

It is worth mentioning that there is an amazing amount of information on using the command line on the web. I can’t remember when a search has failed to help me learn.

Elsewhere Oliver recommended Conquer the Command Line as a good resource to getting started. From the MagPi Magazine available as a free PDF.

 

Featured image: my own, grabbed with LICEcap.

twitter-lists-resized

Another interesting idea from Alan. I read his post: Measurement or [indirect] Indicators of Reputation? A Twitter List / Docker / iPython Notebook Journey and then Amy’s List Lurking, As Inspired by Alan Levine.

The idea is that you can find out something about a person/yourself by the twitter lists they are listed in.

Alan went down a nice rabbit hole involving Docker & iPython. This seemed as if it might be a mite tricky. I think I’ve messed up my mac’s python setup by trying to get iPython Notebooks working before. Alan’s approach is a lot more sensible, I hope to re-visit it later. In the meantime I though I would try out something a little simpler. This approach is simple sorting and manipulating a text files. Mostly with, in my case, TextMate’s sorting and a bit of bash in the terminal.

So:

  1. I went to the list on twitter and copied all of the text on the page.
  2. Pasted that into a text document
  3. Manually cleaned up the bits above and below the list (a couple of selections and backspace)This produced a list that repeated the following pattern:
    • Name of list by Name of lister
    • Subtitle/description of list, sometime not there
    • Number of Members
  4. I sorted the list. This grouped all of the lines with number Members together, a couple of lists that started with or a number above.
  5. Select all the member lines and delete
  6. there were a lot of lines Visit http://twibes.com/education/twitter-list to join the top education Twitter people as a description so easy to delete them too.
  7. I saved this file as a file list1.txt
  8. What I was looking for was the lines that were lists names not descriptions, and I wanted the lists rather than the names of the people who made the lists. So I made the lists into two columns by replacing by with a TAB and saved the file.
  9. We then sort the list by the second column using the terminal sort -k 2 -t $'\t' list1.txt > list2.txt 1 As the second column is empty those lines float to the top and can easily be deleted.
  10. Next we cut the first column out which gives me a list of the list names: cut -f 1 list2.txt | sort > list3.txt

So I now have a list of the the twitter lists I am a member of. I can use that in wordle.net to get a word cloud. I made a few, removing the most popular words to see the others in more relief. I’ve tied them together in a gif at the top of this post.

Amy’s approach was to look for interesting list name, here are some of my favourites (I’ve added descriptions when they are there):

  • awesome rasbperrypi peopl
  • audiophiles
  • Botmakers: Blessed are the #botALLIES
  • Digital cool cats: Digital humanities/learning tech/cool stuff peeps
  • People I met through DS106
  • not to be messed with
  • Coolest UK Podcasters
  • Very funky Ed Blogs

Of course these are not the most numerically but they are, to me, the most flattering;-)

On this 10th birthday of twitter you might enjoy a quick browse through the name of the lists you are a member of.

Update
Sleeping on this post I’ve had a few more thought.

Of course after the step where I replaced the word by with a tab I could have pasted the text into excell or numbers and taken it from there rather than using the commandline.

I woke up this morning thinking about Alan’s post and using docker to run iPython notebooks and had a mini revelation. I’ve often ran into trouble and messed up, at least short term, my computer. Trying things that I don’t really understand. I remember one instance where I got into a right mess with iPython by blindly installing.

Running things in a virtual machine would have a great advantage here. Likewise I’ve had things break after a system update. I think, going forward, when doing things above my pay grade I’ll change my approach a bit. I am now wondering why I was trying to get the iPython thing running in the first place.

Overall I’d have learnt a bit more by following Alan’s recipe directly. There is also the json think he turned away from, could be an interesting rabbit hole…

1. sort -k 2 -t $'\t' list1.txt > list2.txt THis sorts by the second column, k, key and uses a tab, $’\t’ to separate the columns

A few years back I used pummelvision to make a video of all of my flickr photos. Pummelvision was an online service where you pointed it to your flickr stream and it built a video for you and posted to vimeo. It could also take input from tumblr and facebook.

I though it might be interesting to make a similar video for my photos this year. However going to look for pummelvision drew a blank, the company had closed. I then though It might be interesting to try to create a similar video. From my memory and looking at my old video, pummelvision made a video with no transitions and very fast. As far as I remember it just used one tune. I downloaded my old video from vimeo and extracted the audio file using QuickTime pro. I took a guess that the frame rate was about 6 photos per second.

Grabbing the images

I guess there a few ways to grab all your photos from flickr, but this is how I did it. If I was doing it frequently I’d look into automating it, but this was a once off, or once a year if I do it again.

Flickr’s api would allow you to do this, but it seemed a bit excessive to try and write a pile of code. The Flickr API has a section to test all of the command so I headed to: Flickr Api Explorer – flickr.photos.search. There I put my own user ID in, set the min_date_taken and max_date_taken, increased the per_page to 500 and added the large photo url to the extras field.

This produced an xml file will all the information:

Flickr xml

I then extracted the 397 urls from the text. There will be many ways to do this, but I am experimenting with the Sublime Text application at the moment, it found & selected all of the https: occurrences and the with cmd-shift-right arrow expanded the selection to the quotes. One copy got all of the files!

Once I had a list of urls I edit those so that each line was:

curl "https://farm4.staticflickr.com/3897/14598292323_ae6462fa07_b.jpg" > image_183.jpg

With the numbers out the image sequential and padded to 3 characters, eg image_001.jpg, image 002.jpg etc. I also numbered then in reverse so the oldest photo would be first.

I saved this text as a file, dl.sh and moved into the terminal:

cd path/to/thefolder
chmod +x dl.sh
./dl.sh

This code set the dl.sh file to executable and then ran it, the terminal filled with text and the folder with images. Curl is the command-line tool for downloading files.

Sizing images

Downloading the large size gave a folder full of images but some where landscape and some portrait, ie 1024 × 768 or 768 x1024 I need the images to all be the same size. So i used the sips utility to first resize them, sips --resampleHeight 768 *.jpg, then to pad the portrait ones: sips --padToHeightWidth 786 1024 *.jpg

Which gives me pictures like this for the portrait ones:

Img 076 toad

Making the movie

I discounted using iMove, moviemaker or the like as I wanted something quick (not necessary quick this time…) and that could be automated. I am also not sure in iMovie can show as fast as 6 per second. (Update, a quick look shows iMove can set speed to fractions of a second per frame.)

I though of a couple of ways to make the move, using Quicktime pro or ffmpeg. Quicktime pro proved the easiest option, opened the app and File -> Open Image sequence…, choose 6 frames per second, then all I had to do was save the movie.

Unfortunately Quicktime pro has been replace by Quicktime and it is a bit of a bother to get your old QT pro working if you had paid for a license. So I though I’d figure out ffmpeg too.

With great power comes great complexity

FFmpeg is A complete, cross-platform solution to record, convert and stream audio and video. It is a command line application and has a lot of variables. I can usually find out the right command with a bit of google. This one took quite a lot of google and failures. Most of these failures came from me trying to set a framerate, which lead to skipped frames. Eventually I dropped the idea of using the framerate options and got a very (too) fast video with this:

ffmpeg -f image2 -i IMG_%03d.jpg -c:v libx264 -pix_fmt yuv420p out.mp4

Note to self, in the -i, iput option IMG_%03d.jpg means all the images with 3 numerals, eg 001, 002… 375

I then slowed it down a little with this:

ffmpeg -i out.mp4 -filter:v "setpts=4.0*PTS" 2014-flickr-show.mp4

And added the audio:

ffmpeg -i 2014-flickr-show.mp4 -i pum.mp3 -map 0 -map 1 -codec copy -codec:a aac -strict experimental -b:a 192k -shortest 2014-flickr-show-audio.mp4

It took a fair bit of google to get the audio right too, the -codec:a option seems to sort things out.

Whys and Wherefores

As noted above, I could have done most of this with iMovie. But by using ffmpeg or QT pro, I’ve the opportunity to play, learn and possibly end up with an automated system. It would seem well within the realms of possibility to have a script that used the flickr api to download a bunch of images, perhaps for a year or with a tag and make a movie from them.

I’ve now figured out how to do most of this by piecing together the above fragments and finding out a bit about loops and renaming files, but I’ve no idea of how to create a bash script that will replace my hard coded tags, usernames ect with input, more to learn.

Once you have a lot of jpgs

You might as well do other things with them: Flickr 2014