forked from 0x2620/pandora
add option to have direct download instead of torrent
This commit is contained in:
parent
d8fff463de
commit
f3c9d7b7af
9 changed files with 42 additions and 3 deletions
|
@ -890,6 +890,7 @@
|
||||||
// fixme: this should include colors
|
// fixme: this should include colors
|
||||||
"userLevels": ["guest", "member", "friend", "staff", "admin"],
|
"userLevels": ["guest", "member", "friend", "staff", "admin"],
|
||||||
"video": {
|
"video": {
|
||||||
|
"torrent": true,
|
||||||
"formats": ["webm", "mp4"],
|
"formats": ["webm", "mp4"],
|
||||||
// fixme: this should be named "ratio" or "defaultRatio",
|
// fixme: this should be named "ratio" or "defaultRatio",
|
||||||
// as it also applies to clip lists (on load)
|
// as it also applies to clip lists (on load)
|
||||||
|
|
|
@ -895,6 +895,7 @@
|
||||||
// fixme: this should include colors
|
// fixme: this should include colors
|
||||||
"userLevels": ["guest", "member", "student", "staff", "admin"],
|
"userLevels": ["guest", "member", "student", "staff", "admin"],
|
||||||
"video": {
|
"video": {
|
||||||
|
"torrent": true,
|
||||||
"formats": ["webm", "mp4"],
|
"formats": ["webm", "mp4"],
|
||||||
"previewRatio": 1.375,
|
"previewRatio": 1.375,
|
||||||
"resolutions": [240, 480]
|
"resolutions": [240, 480]
|
||||||
|
|
|
@ -774,6 +774,7 @@
|
||||||
},
|
},
|
||||||
"userLevels": ["guest", "member", "staff", "admin"],
|
"userLevels": ["guest", "member", "staff", "admin"],
|
||||||
"video": {
|
"video": {
|
||||||
|
"torrent": true,
|
||||||
"formats": ["webm", "mp4"],
|
"formats": ["webm", "mp4"],
|
||||||
"previewRatio": 1.3333333333,
|
"previewRatio": 1.3333333333,
|
||||||
//supported resolutions are
|
//supported resolutions are
|
||||||
|
|
|
@ -691,7 +691,7 @@
|
||||||
},
|
},
|
||||||
"userLevels": ["guest", "member", "staff", "admin"],
|
"userLevels": ["guest", "member", "staff", "admin"],
|
||||||
"video": {
|
"video": {
|
||||||
"download": true,
|
"torrent": true,
|
||||||
//supported formats: webm, mp4
|
//supported formats: webm, mp4
|
||||||
"formats": ["webm", "mp4"],
|
"formats": ["webm", "mp4"],
|
||||||
"previewRatio": 1.3333333333,
|
"previewRatio": 1.3333333333,
|
||||||
|
|
|
@ -19,6 +19,9 @@ urlpatterns = patterns("item.views",
|
||||||
(r'^(?P<id>[A-Z0-9].*)/torrent$', 'torrent'),
|
(r'^(?P<id>[A-Z0-9].*)/torrent$', 'torrent'),
|
||||||
(r'^(?P<id>[A-Z0-9].*)/torrent/(?P<filename>.*?)$', 'torrent'),
|
(r'^(?P<id>[A-Z0-9].*)/torrent/(?P<filename>.*?)$', 'torrent'),
|
||||||
|
|
||||||
|
#download
|
||||||
|
(r'^(?P<id>[A-Z0-9].*)/download/$', 'download'),
|
||||||
|
|
||||||
#export
|
#export
|
||||||
(r'^(?P<id>[A-Z0-9].*)/json$', 'item_json'),
|
(r'^(?P<id>[A-Z0-9].*)/json$', 'item_json'),
|
||||||
(r'^(?P<id>[A-Z0-9].*)/xml$', 'item_xml'),
|
(r'^(?P<id>[A-Z0-9].*)/xml$', 'item_xml'),
|
||||||
|
|
|
@ -831,6 +831,36 @@ def timeline(request, id, size, position=-1, format='jpg', mode=None):
|
||||||
path = timeline()
|
path = timeline()
|
||||||
return HttpFileResponse(path, content_type='image/jpeg')
|
return HttpFileResponse(path, content_type='image/jpeg')
|
||||||
|
|
||||||
|
def download(request, id, index=1):
|
||||||
|
item = get_object_or_404(models.Item, itemId=id)
|
||||||
|
resolution = max(settings.CONFIG['video']['resolutions'])
|
||||||
|
format = 'webm'
|
||||||
|
|
||||||
|
if not item.access(request.user):
|
||||||
|
return HttpResponseForbidden()
|
||||||
|
if index:
|
||||||
|
index = int(index) - 1
|
||||||
|
else:
|
||||||
|
index = 0
|
||||||
|
streams = item.streams()
|
||||||
|
if index + 1 > streams.count():
|
||||||
|
raise Http404
|
||||||
|
stream = streams[index].get(resolution, format)
|
||||||
|
if not stream.available or not stream.media:
|
||||||
|
raise Http404
|
||||||
|
path = stream.media.path
|
||||||
|
content_type = mimetypes.guess_type(path)[0]
|
||||||
|
ext = os.path.splitext(path)[-1]
|
||||||
|
filename = "%s - %s %s%s" % (
|
||||||
|
item.get('title'),
|
||||||
|
settings.SITENAME,
|
||||||
|
item.itemId,
|
||||||
|
ext
|
||||||
|
)
|
||||||
|
response = HttpFileResponse(path, content_type=content_type)
|
||||||
|
response['Content-Disposition'] = "attachment; filename*=UTF-8''%s" % quote(filename.encode('utf-8'))
|
||||||
|
return response
|
||||||
|
|
||||||
def torrent(request, id, filename=None):
|
def torrent(request, id, filename=None):
|
||||||
item = get_object_or_404(models.Item, itemId=id)
|
item = get_object_or_404(models.Item, itemId=id)
|
||||||
if not item.access(request.user):
|
if not item.access(request.user):
|
||||||
|
|
|
@ -127,7 +127,7 @@ pandora.ui.editor = function(data) {
|
||||||
pandora.$ui[dialog] = pandora.ui[dialog](data).open();
|
pandora.$ui[dialog] = pandora.ui[dialog](data).open();
|
||||||
},
|
},
|
||||||
downloadvideo: function(data) {
|
downloadvideo: function(data) {
|
||||||
document.location.href = '/' + ui.item + '/torrent/';
|
document.location.href = pandora.getDownloadLink(ui.item);
|
||||||
},
|
},
|
||||||
downloadselection: function(data) {
|
downloadselection: function(data) {
|
||||||
document.location.href = '/' + ui.item
|
document.location.href = '/' + ui.item
|
||||||
|
|
|
@ -84,7 +84,7 @@ pandora.ui.player = function(data) {
|
||||||
}), 'clip');
|
}), 'clip');
|
||||||
},
|
},
|
||||||
downloadvideo: function(data) {
|
downloadvideo: function(data) {
|
||||||
document.location.href = '/' + ui.item + '/torrent/';
|
document.location.href = pandora.getDownloadLink(ui.item);
|
||||||
},
|
},
|
||||||
find: function(data) {
|
find: function(data) {
|
||||||
pandora.UI.set({itemFind: data.find});
|
pandora.UI.set({itemFind: data.find});
|
||||||
|
|
|
@ -928,6 +928,9 @@ pandora.getClipVideos = function(clip, resolution) {
|
||||||
};
|
};
|
||||||
}());
|
}());
|
||||||
|
|
||||||
|
pandora.getDownloadLink = function(item) {
|
||||||
|
return '/' + item + (pandora.site.video.torrent ? '/torrent/' : '/download/');
|
||||||
|
}
|
||||||
|
|
||||||
pandora.getEditTooltip = function(title) {
|
pandora.getEditTooltip = function(title) {
|
||||||
return function(e) {
|
return function(e) {
|
||||||
|
|
Loading…
Reference in a new issue