aboutsummaryrefslogtreecommitdiff
path: root/Command
diff options
context:
space:
mode:
authorGravatar Joey Hess <joeyh@joeyh.name>2017-11-30 14:35:25 -0400
committerGravatar Joey Hess <joeyh@joeyh.name>2017-11-30 14:57:20 -0400
commitf60688147594c2d7ba323aa29620166b96c371d1 (patch)
tree6cbf001e04490c54cb4587989a93dce23c857ee9 /Command
parent7a8d7ba5ef558f3038ee5ee06e92e5f5e8df1ec5 (diff)
check youtube-dl for --fast and --relaxed when adding new file
The filename comes from youtube-dl also. This commit was sponsored by Denis Dzyubenko on Patreon.
Diffstat (limited to 'Command')
-rw-r--r--Command/AddUrl.hs33
1 files changed, 23 insertions, 10 deletions
diff --git a/Command/AddUrl.hs b/Command/AddUrl.hs
index 12a6a4ff8..43dc40fee 100644
--- a/Command/AddUrl.hs
+++ b/Command/AddUrl.hs
@@ -244,7 +244,7 @@ addUrlChecked relaxed url u checkexistssize key =
addUrlFile :: Maybe AddUrlOptions -> Bool -> URLString -> Url.UrlInfo -> FilePath -> Annex (Maybe Key)
addUrlFile mo relaxed url urlinfo file =
ifM (Annex.getState Annex.fast <||> pure relaxed)
- ( nodownloadWeb url urlinfo file
+ ( nodownloadWeb mo url urlinfo file
, downloadWeb mo url urlinfo file
)
@@ -274,7 +274,7 @@ downloadWeb mo url urlinfo file =
case dl of
Right (Just mediafile) -> do
pruneTmpWorkDirBefore tmp (liftIO . nukeFile)
- let dest = if isJust (fileOption <$> mo)
+ let dest = if isJust (fileOption =<< mo)
then file
else takeFileName mediafile
checkCanAdd dest $ do
@@ -372,17 +372,30 @@ addWorkTree u url file key mtmp = case mtmp of
, maybe noop (\tmp -> pruneTmpWorkDirBefore tmp (liftIO . nukeFile)) mtmp
)
--- TODO youtube-dl
-nodownloadWeb :: URLString -> Url.UrlInfo -> FilePath -> Annex (Maybe Key)
-nodownloadWeb url urlinfo file
- | Url.urlExists urlinfo = checkCanAdd file $ do
- liftIO $ createDirectoryIfMissing True (parentDir file)
- let key = Backend.URL.fromUrl url (Url.urlSize urlinfo)
- addWorkTree webUUID url file key Nothing
- return (Just key)
+nodownloadWeb :: Maybe AddUrlOptions -> URLString -> Url.UrlInfo -> FilePath -> Annex (Maybe Key)
+nodownloadWeb mo url urlinfo file
+ | Url.urlExists urlinfo = go =<< youtubeDlFileName url
| otherwise = do
warning $ "unable to access url: " ++ url
return Nothing
+ where
+ go (Left _) = do
+ let key = Backend.URL.fromUrl url (Url.urlSize urlinfo)
+ nodownloadWeb' url key file
+ go (Right mediafile) = do
+ let dest = if isJust (fileOption =<< mo)
+ then file
+ else takeFileName mediafile
+ let mediaurl = setDownloader url YoutubeDownloader
+ let mediakey = Backend.URL.fromUrl mediaurl Nothing
+ nodownloadWeb' mediaurl mediakey dest
+
+nodownloadWeb' :: URLString -> Key -> FilePath -> Annex (Maybe Key)
+nodownloadWeb' url key file = checkCanAdd file $ do
+ showDestinationFile file
+ liftIO $ createDirectoryIfMissing True (parentDir file)
+ addWorkTree webUUID url file key Nothing
+ return (Just key)
url2file :: URI -> Maybe Int -> Int -> FilePath
url2file url pathdepth pathmax = case pathdepth of