better formatting of magnet links, unspaghettied some code
This commit is contained in:
parent
6446f54c20
commit
538c88728f
|
@ -11,7 +11,7 @@ import qualified Data.ByteString.Lazy.Internal as BL
|
|||
data JSONResponse d = JSONResponse
|
||||
{ resp_status :: T.Text
|
||||
, resp_message :: T.Text
|
||||
, response_data :: d
|
||||
, response_data :: Maybe d
|
||||
} deriving (Show)
|
||||
|
||||
instance (FromJSON d) => FromJSON (JSONResponse d) where
|
||||
|
|
|
@ -16,7 +16,7 @@ makeRequest :: (FromJSON a) => String -> WR.Options -> IO (Either T.Text a)
|
|||
makeRequest url opts = do
|
||||
r <- asJSON =<< getWith opts url
|
||||
pure $ case (r ^. responseBody) of
|
||||
(JSONResponse "ok" _ d) -> Right d
|
||||
(JSONResponse "ok" _ (Just d)) -> Right d
|
||||
(JSONResponse _ m _) -> Left m
|
||||
|
||||
getMovies :: IO (Either T.Text JSONListMovies)
|
||||
|
|
|
@ -5,6 +5,8 @@ import Network.HTTP.Base
|
|||
import qualified Data.Text as T
|
||||
import Data.List (intercalate)
|
||||
|
||||
type Quality = String
|
||||
|
||||
trackerList :: [String]
|
||||
trackerList = [ "udp://open.demonii.com:1337/announce"
|
||||
, "udp://tracker.openbittorrent.com:80"
|
||||
|
@ -19,13 +21,22 @@ trackerList = [ "udp://open.demonii.com:1337/announce"
|
|||
trackerString :: String
|
||||
trackerString = "&tr=" <> intercalate "&tr=" trackerList
|
||||
|
||||
toMagnets :: JSONMovie -> [String]
|
||||
toMagnets m = map (toMagnet $ T.unpack (movie_title_long m)) (map (T.unpack . torrent_hash) (movie_torrents m))
|
||||
toMagnets :: JSONMovie -> [(Quality, String)]
|
||||
toMagnets m = map (\t -> (quality t, toMagnet name (hash t))) torrents
|
||||
where
|
||||
name = T.unpack (movie_title_long m)
|
||||
quality = T.unpack . torrent_quality
|
||||
hash = T.unpack . torrent_hash
|
||||
torrents = movie_torrents m
|
||||
|
||||
|
||||
toMagnet :: String -> String -> String
|
||||
toMagnet long_name hash = "magnet:?xt=urn:btih:" <> hash <> "&dn" <> (urlEncode long_name) <> trackerString
|
||||
toMagnet long_name hash = "magnet:?xt=urn:btih:" <> hash <> "&dn"
|
||||
<> (urlEncode long_name) <> trackerString
|
||||
|
||||
printMagnets :: JSONMovie -> IO ()
|
||||
printMagnets movie = do
|
||||
putStrLn . T.unpack $ movie_title movie
|
||||
mapM_ (putStrLn . ("\t" ++)) (toMagnets movie)
|
||||
putStrLn $ '\n' : title ++ '\n' : replicate (length title) '='
|
||||
mapM_ ( \(q, m) -> putStrLn (q ++ '\t' : m)) (toMagnets movie)
|
||||
where
|
||||
title = T.unpack (movie_title movie)
|
||||
|
|
Loading…
Reference in New Issue
Block a user