Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ internal fun parseNicoCookie(fragment: String): String? {
return cookieParam.substring(eqIdx + 1)
}

internal fun rewriteNicoManifest(manifest: String, baseUrl: String, domandBid: String? = null, proxyPath: String = "/proxy/nicovideo"): String {
internal fun rewriteNicoManifest(manifest: String, baseUrl: String, domandBid: String? = null, proxyPath: String = "nicovideo"): String {
val base = URI(baseUrl)
val uriAttr = Regex("""URI="([^"]+)"""")
val bidSuffix = if (domandBid != null) "&domand_bid=${URLEncoder.encode(domandBid, StandardCharsets.UTF_8)}" else ""
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -99,7 +99,7 @@ class OkHttpProxyService(private val client: OkHttpClient) : ProxyService {

companion object {
private const val BILIBILI_REFERER = "https://www.bilibili.com"
private const val PROXY_PATH = "/proxy"
private const val PROXY_PATH = "proxy"
const val BROWSER_USER_AGENT =
"Mozilla/5.0 (Linux; Android 13; Pixel 7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Mobile Safari/537.36"
}
Expand Down
14 changes: 7 additions & 7 deletions src/test/kotlin/dev/typetype/server/NicoVideoProxyServiceTest.kt
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@ class NicoVideoProxyServiceTest {
""".trimIndent()
val result = rewriteNicoManifest(manifest, base)
val lines = result.lines()
val segLines = lines.filter { it.contains("/proxy/nicovideo?url=") }
val segLines = lines.filter { it.contains("nicovideo?url=") }
assertEquals(2, segLines.size)
assert(segLines[0].contains("seg-000001.ts"))
assert(segLines[1].contains("seg-000002.ts"))
Expand All @@ -58,7 +58,7 @@ class NicoVideoProxyServiceTest {
https://delivery.domand.nicovideo.jp/hlsbid/abc/seg-000001.ts
""".trimIndent()
val result = rewriteNicoManifest(manifest, base)
val segLine = result.lines().first { it.contains("/proxy/nicovideo?url=") }
val segLine = result.lines().first { it.contains("nicovideo?url=") }
assert(segLine.contains("delivery.domand.nicovideo.jp"))
}

Expand All @@ -70,7 +70,7 @@ class NicoVideoProxyServiceTest {
val lines = result.lines()
assert(lines[0] == "#EXTM3U")
assert(lines[1] == "#EXT-X-VERSION:3")
assert(lines[2].startsWith("/proxy/nicovideo?url="))
assert(lines[2].startsWith("nicovideo?url="))
}

@Test
Expand All @@ -79,7 +79,7 @@ class NicoVideoProxyServiceTest {
val manifest = "#EXTM3U\n#EXT-X-MAP:URI=\"https://asset.domand.nicovideo.jp/init01.cmfv\"\nseg-001.ts"
val result = rewriteNicoManifest(manifest, base)
val mapLine = result.lines().first { it.startsWith("#EXT-X-MAP") }
assert(mapLine.contains("/proxy/nicovideo?url=")) { "Expected proxied URI in EXT-X-MAP: $mapLine" }
assert(mapLine.contains("nicovideo?url=")) { "Expected proxied URI in EXT-X-MAP: $mapLine" }
assert(mapLine.contains("asset.domand.nicovideo.jp")) { "Expected asset domain in proxied URI: $mapLine" }
}

Expand All @@ -88,15 +88,15 @@ class NicoVideoProxyServiceTest {
val base = "https://delivery.domand.nicovideo.jp/hlsbid/abc/video.m3u8"
val manifest = "#EXTM3U\nseg-001.ts"
val result = rewriteNicoManifest(manifest, base, domandBid = "abc123")
val segLine = result.lines().first { it.contains("/proxy/nicovideo?url=") }
val segLine = result.lines().first { it.contains("nicovideo?url=") }
assert(segLine.contains("domand_bid=abc123")) { "Expected domand_bid in rewritten URL: $segLine" }
}

@Test
fun `rewriteNicoManifest can use generic proxy path`() {
val base = "https://delivery.domand.nicovideo.jp/hlsbid/abc/video.m3u8"
val result = rewriteNicoManifest("#EXTM3U\nseg-001.ts", base, domandBid = "abc123", proxyPath = "/proxy")
val segLine = result.lines().first { it.contains("/proxy?url=") }
val result = rewriteNicoManifest("#EXTM3U\nseg-001.ts", base, domandBid = "abc123", proxyPath = "proxy")
val segLine = result.lines().first { it.contains("proxy?url=") }
assert(segLine.contains("domand_bid=abc123")) { "Expected domand_bid in generic proxy URL: $segLine" }
}

Expand Down