Swift Media Player
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

138 lines
3.8 KiB

//
// Created by Marco Schmickler on 25.05.15.
// Copyright (c) 2015 Marco Schmickler. All rights reserved.
//
import Foundation
import UIKit
enum ItemType : String, CustomStringConvertible {
case ROOT = "root"
case VIDEOROOT = "videoroot"
case FOLDER = "folder"
case VIDEO = "video"
case PICS = "pics"
case DETAILS = "details"
case SNAPSHOT = "snapshot"
var description: String {
return self.rawValue
}
}
class MediaItem : CustomDebugStringConvertible {
var name : String
var path : String
var root: String
var image: UIImage?
var time: NSTimeInterval?
var thumbUrl: String?
var children: [MediaItem]
var parent: MediaItem?
var type: ItemType
var index = 0
var loaded = false
var featured = true
var sortName = ""
init(name: String, path: String, root: String, type: ItemType) {
self.name = name
let trim = NSCharacterSet(charactersInString: "/ ")
self.root = "/" + root.stringByTrimmingCharactersInSet(trim)
self.path = path.stringByTrimmingCharactersInSet(trim)
self.type = type
children = [MediaItem]()
sortName = computeSortName(name)
}
func computeSortName(sname: String) -> String {
var lsortName = sname.stringByReplacingOccurrencesOfString("full", withString: "")
var fullNameArr = sortName.characters.split {$0 == "_"}.map { String($0) }
// println (lsortName)
if !fullNameArr.isEmpty {
lsortName = fullNameArr[0]
}
while lsortName.characters.count < 6 {
lsortName = "0" + lsortName
}
return lsortName
}
var thumbPath: String {
let len = "/srv/samba/ren".characters.count
let tpath = "/srv/samba/ren/thumb" + (rootSlash as NSString).substringFromIndex(len) + pathSlash + name
let enc = tpath.stringByAddingPercentEscapesUsingEncoding(NSISOLatin1StringEncoding)! //.stringByReplacingOccurrencesOfString(" ", withString: "%20")
return enc + "/"
}
var thumbUrlAbsolute: String {
let enc = thumbUrl!.stringByAddingPercentEscapesUsingEncoding(NSISOLatin1StringEncoding)! //.stringByReplacingOccurrencesOfString(" ", withString: "%20")
return NetworkManager.sharedInstance.baseurl + "/service/download" + enc
}
var imageUrlAbsolute: String {
var imageUrl = thumbUrl!.stringByReplacingOccurrencesOfString("_thumb.", withString: ".")
imageUrl = imageUrl.stringByReplacingOccurrencesOfString("?preview=true", withString: "")
imageUrl = imageUrl.stringByAddingPercentEscapesUsingEncoding(NSISOLatin1StringEncoding)! //.stringByReplacingOccurrencesOfString(" ", withString: "%20")
return NetworkManager.sharedInstance.baseurl + "/service/download" + imageUrl
}
var fullPath: String {
let fpath = rootSlash + pathSlash + name
let enc = fpath.stringByAddingPercentEscapesUsingEncoding(NSISOLatin1StringEncoding) //.stringByReplacingOccurrencesOfString(" ", withString: "%20")
return enc!
}
var debugDescription: String {
return "\(type): \(root) \(path) \(name) (\(index)) Child count \(children.count)"
}
var rootSlash: String {
if root.endsWith("/") {
return root
}
else {
return root + "/"
}
}
var pathSlash: String {
if path.characters.count == 0 {
return ""
}
if path.endsWith("/") {
return path
}
else {
return path + "/"
}
}
var encodedDir: String? {
let dir = rootSlash + path
return dir.stringByAddingPercentEscapesUsingEncoding(NSISOLatin1StringEncoding)
}
func superRoot() -> MediaItem {
if let p = parent {
return p.superRoot()
}
return self
}
}