Question

I'm attempting to use the ftplib library in Python to try and FTP some videos to my website. I've got a script with the basics "working", but there's a problem with it. When I try to play my video back using VLC player, it appears that it's corrupt, as it only plays the first 15 seconds of video (probably until some important keyframe in the video, but that's likely besides the point) and then the audio only sometimes continues.

The strange thing about it is that if I perform an ls -l on both the local directory and the remote directory, the filesizes are the same (even though the Mac locally calculates the filesize as 75.6 MB while the cPanel File Manager shows it as only 71.2 MB). To double-check, the MD5 checksums on both ends also came out to be the same. But clearly, the data isn't entirely right on the server side. Odds are, I'm probably not opening the .mov file correctly in my Python script, as it took me a little while just to wrap my head around file and file-like objects (meaning I probably still have it wrong).

This is my current upload script:

#!/usr/bin/env python

import os
from ftplib import FTP

# Log in to the FTP server
ftp = FTP('campusweatherservice.com')
ftp.login('myusername', 'mypassword')

# Change directories to the intended video source
os.chdir('/Users/cws/Desktop/CNET')

f = file('cnet.mov', 'rb')         # Currently opening the file as a file object
ftp.storbinary('STOR CNET.mov', f) # We then try to store it this way

# Close our file object and then quit the FTP client
f.close()
ftp.quit()

Any thoughts or obvious mistakes on my end here? If you'd like to try the video file for yourself, it's at http://www.campusweatherservice.com/CNET/CNET.mov

Was it helpful?

Solution

So hopefully you can see from the comments on the original question that this issue was a matter of testing, not the code.

Lessons learned here:

  1. If your checksums match, make damn sure your files aren't in fact, identical. That's 1000x more likely to be the case than some weird fringe case (as I originally figured it was)
  2. If you provide an actionable item in your Stack Overflow post (like 'download my video to see for yourself'), you should probably test that out yourself.

So I guess this question is now at least good as a) a reference for uploading files via FTP using Python and b) a good lesson on asking questions on Stack Overflow!

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top