cleanup static
|
@ -6,3 +6,4 @@ src
|
|||
bin
|
||||
static/json/pandora.json
|
||||
static/js/pandora.js
|
||||
static/png/*.png
|
||||
|
|
|
@ -4,6 +4,7 @@ from __future__ import division, with_statement
|
|||
|
||||
import os
|
||||
import sys
|
||||
import shutil
|
||||
import time
|
||||
import thread
|
||||
|
||||
|
@ -72,6 +73,18 @@ def update_static():
|
|||
with open(pandora_json, 'w') as f:
|
||||
json.dump(sorted(js), f, indent=2)
|
||||
|
||||
for size in (16, 64, 256):
|
||||
pandora = os.path.join(settings.STATIC_ROOT, 'png/pandora/icon%d.png'%size)
|
||||
image = os.path.join(settings.STATIC_ROOT, 'png/icon%d.png'%size)
|
||||
if not os.path.exists(image):
|
||||
shutil.copyfile(pandora, image)
|
||||
|
||||
for size in (256, 1024):
|
||||
pandora = os.path.join(settings.STATIC_ROOT, 'png/pandora/logo%d.png'%size)
|
||||
image = os.path.join(settings.STATIC_ROOT, 'png/logo%d.png'%size)
|
||||
if not os.path.exists(image):
|
||||
shutil.copyfile(pandora, image)
|
||||
|
||||
def init():
|
||||
load_config()
|
||||
thread.start_new_thread(reloader_thread, ())
|
||||
|
|
|
@ -693,7 +693,7 @@ def poster(request, id, size=None):
|
|||
if item.poster:
|
||||
return image_to_response(item.poster, size)
|
||||
else:
|
||||
poster_path = os.path.join(settings.STATIC_ROOT, 'png/poster.png')
|
||||
poster_path = os.path.join(settings.STATIC_ROOT, 'jpg/poster.jpg')
|
||||
response = HttpFileResponse(poster_path, content_type='image/jpeg')
|
||||
response['Cache-Control'] = 'no-cache'
|
||||
return response
|
||||
|
|
|
@ -159,7 +159,7 @@ class List(models.Model):
|
|||
source = self.icon.path
|
||||
max_size = min(self.icon.width, self.icon.height)
|
||||
else:
|
||||
source = os.path.join(settings.STATIC_ROOT, 'png/list256.png')
|
||||
source = os.path.join(settings.STATIC_ROOT, 'jpg/list256.jpg')
|
||||
max_size = 256
|
||||
if size < max_size:
|
||||
extract.resize_image(source, path, size=size)
|
||||
|
|
|
@ -516,5 +516,5 @@ def icon(request, id, size=16):
|
|||
list = qs[0]
|
||||
icon = list.get_icon(int(size))
|
||||
else:
|
||||
icon = os.path.join(settings.STATIC_ROOT, 'jpg/list.jpg')
|
||||
icon = os.path.join(settings.STATIC_ROOT, 'jpg/list256.jpg')
|
||||
return HttpFileResponse(icon, content_type='image/jpeg')
|
||||
|
|
Before Width: | Height: | Size: 6.3 KiB After Width: | Height: | Size: 6.3 KiB |
Before Width: | Height: | Size: 1.8 KiB After Width: | Height: | Size: 1.8 KiB |
Before Width: | Height: | Size: 1.9 KiB After Width: | Height: | Size: 1.9 KiB |
Before Width: | Height: | Size: 38 KiB After Width: | Height: | Size: 38 KiB |
|
@ -15,7 +15,7 @@ from optparse import OptionParser
|
|||
import sys
|
||||
|
||||
|
||||
static_root = os.path.join(os.path.dirname(__file__), '..', '..', 'static')
|
||||
static_root = os.path.join(os.path.dirname(__file__), 'data')
|
||||
|
||||
def render_icon(frame, timeline, icon):
|
||||
icon_width = 1024
|
||||
|
|
|
@ -16,7 +16,7 @@ from optparse import OptionParser
|
|||
from ox.image import drawText, wrapText
|
||||
import sys
|
||||
|
||||
static_root = os.path.join(os.path.dirname(__file__), '..', '..', 'static')
|
||||
static_root = os.path.join(os.path.dirname(__file__), 'data')
|
||||
|
||||
def render_list_icon(frames, icon):
|
||||
icon_width = 256
|
||||
|
|
|
@ -17,7 +17,7 @@ from ox.image import drawText, wrapText
|
|||
import sys
|
||||
|
||||
|
||||
static_root = os.path.join(os.path.dirname(__file__), '..', '..', 'static')
|
||||
static_root = os.path.join(os.path.dirname(__file__), 'data')
|
||||
|
||||
def render_poster(title, director, year, series, oxdb_id, imdb_id, frame, timeline, poster):
|
||||
def get_oxdb_color(oxdb_id, series=False):
|
||||
|
@ -107,7 +107,7 @@ def render_poster(title, director, year, series, oxdb_id, imdb_id, frame, timeli
|
|||
|
||||
# logo
|
||||
logo_height = 32
|
||||
logo_image = Image.open(os.path.join(static_root, 'png', 'logo.poster.png'))
|
||||
logo_image = Image.open(os.path.join(static_root, 'png', 'logo.png'))
|
||||
logo_width = int(round(logo_height * logo_image.size[0] / logo_image.size[1]))
|
||||
logo_image = logo_image.resize((logo_width, logo_height), Image.ANTIALIAS)
|
||||
logo_left = text_width - text_margin - logo_width
|
||||
|
|
|
@ -16,7 +16,7 @@ from optparse import OptionParser
|
|||
from ox.image import drawText, wrapText
|
||||
import sys
|
||||
|
||||
static_root = os.path.join(os.path.dirname(__file__), '..', '..', 'static')
|
||||
static_root = os.path.join(os.path.dirname(__file__), 'data')
|
||||
|
||||
def render_poster(id, title, frame, timeline, poster):
|
||||
poster_width = 640
|
||||
|
|
|
@ -1,86 +0,0 @@
|
|||
<div id="itemInfo">
|
||||
<div style="position: absolute; left: 8px; top: 8px; width: 256px">
|
||||
<div style="width: 256px; height: ${posterHeight}px">
|
||||
<img class="icon" style="position: absolute; left: ${posterLeft}px; width: ${posterWidth}px; height: ${posterHeight}px" src="/${id}/poster.jpg"/>
|
||||
</div>
|
||||
<div style="display: block; position: absolute; top: ${posterHeight}px; width: 256px; height: 128px; overflow-y: hidden">
|
||||
<img class="icon" style="position: absolute; left: ${posterLeft}px; width: ${posterWidth}px; height: ${posterHeight}px; -moz-transform: scaleY(-1); -webkit-transform: scaleY(-1)" src="/${id}/poster.jpg"/>
|
||||
<div style="display: block; position: absolute; width: 256px; height: 128px; background: -moz-linear-gradient(top, rgba(16, 16, 16, 0.75), rgba(16, 16, 16, 1)); background: -webkit-linear-gradient(top, rgba(16, 16, 16, 0.75), rgba(16, 16, 16, 1))"></div>
|
||||
</div>
|
||||
</div>
|
||||
<div style="position: absolute; width: 512px; left: 272px; top: 8px">
|
||||
<div id="movieTitle" class="movieData textLarge textLeft" style="margin-top: 0px; margin-bottom: 2px; font-size: 13px; font-weight: bold">
|
||||
${title}
|
||||
</div>
|
||||
<div id="movieDirector" class="movieData textLarge textLeft" style="margin-bottom: 4px; font-size: 13px; font-weight: bold">
|
||||
${director}
|
||||
</div>
|
||||
<div id="movieInfo" class="movieData textMedium textJustify" style="margin-bottom: 4px">
|
||||
<span id="movieCountry">
|
||||
<span style="font-weight: bold">Country:</span> ${country}
|
||||
</span>
|
||||
<span id="movieYear">
|
||||
<span style="font-weight: bold">Year:</span> ${year}
|
||||
</span>
|
||||
<span id="movieLanguage">
|
||||
<span style="font-weight: bold">Language:</span> ${language}
|
||||
</span>
|
||||
<span id="movieRuntime">
|
||||
<span style="font-weight: bold">Runtime:</span> ${runtime}
|
||||
</span>
|
||||
</div>
|
||||
<div id="movieAltTitles" class="movieData textMedium textJustify" style="margin-bottom: 4px">
|
||||
<span style="font-weight: bold">Alternative Title(s):</span> ${alternative_titles}
|
||||
</div>
|
||||
<div id="movieWriter" class="movieData textMedium textJustify" style="margin-bottom: 4px">
|
||||
<span style="font-weight: bold">Writer:</span> ${writer}
|
||||
</div>
|
||||
<div id="movieProducer" class="movieData textMedium textJustify" style="margin-bottom: 4px">
|
||||
<span style="font-weight: bold">Producer:</span> ${producer}
|
||||
</div>
|
||||
<div id="movieCast" class="movieData textMedium textJustify" style="margin-bottom: 4px">
|
||||
<span style="font-weight: bold">Cast:</span> ${cast}
|
||||
</div>
|
||||
<div id="movieGenre" class="movieData textMedium textJustify" style="margin-bottom: 4px">
|
||||
<span style="font-weight: bold">Genre:</span> ${genre}
|
||||
</div>
|
||||
<div id="movieKeywords" class="movieData textMedium textJustify" style="margin-bottom: 4px">
|
||||
<span style="font-weight: bold">Keywords:</span> ${keyword}
|
||||
</div>
|
||||
<div id="movieSummary" class="movieData textMedium textJustify" style="margin-bottom: 4px">
|
||||
<span style="font-weight: bold">Summary:</span> FIXME
|
||||
</div>
|
||||
<div id="movieTrivia" class="movieData textMedium">
|
||||
FIXTRIVA
|
||||
</div>
|
||||
<div id="movieBusiness" class="movieData textMedium textJustify" style="margin-bottom: 4px">
|
||||
<div id="movieDate" style="margin-bottom: 4px;">
|
||||
<span style="font-weight: bold">Release Date:</span> ${release_date}
|
||||
</div>
|
||||
<span id="movieBudget">
|
||||
<span style="font-weight: bold">Budget:</span> ${budget}
|
||||
</span>
|
||||
<span id="movieGross">
|
||||
<span style="font-weight: bold">Gross:</span> ${gross}
|
||||
</span>
|
||||
<span id="movieLoss">
|
||||
<span style="font-weight: bold">Profit:</span> ${profit}
|
||||
</span>
|
||||
</div>
|
||||
<div id="moviePoll" class="movieData textMedium textJustify" style="margin-bottom: 4px">
|
||||
<span id="movieRating">
|
||||
<span style="font-weight: bold">Rating:</span> ${rating}
|
||||
</span>
|
||||
<span id="movieVotes">
|
||||
<span style="font-weight: bold">Votes:</span> ${votes}
|
||||
</span>
|
||||
</div>
|
||||
<div id="movieConnections">
|
||||
FIXME: movie connections
|
||||
</div>
|
||||
<div id="movieReviews" class="movieData textMedium textJustify" style="margin-bottom: 4px">
|
||||
<span style="font-weight: bold">Reviews:</span> ${reviewsHtml}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
BIN
static/jpg/list256.jpg
Normal file
After Width: | Height: | Size: 417 B |
BIN
static/jpg/poster.jpg
Normal file
After Width: | Height: | Size: 201 B |
Before Width: | Height: | Size: 178 B |
Before Width: | Height: | Size: 24 KiB |
Before Width: | Height: | Size: 799 B |
Before Width: | Height: | Size: 16 KiB |
Before Width: | Height: | Size: 5.9 KiB |
Before Width: | Height: | Size: 2.9 KiB |
Before Width: | Height: | Size: 270 B |
Before Width: | Height: | Size: 46 KiB |
Before Width: | Height: | Size: 32 KiB |
Before Width: | Height: | Size: 54 KiB After Width: | Height: | Size: 54 KiB |
Before Width: | Height: | Size: 110 B |
Before Width: | Height: | Size: 82 KiB |