mirror of
https://github.com/ajurna/cbwebreader.git
synced 2025-12-06 06:17:17 +00:00
changed views to use Database data to read files.
moved alot of the functionality to the models. changed the file access so that it ignores the extension and just attempts rar and zip access.
This commit is contained in:
@@ -1,25 +1,13 @@
|
||||
from django.http import HttpResponse
|
||||
from django.template import RequestContext, loader
|
||||
from django.template import RequestContext
|
||||
from django.utils.http import urlsafe_base64_decode
|
||||
from django.shortcuts import render
|
||||
|
||||
from comic.models import Setting
|
||||
from util import generate_breadcrumbs, generate_directory
|
||||
from comic.models import Setting, ComicBook
|
||||
from util import generate_breadcrumbs, generate_directory, process_comic_book
|
||||
|
||||
from unrar import rarfile
|
||||
from zipfile import ZipFile
|
||||
from os import path
|
||||
|
||||
class Comic:
|
||||
def __init__(self):
|
||||
self.name = ''
|
||||
self.index = 0
|
||||
class Navigation:
|
||||
def __init__(self):
|
||||
self.next = 0
|
||||
self.prev = 0
|
||||
self.cur = 0
|
||||
|
||||
def index(request, comic_path=''):
|
||||
base_dir = Setting.objects.get(name='BASE_DIR')
|
||||
comic_path = urlsafe_base64_decode(comic_path)
|
||||
@@ -33,30 +21,21 @@ def index(request, comic_path=''):
|
||||
|
||||
|
||||
def read_comic(request, comic_path, page):
|
||||
encoded = comic_path
|
||||
comic_path = urlsafe_base64_decode(comic_path)
|
||||
breadcrumbs = generate_breadcrumbs(comic_path)
|
||||
base_dir = Setting.objects.get(name='BASE_DIR')
|
||||
if comic_path.lower().endswith('cbr'):
|
||||
cbx = rarfile.RarFile(path.join(base_dir.value, comic_path))
|
||||
elif comic_path.lower().endswith('cbz'):
|
||||
cbx = ZipFile(path.join(base_dir.value, comic_path))
|
||||
nav = Navigation()
|
||||
page = int(page)
|
||||
nav.cur = page
|
||||
nav.next = page + 1
|
||||
nav.prev = page - 1
|
||||
pages = []
|
||||
for idx, name in enumerate(cbx.namelist()):
|
||||
comic = Comic()
|
||||
comic.name = name
|
||||
comic.index = idx
|
||||
pages.append(comic)
|
||||
decoded_path = urlsafe_base64_decode(comic_path)
|
||||
breadcrumbs = generate_breadcrumbs(decoded_path)
|
||||
_, comic_file_name = path.split(decoded_path)
|
||||
try:
|
||||
book = ComicBook.objects.get(file_name=comic_file_name)
|
||||
except ComicBook.DoesNotExist:
|
||||
book = process_comic_book(base_dir, decoded_path, comic_file_name)
|
||||
book.last_read_page = page
|
||||
book.save()
|
||||
context = RequestContext(request, {
|
||||
'pages': pages,
|
||||
'file_name': encoded,
|
||||
'orig_file_name': pages[nav.cur].name,
|
||||
'nav': nav,
|
||||
'book': book,
|
||||
'orig_file_name': book.pages()[page].name,
|
||||
'nav': book.nav(comic_path, page),
|
||||
'breadcrumbs': breadcrumbs,
|
||||
})
|
||||
return render(request, 'comic/read_comic.html', context)
|
||||
@@ -64,28 +43,13 @@ def read_comic(request, comic_path, page):
|
||||
|
||||
def get_image(request, comic_path, page):
|
||||
base_dir = Setting.objects.get(name='BASE_DIR')
|
||||
comic_path = urlsafe_base64_decode(comic_path)
|
||||
if comic_path.lower().endswith('cbr'):
|
||||
cbx = rarfile.RarFile(path.join(base_dir.value, comic_path))
|
||||
elif comic_path.lower().endswith('cbz'):
|
||||
cbx = ZipFile(path.join(base_dir.value, comic_path))
|
||||
page = int(page)
|
||||
page_file = cbx.namelist()[page]
|
||||
file_name = str(page_file).lower()
|
||||
if file_name.endswith('jpg') or file_name.endswith('jpeg'):
|
||||
content = 'image/JPEG'
|
||||
elif file_name.endswith('png'):
|
||||
content = 'image/png'
|
||||
elif file_name.endswith('bmp'):
|
||||
content = 'image/bmp'
|
||||
elif file_name.endswith('gif'):
|
||||
content = 'image/gif'
|
||||
else:
|
||||
content = 'text/plain'
|
||||
decoded_path = urlsafe_base64_decode(comic_path)
|
||||
_, comic_file_name = path.split(decoded_path)
|
||||
try:
|
||||
img = cbx.open(file)
|
||||
except KeyError:
|
||||
img = cbx.open(page_file)
|
||||
book = ComicBook.objects.get(file_name=comic_file_name)
|
||||
except ComicBook.DoesNotExist:
|
||||
book = process_comic_book(base_dir, decoded_path, comic_file_name)
|
||||
full_path = path.join(base_dir.value, decoded_path)
|
||||
img, content = book.get_image(full_path, page)
|
||||
return HttpResponse(img.read(), content_type=content)
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user