Created
September 27, 2012 11:42
-
-
Save valachi/3793585 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
$ -> | |
return unless $('#uploads').length | |
queue = do -> | |
data = [] | |
current = 0 | |
uploading = false | |
{ | |
add: (item) -> | |
data.push item | |
# queue.upload() | |
upload: -> | |
return if uploading or not data[current] | |
uploading = true | |
data[current].upload -> | |
uploading = false | |
current += 1 | |
queue.upload() | |
} | |
class UploadItem | |
storage = $('#upload-items') | |
template = storage.find('.template > *').detach() | |
constructor: (@video, @sub) -> | |
element = template.clone().appendTo storage | |
element.find('.name').text @video.name | |
@status = element.find('.status') | |
@episode = new Episode @video | |
updateStatus: (info) -> | |
@status.text info | |
upload: (callback) -> | |
form = new FormData | |
xhr = new XMLHttpRequest | |
xhr.open 'POST', '/upload', true | |
xhr.onload = (event) => | |
@updateStatus if xhr.status == 200 then 'Готово' else 'Ошибка' | |
callback() | |
xhr.upload.onprogress = (progress) => | |
percent = parseInt progress.loaded / progress.total * 100 | |
@updateStatus if percent == 100 then 'Обрабатывается' else percent + '%' | |
form.append 'video[file]', @video | |
form.append 'video[subtitle]', @sub | |
form.append 'video[show_name]', @episode.show | |
form.append 'video[season]', @episode.season | |
form.append 'video[number]', @episode.number | |
xhr.send form | |
$('#uploads button').click -> | |
$('#uploads input').click() | |
sortFilesByName: (a, b) -> | |
if a.name > b.name | |
1 | |
else if b.name > a.name | |
-1 | |
else | |
0 | |
$('#uploads input').change (event) -> | |
anyVideos = false | |
allFiles = event.target.files | |
videos = (file for file in allFiles when /(mkv|avi|mp4|webm)$/.test file.name) | |
subtitles = (file for file in allFiles when /srt$/.test file.name) | |
for file in videos.sort() when /(mkv|avi|mp4|webm)$/.test file.name | |
anyVideos = true | |
episode = new Episode file | |
subtitle = (sub for sub in subtitles when episode.isSame sub)[0] | |
unless episode.show | |
alert("Не удалось распарсить имя видео: #{file.name}") | |
continue | |
unless subtitle | |
alert("Видео без субтитров: #{file.name}") | |
continue | |
queue.add new UploadItem file, subtitle | |
unless anyVideos | |
alert('В этой папке нету видео файлов и субтитров') |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment