diff --git a/CHANGELOG b/CHANGELOG index 087c1f762a..c8aa120ea7 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -20,6 +20,8 @@ git-annex (8.20201128) UNRELEASED; urgency=medium * Fix reversion in 8.20201116 that made include= and exclude= in preferred/required content expressions match a path relative to the current directory, rather than the path from the top of the repository. + * importfeed: Avoid using youtube-dl when a feed does not contain an + enclosure, but only a link to an url which youtube-dl does not support. -- Joey Hess Mon, 30 Nov 2020 12:55:49 -0400 diff --git a/Command/ImportFeed.hs b/Command/ImportFeed.hs index 43882b1fd4..dc21885ecb 100644 --- a/Command/ImportFeed.hs +++ b/Command/ImportFeed.hs @@ -308,27 +308,30 @@ performDownload addunlockedmatcher opts cache todownload = case location todownl downloadmedia linkurl mediaurl mediakey | rawOption (downloadOptions opts) = downloadlink - | otherwise = do - r <- withTmpWorkDir mediakey $ \workdir -> do - dl <- youtubeDl linkurl (fromRawFilePath workdir) nullMeterUpdate - case dl of - Right (Just mediafile) -> do - let ext = case takeExtension mediafile of - [] -> ".m" - s -> s - ok <- rundownload linkurl ext $ \f -> - checkCanAdd (downloadOptions opts) f $ \canadd -> do - addWorkTree canadd addunlockedmatcher webUUID mediaurl f mediakey (Just (toRawFilePath mediafile)) - return (Just [mediakey]) - return (Just ok) - -- youtude-dl didn't support it, so - -- download it as if the link were - -- an enclosure. - Right Nothing -> Just <$> downloadlink - Left msg -> do - warning msg - return Nothing - return (fromMaybe False r) + | otherwise = ifM (youtubeDlSupported linkurl) + ( do + r <- withTmpWorkDir mediakey $ \workdir -> do + dl <- youtubeDl linkurl (fromRawFilePath workdir) nullMeterUpdate + case dl of + Right (Just mediafile) -> do + let ext = case takeExtension mediafile of + [] -> ".m" + s -> s + ok <- rundownload linkurl ext $ \f -> + checkCanAdd (downloadOptions opts) f $ \canadd -> do + addWorkTree canadd addunlockedmatcher webUUID mediaurl f mediakey (Just (toRawFilePath mediafile)) + return (Just [mediakey]) + return (Just ok) + -- youtube-dl didn't support it, so + -- download it as if the link were + -- an enclosure. + Right Nothing -> Just <$> downloadlink + Left msg -> do + warning $ linkurl ++ ": " ++ msg + return Nothing + return (fromMaybe False r) + , downloadlink + ) where downloadlink = performDownload addunlockedmatcher opts cache todownload { location = Enclosure linkurl }