* 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 <id@joeyh.name> Mon, 30 Nov 2020 12:55:49 -0400
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 }