Moving Files By Name

…where the name is made up of the date and time.

I’ve got a lot of image files that I tend to dump into whatever directory I feel like.
This simple python script will create directories and move files around based on the file name, as long as the filename follows the following format YYYYMM. Bascially as long as the first 6 characters are integers it should work. In my file system that’s fine In yours the same may not be true. If the first 6 characters is not an integer then it will leave them alone.

Notice I’m not checking for JPG/MP4 files only; I’m not checking that the year or month are valid values; I’m not checking the EXIF values and basing it on them if the filename is not valid; there are lots of really cool things I could do as well but I don’t need those because that’s how my files are set out. I’m not building in lots of features that don’t touch my use-case.

import os
import shutil

path = '/home/mike/TestPython/'
os.chdir(path)

for file in os.walk(path):
    for name in file[2]:
        year = name[:4]
        month = name[4:6]
        if name[:6].isdigit():
            if not os.path.exists(year):
                os.makedirs(year)
            if not os.path.exists(year + "/" + month):
                os.makedirs(year + "/" + month)
            src = file[0] + "/" + name
            dst = path + year + "/" + month + "/"+name
            shutil.move(src, dst)

Once you’ve moved all the files into their new homes delete all the empty directories. This code has been ever so slightly modifed from this StakOverflow post. It was modified for Python 3, by adding brackets to the print syntax:

import os
currentDir = '/home/mike/TestPython/'

index = 0
for root, dirs, files in os.walk(currentDir):
    for dir in dirs:
        newDir = os.path.join(root, dir)
        index += 1
        print (str(index) + " ---> " + newDir)
        try:
            os.removedirs(newDir)
            print("Directory empty! Deleting...")
            print(" ")
        except:
            print("Directory not empty and will not be removed")
            print(" ")

Finding duplicate image files.

I love my phone. Having it means that I am rarely without a camera to take pictures of inane and awesome stuff. However I have very bad habits end up copying them more than once and putting them into all sorts of funny places. As a result my “Pictures” has a lot of duplicates. To clear up the duplicates I use a program called FSLINT.

Firefox: Play BBC New videos without installing flash.

Go here: https://unop.uk/dev/how-to-watch-bbc-news-videos-on-a-desktop-without-flash/

and here: http://www.howtogeek.com/113439/how-to-change-your-browsers-user-agent-without-installing-any-extensions/

basically create a new item in about:config called general.useragent.override and paste

Mozilla/5.0 (Linux; Android 4.4.4; en-us; Nexus 5 Build/JOP40D) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/42.0.2307.2 Mobile Safari/537.36

into it.

Installing steam on fedora 22

I had some trouble once I’d installed steam. It would fail to find the swrast driver. After some searching I found that the following command pulled through the required libraries:

sudo dnf install xorg-x11-drv-nvidia-libs.i686

This didn’t work quite so well on Fedora 23 so try this…

sudo dnf install nvidia-driver-libs

or use yumex-dnf to install nvidia-driver-libs.

when akmod-nvidia doesn’t appear to work

After installing akmod-nividia package, you might run into a situation where you install a shiny new kernel but the akmod-nvidia package builds, but doesn’t install the drivers for the Kernel. To get it to install your built drivers do this:

    cd /var/cache/akmods/nvidia; ls
    sudo rpm -ivh kmod-nvidia-###########.rpm
    sudo shutdown -r now

Where ############ is the latest number that corresponds to your new kernel number and the driver version.
You might want to check out the fail log to see why it failed. When this happened to me akmod had tried to install, but rpm was locked.

Simple outlook inbox analysis using R

Emails from eBay members asking questions come through as randomstring@members.ebay.com which can make them hard to count as a group
The following R script re-codes them so they can be counted.

install.packages("plyr")
library(plyr)

setwd("/home/mike/Desktop")
dir()
inbox<-read.csv("inbox.TXT", sep="\t")
names(inbox)

inbox$EADD <- ifelse(grepl("members.ebay.co.uk",inbox$From...Address.), 
                      "members.ebay.co.uk" , 
                      c(as.character(inbox$From...Address.)))   

str(inbox)

f <- ddply(inbox,c("EADD"),summarize,N=length(EADD))
plot(f$N)
head(f[order(-f$N),])
str(f)

Once you've identified the biggest culprits, make a rule to move or delete them from your email.

c++ binary stuff

#include 
#include 
#include 
#include 

using namespace std;
int maxBinLen;
string binary( unsigned long n, int needlength );

int main()
{
    unsigned long n=33;
    unsigned long p=76;
    int binarymax = 20;
    int np  = n & p;
    int x   = n ^ p;
    int s   = n | p;
    int bitshift = n << 1;
    cout<<"--------------=======---------------"<>= 1); //right bitwise operator
    str=string(resultArray + index );
    int strlen=str.length();
    for(int i=0;i<=(needlength-strlen)-1;i++)
        {strBin=strBin+"0";}
        strBin=strBin+str;
  return strBin;  //is this format something to do with returning a string??
}