当前位置: 代码迷 >> java >> 在Scala / Java中批量下载
  详细解决方案

在Scala / Java中批量下载

热度:24   发布时间:2023-07-17 20:27:29.0

我使用来获取YouTube视频的二进制流的URL,无论出于何种原因,我都会这样做:

youtube-dl -f bestaudio -g --skip-download https://www.youtube.com/watch?v=nk5YtLYcH74

获得URL之后,我以某种方式卷曲它:

https://r6---sn-gqn-vhgl.googlevideo.com/videoplayback\\?id\\=afe82f21e356....

或者我当然可以将输出转发到文件中,但这只是为了说明。 我想下载它,但不是用curl而是用Scala HTTP客户端下载的,现在是 。 但是这样我得到:

IllegalResponseException: Response Content-Length 195022703 exceeds the configured limit of 8388608

我知道这是一条大溪流,但是如何自动卷曲呢? 它如何请求块,或如何工作,如何用Scala / Java编写?

一些代码 :

val connectionFlow = Http().outgoingConnectionTls(hostname)
val responseFuture =
  Source.single(HttpRequest(uri = path, method = GET))
    .via(connectionFlow)
    .runWith(Sink.foreach[HttpResponse] { r =>
      logger.info(s"${r.status}")
  })

akka-http的默认内容长度为8M。

在application.conf文件中增加akka http客户端解析的max-content-length值,它应该可以正常工作。

akka.http.client.parsing.max-content-length =78m

关于此链接的conf和信息的更多信息

  相关解决方案