Added some Information for audio userview, stringtools integrated

This commit is contained in:
Dirk Alders 2020-02-05 14:00:44 +01:00
parent 78df2b0459
commit f88baa3e29
5 changed files with 40 additions and 35 deletions

View File

@ -13,11 +13,21 @@
<div id="openModal" class="image">
{% with bar=item.tagbar slim=True %}{% include 'themes/'|add:settings.page_theme|add:'/menubar.html' %}{% endwith %}
<div class="image_bg">
<h1>{{ item.heading }}</h1>
<audio controls preload{% if item.is_repeatview %} autoplay{% endif %} controlsList="nodownload">
<source src="{{ item.url_item|safe }}" type="{{ item.mime_type }}">
Your browser does not support the audio element.
</audio>
<h1>{{ item.heading }}</h1>
<audio controls preload{% if item.is_repeatview %} autoplay{% endif %} controlsList="nodownload">
<source src="{{ item.url_item|safe }}" type="{{ item.mime_type }}">
Your browser does not support the audio element.
</audio>
<table>
<tbody>
{% for line in item.audio_information %}
<tr>
<td>{{ line.description }}:</td>
<td style="text-align:right;">{{ line.data }}</td>
</tr>
{% endfor %}
</tbody>
</table>
</div>
</div>

View File

@ -12,6 +12,7 @@
{% endfor %}
</tbody>
</table>
{% if item.item_information|length > 0 %}
<h1>{{ heading.information }}</h1>
<table>
<tbody>
@ -23,6 +24,7 @@
{% endfor %}
</tbody>
</table>
{% endif %}
{% if item.database_information|length > 0 %}
<h1>{{ heading.database }}</h1>
<table>

View File

@ -106,6 +106,8 @@ def pygal_download(request, datatype, rel_path):
# Create the Archive from fp_list
#
flat = pygal.is_flat(request)
if not os.path.exists(settings.TEMP_ROOT):
fstools.mkdir(settings.TEMP_ROOT)
temp = tempfile.TemporaryFile(dir=settings.TEMP_ROOT)
archive = zipfile.ZipFile(temp, 'w', zipfile.ZIP_STORED)
for fp in fp_list:

View File

@ -1,7 +1,7 @@
from django.utils.translation import gettext as _
import fractions
import geo
from ..models import get_item_type, TYPE_AUDIO, TYPE_FOLDER, TYPE_IMAGE, TYPE_VIDEO
import stringtools
from .userviews import base_view as base_userview
@ -82,8 +82,7 @@ class image_view(base_view):
c = geo.gps.coordinate(**gps_data)
rv.append({'description': _('GPS'), 'data': str(c), 'url': geo.osm.landmark_link(c)})
rv.append({'description': _('Exposure Program'), 'data': self.item.item_data.exposure_program, 'url': None})
f = fractions.Fraction(self.item.item_data.exposure_time).limit_denominator()
rv.append({'description': _('Exposure Time'), 'data': '%d/%d s' % (f.numerator, f.denominator), 'url': None})
rv.append({'description': _('Exposure Time'), 'data': '%ss' % (stringtools.frac_repr(self.item.item_data.exposure_time)), 'url': None})
rv.append({'description': _('ISO'), 'data': self.item.item_data.iso, 'url': None})
rv.append({'description': _('Focal Length'), 'data': self.item.item_data.focal_length, 'url': None})
rv.append({'description': _('Apeture'), 'data': self.item.item_data.f_number, 'url': None})
@ -117,7 +116,7 @@ class audio_view(base_view):
rv.append({'description': _('Year'), 'data': self.item.item_data.year, 'url': None})
rv.append({'description': _('Title'), 'data': self.item.item_data.title, 'url': None})
rv.append({'description': _('Track'), 'data': self.item.item_data.track, 'url': None})
rv.append({'description': _('Duration'), 'data': self.__duration_txt__(self.item.item_data.duration), 'url': None})
rv.append({'description': _('Duration'), 'data': stringtools.time_repr(self.item.item_data.duration), 'url': None})
rv.append({'description': _('Genre'), 'data': self.item.item_data.genre, 'url': None})
rv.append({'description': _('Bitrate'), 'data': self.__size_txt__(self.item.item_data.bitrate), 'url': None})
rv.append({'description': _('Bitrate'), 'data': stringtools.physical_value_repr(self.item.item_data.bitrate), 'url': None})
return rv

View File

@ -7,8 +7,8 @@ import os
import pygal
from ..queries import search_result_query
import random
import stringtools
import themes
import time
ADDTAG_ENTRY = 'addtag-main'
INFOVIEW_ENTRY = 'infoview-main'
@ -85,7 +85,7 @@ class base_view(object):
rv.append({'description': _('Name'), 'data': os.path.basename(full_path), 'url': None})
rv.append({'description': _('Creation Time'), 'data': self.item.item_data.formatted_datetime, 'url': None})
rv.append({'description': _('Path'), 'data': os.path.dirname(full_path), 'url': None})
rv.append({'description': _('Size'), 'data': self.__size_txt__(self.item.item_data.size) + 'B', 'url': None})
rv.append({'description': _('Size'), 'data': stringtools.physical_value_repr(self.item.item_data.size, 'B'), 'url': None})
rv.append({'description': _('UID'), 'data': self.item.current_uid(), 'url': None})
return rv
@ -241,29 +241,6 @@ class base_view(object):
def date_txt(self):
return self.item.item_data.formatted_datetime
def __size_txt__(self, size):
unit = {
0: '',
1: 'k',
2: 'M',
3: 'G',
4: 'T',
}
u = 0
while u < 4 and size > 1000.:
u += 1
size /= 1000.
if size < 100.:
return '%.2f %s' % (size, unit.get(u, '?'))
else:
return '%.1f %s' % (size, unit.get(u, '?'))
def __duration_txt__(self, duration):
if duration >= 3600:
return time.strftime('%H:%M:%S', time.gmtime(duration))
else:
return time.strftime('%M:%S', time.gmtime(duration))
def __parent__(self):
if pygal.is_searchview(self.request):
return query_view(self.request, search_result_query(self.request))
@ -528,6 +505,21 @@ class audio_view(base_view):
def heading(self):
return '%02d - %s' % (self.item.item_data.track, self.item.item_data.title)
@property
def audio_information(self):
rv = []
entries = (
(_('Artist'), self.item.artist_c),
(_('Album'), self.item.album_c),
(_('Year'), self.item.year_c),
(_('Title'), self.item.title_c),
(_('Duration'), stringtools.time_repr(self.item.duration_c)),
)
for description, data in entries:
if data is not None:
rv.append({'description': description, 'data': data, 'url': None})
return rv
class other_view(base_view):
def __init__(self, *args, **kwargs):