Installing youtube-dl on a Mac to watch YouTube videos when working offline

My work pattern at the moment means that I’m spending a lot of time travelling on trains up and down the country (in fact, as this post is published, I’ll be somewhere between Bedford and Sheffield). A combination of fatigue and motion sickness means that this isn’t always a good opportunity to work on the train but it is potentially an opportunity to listen to podcasts or, unlike when I’m driving, to watch some videos. Unfortunately, travelling at 125 miles an hour with a varying quality of 4G data signal doesn’t always lend itself well to streaming from YouTube, etc.

That’s where youtube-dl comes in – I can download videos to my MacBook before I leave home, and watch at my leisure on the train. So, how do you get started?

Well, the Mac App Store website helped me. Following advice there, I issued two commands in Terminal to first install the HomeBrew package manager for MacOS, and then to install youtube-dl:

ruby -e "$(curl -fsSL" < /dev/null 2> /dev/null

brew install youtube-dl

So, with youtube-dl installed, how do I use it? The youtube-dl file has lots of information but it’s not exactly easy to digest.

I found that:

youtube-dl -F youtubeurl

would give me a list of available video formats for a given URL and reading about YouTube media types led me to the very important number 22 for MP4 video at 720p with H.264 encoding and AAC audio. That should play on a wide variety of devices (including Quicktime on my Mac).

Next, to download:

youtube-dl -f 22

(this URL is the CloudTechTV channel).

That command brought down all of the videos in the channel but I can also download individual episodes, for example:

youtube-dl -f 22
I can do something similar for other YouTube videos/channels (and even for some other video services) and build a library of videos to watch on my journeys, without needing to worry about an Internet connection.

“You need to work less”. Musings on finding the elusive work-life balance

“You need to work less”, said David Hughes (@davidhughes) as we were discussing why I carried a power supply with my Surface Pro. This was in response to my observation that the device will get me through the work day but not through travel at each end as well.

“Actually, you have a point”, I thought. You see, weekdays are pretty much devoted to work and pseudo-work (blogging, social media, keeping up to date with tech, etc.) – except for meals, sleep, the couple of hours a week spent exercising, and a bit of TV in the evening.

David commented that he reads – rather than working – on the train (I tweet and email but really should read more). And when I asked how he organises his day, he introduced me to ToDoIst. It seems that having a task list is one thing but having a task list that can work for you is something else.

Today was different. I knew I wanted to get a blog post out this morning, finish writing a white paper, and find time to break and meet with David in my favourite coffee shop. I’m terrible at getting up on working-from-home days (more typically working well into the evening instead) but I had managed to be at my desk by 7am and that meant that when I left the house mid-morning I’d already got half a day’s work in. For once, I’d managed some semblance of work-life balance. The afternoon was still pretty tough and I’m still working as we approach 7pm (my over-caffeinated state wasn’t good for writing!) but I met my objectives for the day.

Now I’ve added ToDoIst to my workflow I’m hoping to be more focused, to wrap up each day and set priorities for the next. I need to stop trying to squeeze as much as I can into an ever-more-frantic existence and to be ruthless with what can and can’t be achieved. Time will tell how successful I am, but it feels better already.

Short takes: super-sized Windows desktop icons; LastPass multifactor authentication; MTP on Windows 10 1607

A collection of short posts that don’t justify their own blog post!

Fixing super-sized Windows desktop icons

Mostly, I don’t get on with track pads – there’s just something about them that I find awkward and before I know it the cursor is shooting off somewhere that I don’t want it to be, icons are being resized, or something equally annoying.

I recently found myself in a situation where an errant trackpad response to my hot hands hovering over it whilst typing had left me with super-sized desktop icons but I couldn’t work out how/why. Luckily this Lifehacker article helped me put things right – a simple Ctrl + mouse scroll got my icons back to the size they should be…

LastPass Multifactor Authentication

For many years, I’ve used LastPass as my Password Manager. I don’t normally reuse passwords and have gradually been increasing the complexity of my passwords but these days I don’t know the password for the majority of the sites I visit – LastPass fills it in for me. The one weakness in all of this though is my master password for LastPass. It’s a long and secure passphrase but what if it was compromised? Well, now I have multifactor authentication enabled for LastPass too. It’s really simple to set up (just a couple of minutes) and options include Google Authenticator as well as LastPass’ own Authenticator app.

MTP not working on Windows 10 anniversary update (1607)

My son has an Elephone P9000 smartphone, running Android Marshmallow.  He was struggling to get it working with our family PC to import his pictures until I found this forum post that explains the process. It seems that, on the Windows 10 Anniversary Update (1607), the Media Transfer Protocol (MTP) driver needs to be manually installed:

  1. Go to C:\Windows\INF
  2. Type “wpdmtp.inf” in search bar provided to the right of the address bar in Windows.
  3. Once you found it, just right click on it and select install. It will take a very few seconds.
  4. Connect your device to the PC.

Bulk renaming digital photos for easier identification

Managing digital content can be a pain sometimes. Managing my own photos is bad enough (and I have applications like Adobe Lightroom to help with my Digital Asset Management) but when other family members want help whilst sorting through thousands of photos from multiple cameras to make a calendar or a yearbook it can get very messy.

For a long time now, I’ve used a Mac app called Renamer to bulk rename files – for example, batches of photos after importing them from my camera.  The exception to this is my iPhone pictures, which Dropbox rather usefully renames for me on import using the date and time, suffixing as necessary to deal with HDRs, etc. I only have a couple of gigabytes on Dropbox, so I move the renamed files to OneDrive (where I have over a terabyte of space…). The problem with this is that there needs to be enough space on Dropbox for the initial import – which means I have to use a particular PC which recognises my iPhone and remembers which photos have previously been imported. If I use another PC it will try and re-import them all (and fail due to a lack of available space)…

My wife has a different system. She also uses OneDrive for storage but has some files that have been renamed by Dropbox (to yyyy-mm-dd, some that have been renamed on import by something else (to yyyymmdd_hhmmsssss_iOS.jpg) and some that are just copied directly from the iPhone storage as IMGxxxx.jpg. My task? To sort this lot out!

Multiple images with the same time stamp

We decided that we liked the Dropbox name format. So that became the target. I used Renamer to rename files to Year-Month-Day Hour.Minutes.Seconds.jpg (based on EXIF file data) but the presence of HDR images etc. meant there were duplicates with the same time where a whole second wasn’t fine-grained enough. We needed those fractions of a second (or a system to handle duplicates) and Renamer wasn’t cutting it.

The fallback was to use the original filename as a tie-break. It’s not pretty, but it works – Year-Month-Day Hour.Minutes.Seconds (Filename).jpg gave my wife the date/time-based filename that she needed and the presence of the original filename was a minor annoyance. I saved that as a preset in Renamer so that when I need to do this again in a few months, I can!

Renaming digital photos in Renamer using a preset

No EXIF data

Then the files with no EXIF data (.MOVs and .PNGs) were renamed using a similar preset, this time using the modification date (probably less reliable than EXIF data but good enough if the files haven’t been edited).

Thousandths of seconds

Finally, the files with the odd format. Mostly these were dealt with in the same was as the IMGxxxx.jpg files but there were still some potential duplicates with the same EXIF timestamp. For these, I used progressive find and replace actions in Renamer to strip away all but the time a RegEx replacing ...... with nothing allowed me to remove all but the last three characters (I originally tried .{3}$ but that removed the 3 characters I actually wanted from the tail end that represent thousandths of seconds). One final rename using the EXIF data to Year-Month-Day Hour.Minutes.Seconds.Filename.jpg gave me yyyy-mm-dd – which was close enough to the desired outcome and there were no more duplicates.

What’s the point? There must be a better way!

Now, after reading this, you’re probably asking “Why?” and that’s a good question. After all, Windows Explorer has the capability to provide image previews, the ability to sort by date, etc. but it’s not up to me to question why, I just need an answer to the end-user’s question!

Using Renamer is reliant on my Mac – there are options for Windows like NameExif and Stamp too. I haven’t used these but it appears they will have the same issues as Renamer when it comes to duplicate timestamps. There’s also a batch file option that handles duplicate timestamps but it doesn’t use the EXIF data.

Meanwhile, if anyone has a script that matches the Dropbox file rename functionality (including handling HDRs etc. which have identical timestamps), I’d be pleased to hear from you!

[Update 1 January 2017: These Python scripts look like they would fit the bill (thanks Tim Biller/@timbo_baggins) and James O’Neill/@jamesoneill reminded me of ExifTool, which I wrote about a few years ago]

Tools for troubleshooting Outlook autodiscover

In my post last week about Office 365 and proxy servers, I mentioned issues with Outlook autodiscover.  These were not exactly easy to troubleshoot, often with multiple subject matter experts looking from different angles (network, client applications, Exchange, firewalls, etc.). During the process, we used a few tools (as well as examining the traffic hitting the proxy servers) and I thought I’d highlight them here (if only for my own future reference):

Skype account unlocked with the help of the registration timestamp in the client database

A couple of weeks ago, I wrote a post about trying to get my Skype account unlocked and the arcane questions I was being asked by Skype Customer Support. I’d been meaning to write that post for a while… and I’m glad I finally got around to it because John Buston (a former colleague from my days at Fujitsu) pointed me at some advice in the Skype Community that proved to be very useful indeed

The Skype client (which I still had access to on one of my PCs) uses an SQL database called main.db, found in %appdata%\Skype.  The SQLite browser can be used to view the contents of this database and locate the registration_timestamp in the Accounts table.

Registration timestamp inside the Skype client database (main.db)

Take the number from the registration timestamp, multiply it by 60 and you’ll have the Unix time (the number of seconds since 1 Jan 1970, UTC) from when you registered for Skype. Put that number into a converter (like this one) and you’ll have the exact time when you registered for your Skype account.

Armed with that information (and some more that I could guess, like the email address I used to register for Skype; plus some more that I knew, like my personal details and some names from my Skype contact list) and I was finally able to get my account unlocked.

Thanks again John!

Unable to boot from USB flash drive on a Lenovo PC (to install Windows 10)

Yesterday, I wrote about not having to wait for Windows 10 to be advertised to my PCs and downloading the software directly instead. Unfortunately, things didn’t turn out to be quite that simple.

Overnight, both the Windows 8.1 PCs in our house decided that Windows 10 was ready (I clearly need to be more patient) but my 10 year-old son wanted to perform the upgrade (he’s a trainee geek) so, I waited for him to come home tonight before we tried it out. Because I’d already downloaded the media I thought I could skip bringing almost 3GB down over my ADSL line and boot from USB but we had a little trouble along the way…

I’d prepared a USB flash drive from the Windows 10 .ISO file using Rufus but our family PC (a Lenovo IdeaPad Flex 15) didn’t want to boot from it.

First of all, I had to work out the boot menu key combination (F12) but, even then, the boot menu only wanted to boot from the network, or from the local hard drive. I checked the BIOS (F1 at boot) and USB boot was enabled. Following Lenovo support article HT076906 (How to enter Setup Utility (F1) or Boot Menu (F12) on a Microsoft Windows 8/8.1 preloaded PC), I tried various combinations to reboot the machine (including Shift+Shutdown for a full shutdown and Shift+Restart for Windows boot options) but nothing was helping to boot from USB.

I tried recreating my media using different partition schemes for UEFI but that didn’t work either. So I followed Lenovo support article HT078684 (Cannot Boot From a USB Key – Idea Notebooks/Desktops) to:

  1. Run cmd.exe with Administrator privileges.
  2. Insert the target USB boot media device into an available USB port.
  3. Type:
    list disk (and make note of the disk number of the target USB drive)
    select disk n (where n is the target USB drive noted earlier)
    create partition primary
    format fs=fat32 quick
    list volume
  4. Copy the entire contents of the Windows ISO onto the newly created UEFI boot media.

After this, I successfully restarted the PC, using F12 to access the boot menu and could boot from USB (i.e. the flash drive was available in the menu).

Unfortunately, after all that effort, Windows 10 wanted a product key to install (which I didn’t think I had on a PC that came with Windows pre-installed), so I went back to an in-place upgrade using Windows Update.

Installing Windows 10 via Windows Update

It’s been a few years since I regularly built PCs and it seems my desktop skills are a little rusty… since then, I’ve discovered a number of utilities for reading the product key of my Windows installation (which is also stored in the BIOS) – the tool I used is Windows Product Key Finder, available for download from CodePlex.

Office Remote for Windows Phone

Over the next couple of days, I’ll be attending a “presentation masterclass”.  My last formal training in this area was twenty years ago, as a graduate trainee at ICL, so I’m hoping things will have moved on considerably since then in terms of the techniques and advice on offer!

Anyway, attending the course reminded me to blog about something I was introduced to last year by my colleague, Warren Jenkins.  Those of us with Windows or Android phones can use the Office Remote app to control PowerPoint – no need for a “clicker” – just a phone (running Windows Phone 8.x with the Office Remote app – or  Android 4.0.3 or later with the Office Remote for Android app) and a Bluetooth connection to a Windows PC (Windows 7 or 8.x), with the Office Remote PC plug-in for Office 2013.

Once Office Remote PC is installed, and the PC is connected to the phone, open the Office file that you would like to present and, on the Office Remote tab, select Office Remote > Turn On.

Then, go to the phone and make sure it’s running the Office Remote app and, if all is working well, you’ll see a list of open Office files and you can pick the one to present.  For example, in PowerPoint you can see speaker notes and control the presentation, with options to view in slide sorter mode or to use a virtual laser pointer to highlight points on the slide. You can also control other Office applications (e.g. interacting with data and switching between worksheets in Excel, or jumping around between headings or up/down a document in Word), but I’ve only used it in anger with PowerPoint.

More details are available on the online help page.

Plantronics Voyager Legend not connecting with PC (but fine with phones) – re-pairing required

A few weeks ago, I wrote about a couple of Lync accessories I use every day – including my Plantronics Voyager Legend (BT300M). Since then, I’ve successfully paired the headset with both Windows and iOS phones (so presumably Android will work too) using their native stacks, although I use the supplied Bluetooth dongle on my company-supplied Windows 7 laptop.  I’m still impressed with the headset and the battery life is great too as it automatically goes into standby when I forget to turn it off (although it’s often sitting on its charging stand).

Unfortunately, I did find one day that my headset had “fallen out with” my laptop and whilst it would happily connect to the phones I couldn’t use it for Lync (VoIP) or CUCILync (VoIP breakout to our Cisco phone system and beyond to the PSTN). After some frustration of taking out and re-inserting the dongle in various USB ports, etc. I found an article on the Plantronics Sounding Board that gave the answer:

“Try pairing the headset to the dongle. Typically you would turn your phone(s) off to make sure they don’t  interfere in the process. Then press the call button on the headset until you go into pairing mode and insert the dongle in the PC, it should pair.”

Interestingly, the article also referred to a tool I’ve not come across before called DriveCleanup which can remove orphaned registry items related to non-present USB devices (forcing the dongle to set up the stack again on insertion). I didn’t need this but it could be a useful tool (there are several others on the page too).

Incidentally, at a Lync event at Microsoft last week, I tried out the Plantronics Backbeat PRO wireless noise cancelling headphones with microphone and they will be great for listening to music in a shared office but still being contactable for calls. Having upgraded my phone this week, I need to do some saving before I can buy more gadgets, but these could be on the list…

Short takes: Shrinking Outlook OSTs; locating and removing “stale” Yammer users; editing GPS tracks

Some more snippets of blog posts…

Reducing the size of your Outlook offline store

Tim Anderson commented recently that he’d noticed how recreating his Outlook offline store (.OST) file was more effective than compressing it.  I decided to give mine a go (especially as my recently shrunken Inbox means there wouldn’t be much to re-sync).

Unfortunately, my IT admins appear to have locked down my configuration via group policy so I couldn’t disable/re-enable cached mode. @p3rfact came up with a suggestion that worked though:

As it happens, my file was not that large – although recreating it did reduce the size by around 25%.

Clearing out users from Yammer

Yammer  networks can be synchronised with Active Directory using Yammer Directory Sync but ours is not (for various reasons). There is a pretty simple workaround though for clearing out users from Yammer who have left the company (credit due to @AlanPurchase for working this one out):

  1. From the Network Admin view in Yammer, export a .CSV file with all the users in the network.
  2. Open the .CSV file in Excel and filter on the state field to show active users and on the email field to include domains that you are interested in (for example, I only wanted those in our UK organisation).
  3. Cut and paste email addresses into a new email in Outlook, then use Ctrl+K to resolve the names against the Global Address List. Anyone that isn’t in the GAL will not have their email address resolved.
  4. In Yammer, remove each of the users that are no longer in the organisation – you have the option to remove their posts or leave their posts and remove the account (more details in Microsoft knowledge base article 2820235).

GPS Track Editing

I’ve blogged before about how I log all of my bike rides, runs, etc. – it’s sad, but I like to see where I went on a map – and to know how I performed. Every once on a while, things go wrong though – like one time last summer when my Garmin suddenly decided I was several miles away and the route I was following became nonsense. The only answer was to reset the thing and start tracking again (breaking my ride into multiple tracks).

I found a free GPS Track Editor that helped me to merge/edit tracks (directly editing the XML in GPX files is a chore) and create something that at least represented the route I was on (although it does have one section that is a dead straight line “joining the gap” between my two usable tracks – it should actually follow the road via Whittlebury)!