subtitle
This commit is contained in:
65
app/Main.hs
65
app/Main.hs
@@ -16,16 +16,24 @@ data ContentType
|
|||||||
| Tv
|
| Tv
|
||||||
deriving (Show, Eq, Generic, FromJSON, ToJSON)
|
deriving (Show, Eq, Generic, FromJSON, ToJSON)
|
||||||
|
|
||||||
newtype ID = ID String deriving (Show, Eq, Generic, FromJSON, ToJSON)
|
newtype ContentID = ContentID String deriving (Show, Eq, Generic, FromJSON, ToJSON)
|
||||||
|
|
||||||
newtype IDPrefix = IDPrefix String deriving (Show, Eq, Generic, FromJSON, ToJSON)
|
newtype SubtitleID = SubtitleID String deriving (Show, Eq, Generic, FromJSON, ToJSON)
|
||||||
|
|
||||||
|
newtype ContentIDPrefix = ContentIDPrefix String deriving (Show, Eq, Generic, FromJSON, ToJSON)
|
||||||
|
|
||||||
newtype Url = Url String deriving (Show, Eq, Generic, FromJSON, ToJSON)
|
newtype Url = Url String deriving (Show, Eq, Generic, FromJSON, ToJSON)
|
||||||
|
|
||||||
|
newtype BingeGroup = BingeGroup String deriving (Show, Eq, Generic, FromJSON, ToJSON)
|
||||||
|
|
||||||
|
newtype OpensubtitleHash = OpensubtitleHash String deriving (Show, Eq, Generic, FromJSON, ToJSON)
|
||||||
|
|
||||||
data ImageShape = Square | Poster | Landscape deriving (Show, Eq, Generic, FromJSON, ToJSON)
|
data ImageShape = Square | Poster | Landscape deriving (Show, Eq, Generic, FromJSON, ToJSON)
|
||||||
|
|
||||||
data YearInfo = Single Int | Range Int Int deriving (Show, Eq, Generic, FromJSON, ToJSON)
|
data YearInfo = Single Int | Range Int Int deriving (Show, Eq, Generic, FromJSON, ToJSON)
|
||||||
|
|
||||||
|
data Language = Language String deriving (Show, Eq, Generic, FromJSON, ToJSON)
|
||||||
|
|
||||||
data Trailer = Trailer String | Clip String deriving (Show, Eq, Generic, FromJSON, ToJSON)
|
data Trailer = Trailer String | Clip String deriving (Show, Eq, Generic, FromJSON, ToJSON)
|
||||||
|
|
||||||
data MetaLink
|
data MetaLink
|
||||||
@@ -36,10 +44,34 @@ data MetaLink
|
|||||||
}
|
}
|
||||||
deriving (Show, Generic, FromJSON, ToJSON)
|
deriving (Show, Generic, FromJSON, ToJSON)
|
||||||
|
|
||||||
data Stream = UrlStream Url | YoutubeStream Url | TorrentStream | ExternalStream MetaLink deriving (Show, Generic, FromJSON, ToJSON)
|
data StreamDetails = StreamDetails
|
||||||
|
{ name :: Maybe String,
|
||||||
|
title :: Maybe String,
|
||||||
|
description :: Maybe String,
|
||||||
|
subtitles :: Maybe [Subtitle],
|
||||||
|
-- we arent doing soruces cuz no torrent for now
|
||||||
|
bingeGroup :: Maybe BingeGroup,
|
||||||
|
vContentIDeoHash :: Maybe OpensubtitleHash,
|
||||||
|
vContentIDeoSize :: Maybe Int,
|
||||||
|
filename :: Maybe String
|
||||||
|
}
|
||||||
|
deriving (Show, Generic, FromJSON, ToJSON)
|
||||||
|
|
||||||
data Video = Video
|
data StreamSource
|
||||||
{ id :: ID,
|
= UrlSource Url
|
||||||
|
| YoutubeSource String
|
||||||
|
| TorrentSource
|
||||||
|
| ExternalSource MetaLink
|
||||||
|
deriving (Show, Generic, FromJSON, ToJSON)
|
||||||
|
|
||||||
|
data Stream = Stream
|
||||||
|
{ details :: StreamDetails,
|
||||||
|
source :: StreamSource
|
||||||
|
}
|
||||||
|
deriving (Show, Generic, FromJSON, ToJSON)
|
||||||
|
|
||||||
|
data Video = VContentIDeo
|
||||||
|
{ id :: ContentID,
|
||||||
title :: String,
|
title :: String,
|
||||||
released :: UTCTime,
|
released :: UTCTime,
|
||||||
thumbnail :: Maybe Url,
|
thumbnail :: Maybe Url,
|
||||||
@@ -55,12 +87,12 @@ data Video = Video
|
|||||||
data Feature
|
data Feature
|
||||||
= Search
|
= Search
|
||||||
{ required :: Bool,
|
{ required :: Bool,
|
||||||
options :: Maybe [IDPrefix],
|
options :: Maybe [ContentIDPrefix],
|
||||||
optionsLimit :: Maybe Int
|
optionsLimit :: Maybe Int
|
||||||
}
|
}
|
||||||
| Genre
|
| Genre
|
||||||
{ required :: Bool,
|
{ required :: Bool,
|
||||||
options :: Maybe [IDPrefix],
|
options :: Maybe [ContentIDPrefix],
|
||||||
optionsLimit :: Maybe Int
|
optionsLimit :: Maybe Int
|
||||||
}
|
}
|
||||||
| Skip
|
| Skip
|
||||||
@@ -69,28 +101,28 @@ data Feature
|
|||||||
data Resource a where
|
data Resource a where
|
||||||
MetaResource ::
|
MetaResource ::
|
||||||
{ metaTypes :: [ContentType],
|
{ metaTypes :: [ContentType],
|
||||||
metaIdPrefix :: [IDPrefix]
|
metaContentIDPrefix :: [ContentIDPrefix]
|
||||||
} ->
|
} ->
|
||||||
Resource MetaData
|
Resource MetaData
|
||||||
CatalogResource ::
|
CatalogResource ::
|
||||||
{ catalogTypes :: [ContentType],
|
{ catalogTypes :: [ContentType],
|
||||||
catalogIdPrefix :: [IDPrefix],
|
catalogContentIDPrefix :: [ContentIDPrefix],
|
||||||
catalogExtra :: [Feature]
|
catalogExtra :: [Feature]
|
||||||
} ->
|
} ->
|
||||||
Resource Catalog
|
Resource Catalog
|
||||||
StreamResource ::
|
StreamResource ::
|
||||||
{ streamTypes :: [ContentType],
|
{ streamTypes :: [ContentType],
|
||||||
streamIdPrefix :: [IDPrefix]
|
streamContentIDPrefix :: [ContentIDPrefix]
|
||||||
} ->
|
} ->
|
||||||
Resource Stream
|
Resource Stream
|
||||||
SubtitleResource ::
|
SubtitleResource ::
|
||||||
{ subtitleTypes :: [ContentType],
|
{ subtitleTypes :: [ContentType],
|
||||||
subtitleIdPrefix :: [IDPrefix]
|
subtitleContentIDPrefix :: [ContentIDPrefix]
|
||||||
} ->
|
} ->
|
||||||
Resource Subtitle
|
Resource Subtitle
|
||||||
|
|
||||||
data MetaData = Meta
|
data MetaData = Meta
|
||||||
{ id :: ID,
|
{ id :: ContentID,
|
||||||
contentType :: ContentType,
|
contentType :: ContentType,
|
||||||
name :: String,
|
name :: String,
|
||||||
genres :: Maybe [String],
|
genres :: Maybe [String],
|
||||||
@@ -115,9 +147,14 @@ data MetaData = Meta
|
|||||||
}
|
}
|
||||||
deriving (Show, Generic, FromJSON, ToJSON)
|
deriving (Show, Generic, FromJSON, ToJSON)
|
||||||
|
|
||||||
data Catalog = Catalog {}
|
data Catalog = Catalog {} deriving (Show, Generic, FromJSON, ToJSON)
|
||||||
|
|
||||||
data Subtitle = Subtitle {}
|
data Subtitle = Subtitle
|
||||||
|
{ id :: SubtitleID,
|
||||||
|
url :: Url,
|
||||||
|
language :: Language
|
||||||
|
}
|
||||||
|
deriving (Show, Generic, FromJSON, ToJSON)
|
||||||
|
|
||||||
main :: IO ()
|
main :: IO ()
|
||||||
main = putStrLn "Hello, Haskell!"
|
main = putStrLn "Hello, Haskell!"
|
||||||
|
|||||||
Reference in New Issue
Block a user