32 lines
1.1 KiB
Haskell
32 lines
1.1 KiB
Haskell
module Torrent where
|
|
|
|
import JSONTypes
|
|
import Network.HTTP.Base
|
|
import qualified Data.Text as T
|
|
import Data.List (intercalate)
|
|
|
|
trackerList :: [String]
|
|
trackerList = [ "udp://open.demonii.com:1337/announce"
|
|
, "udp://tracker.openbittorrent.com:80"
|
|
, "udp://tracker.coppersurfer.tk:6969"
|
|
, "udp://glotorrents.pw:6969/announce"
|
|
, "udp://tracker.opentrackr.org:1337/announce"
|
|
, "udp://torrent.gresille.org:80/announce"
|
|
, "udp://p4p.arenabg.com:1337"
|
|
, "udp://tracker.leechers-paradise.org:6969"
|
|
]
|
|
|
|
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))
|
|
|
|
toMagnet :: String -> String -> String
|
|
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)
|