# Import libs
import os
import socket
import fcntl
import struct

# settings:
serverip='10.0.0.1'
serveruser='user'
serverdir='/home/user'
n800user='user'

# Declare functions
# Remove duplicates from list
def f5(seq, idfun=None):
    # order preserving
    if idfun is None:
        def idfun(x): return x
    seen = {}
    result = []
    for item in seq:
        marker = idfun(item)
        # in old Python versions:
        # if seen.has_key(marker)
        # but in new ones:
        if marker in seen: continue
        seen[marker] = 1
        result.append(item)
    return result



# Get local ip address for device wlan0
def get_ip_address(ifname):
    s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
    return socket.inet_ntoa(fcntl.ioctl(
        s.fileno(),
        0x8915,  # SIOCGIFADDR
        struct.pack('256s', ifname[:15])
    )[20:24])

# Get local ip address
n800ip=get_ip_address('wlan0')

# Get directory listing from remote server
serverdircommand1="ssh "+serveruser+"@"+serverip+" 'find "+serverdir+" -iname '*.avi' > filelist1.txt'"
serverdircommand2="ssh "+serveruser+"@"+serverip+" 'scp filelist1.txt "+n800user+"@"+n800ip+":.'"
os.system(serverdircommand1)
os.system(serverdircommand2)



# Load file list
f = open("filelist1.txt","rd")
f = [line[:-1] for line in f]
filelist = []

for line in f:
    filelist.append(line)



# Sort files
filelist=f5(filelist)



# Main loop
# Clear screen
os.system('clear')
# Print welcome screen
print("===================================================")
print("=============== NOKIA N800 Streamer ===============")
print("=============== K. Hartvig Jensen 2007 ============")
print("===================================================")

# List files
numfiles=len(filelist)
i=1
for file in filelist:
    #if file[len(file)-4]=='.':   
    temp = `i`+"  "+file
    print(temp)
    i = i+1

# Prompt user for file to watch
print("===================================================")
prompttext="Enter the number of the file you which to watch (1-"+`numfiles`+"): "
filenum=input(prompttext)
print(filenum)



# Mplayer and ffmpeg command lines
runmplayer="nc -l -p 5000 | mplayer -v 0 - &"
runffmpeg="ssh "+serveruser+"@"+serverip+ " ffmpeg -vcodec mpeg1video -r 25 -b 512 -i "+ filelist[filenum-1] +" -s 240x144 -f mpeg - | nc "+n800ip+" 5000"



#Run mplayer and ffmpeg
print("RUN MPLAYER")
print(runmplayer)
print("RUN FFMPEG")
print(runffmpeg)



os.system(runmplayer)
os.system(runffmpeg)