mirror of
https://github.com/open-ani/animeko.git
synced 2025-05-17 14:06:12 +08:00
增加在线数据源 nyafun (仅 Android)
This commit is contained in:
1
.gitattributes
vendored
Normal file
1
.gitattributes
vendored
Normal file
@ -0,0 +1 @@
|
||||
*.html linguist-vendored
|
@ -2,6 +2,11 @@ package me.him188.ani.android
|
||||
|
||||
import kotlinx.coroutines.CoroutineScope
|
||||
import me.him188.ani.android.navigation.AndroidBrowserNavigator
|
||||
import me.him188.ani.app.data.media.resolver.AndroidWebVideoSourceResolver
|
||||
import me.him188.ani.app.data.media.resolver.HttpStreamingVideoSourceResolver
|
||||
import me.him188.ani.app.data.media.resolver.LocalFileVideoSourceResolver
|
||||
import me.him188.ani.app.data.media.resolver.TorrentVideoSourceResolver
|
||||
import me.him188.ani.app.data.media.resolver.VideoSourceResolver
|
||||
import me.him188.ani.app.navigation.BrowserNavigator
|
||||
import me.him188.ani.app.tools.torrent.DefaultTorrentManager
|
||||
import me.him188.ani.app.tools.torrent.TorrentManager
|
||||
@ -22,4 +27,15 @@ fun getAndroidModules(
|
||||
)
|
||||
}
|
||||
single<PlayerStateFactory> { ExoPlayerStateFactory() }
|
||||
|
||||
|
||||
factory<VideoSourceResolver> {
|
||||
VideoSourceResolver.from(
|
||||
get<TorrentManager>().engines
|
||||
.map { TorrentVideoSourceResolver(it) }
|
||||
.plus(LocalFileVideoSourceResolver())
|
||||
.plus(HttpStreamingVideoSourceResolver())
|
||||
.plus(AndroidWebVideoSourceResolver())
|
||||
)
|
||||
}
|
||||
}
|
@ -39,6 +39,10 @@ import androidx.compose.ui.window.WindowState
|
||||
import androidx.compose.ui.window.singleWindowApplication
|
||||
import dev.dirs.ProjectDirectories
|
||||
import kotlinx.coroutines.launch
|
||||
import me.him188.ani.app.data.media.resolver.HttpStreamingVideoSourceResolver
|
||||
import me.him188.ani.app.data.media.resolver.LocalFileVideoSourceResolver
|
||||
import me.him188.ani.app.data.media.resolver.TorrentVideoSourceResolver
|
||||
import me.him188.ani.app.data.media.resolver.VideoSourceResolver
|
||||
import me.him188.ani.app.interaction.PlatformImplementations
|
||||
import me.him188.ani.app.navigation.AniNavigator
|
||||
import me.him188.ani.app.navigation.BrowserNavigator
|
||||
@ -118,6 +122,14 @@ object AniDesktop {
|
||||
}
|
||||
}
|
||||
single<BrowserNavigator> { DesktopBrowserNavigator() }
|
||||
factory<VideoSourceResolver> {
|
||||
VideoSourceResolver.from(
|
||||
get<TorrentManager>().engines
|
||||
.map { TorrentVideoSourceResolver(it) }
|
||||
.plus(LocalFileVideoSourceResolver())
|
||||
.plus(HttpStreamingVideoSourceResolver())
|
||||
)
|
||||
}
|
||||
})
|
||||
}.startCommonKoinModule(coroutineScope)
|
||||
|
||||
|
@ -82,6 +82,7 @@ kotlin {
|
||||
api(projects.dataSources.acgRip)
|
||||
api(projects.dataSources.mikan)
|
||||
api(projects.dataSources.bangumi)
|
||||
api(projects.dataSources.nyafun)
|
||||
|
||||
// Danmaku
|
||||
// api(projects.danmaku.api)
|
||||
|
@ -0,0 +1,127 @@
|
||||
package me.him188.ani.app.data.media.resolver
|
||||
|
||||
import android.annotation.SuppressLint
|
||||
import android.content.Context
|
||||
import android.webkit.WebResourceRequest
|
||||
import android.webkit.WebResourceResponse
|
||||
import android.webkit.WebView
|
||||
import android.webkit.WebViewClient
|
||||
import androidx.compose.runtime.Composable
|
||||
import androidx.compose.runtime.DisposableEffect
|
||||
import kotlinx.coroutines.CompletableDeferred
|
||||
import kotlinx.coroutines.DelicateCoroutinesApi
|
||||
import kotlinx.coroutines.Dispatchers
|
||||
import kotlinx.coroutines.GlobalScope
|
||||
import kotlinx.coroutines.launch
|
||||
import kotlinx.coroutines.withContext
|
||||
import me.him188.ani.app.platform.LocalContext
|
||||
import me.him188.ani.app.videoplayer.data.VideoSource
|
||||
import me.him188.ani.app.videoplayer.torrent.HttpStreamingVideoSource
|
||||
import me.him188.ani.datasources.api.Media
|
||||
import me.him188.ani.datasources.api.matcher.WebVideoMatcher
|
||||
import me.him188.ani.datasources.api.matcher.WebVideoMatcherContext
|
||||
import me.him188.ani.datasources.api.topic.ResourceLocation
|
||||
import me.him188.ani.utils.logging.info
|
||||
import me.him188.ani.utils.logging.logger
|
||||
import java.io.ByteArrayInputStream
|
||||
|
||||
/**
|
||||
* 用 WebView 加载网站, 拦截 WebView 加载资源, 用各数据源提供的 [WebVideoMatcher]
|
||||
*/
|
||||
class AndroidWebVideoSourceResolver : VideoSourceResolver {
|
||||
private val matchers = java.util.ServiceLoader.load(WebVideoMatcher::class.java).filterNotNull()
|
||||
|
||||
override suspend fun supports(media: Media): Boolean = media.download is ResourceLocation.WebVideo
|
||||
|
||||
private var attached: Context? = null
|
||||
|
||||
@SuppressLint("SetJavaScriptEnabled")
|
||||
@Composable
|
||||
override fun ComposeContent() {
|
||||
super.ComposeContent()
|
||||
|
||||
val context = LocalContext.current
|
||||
DisposableEffect(true) {
|
||||
attached = context
|
||||
onDispose {
|
||||
attached = null
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
override suspend fun resolve(media: Media, episode: EpisodeMetadata): VideoSource<*> {
|
||||
if (!supports(media)) throw UnsupportedMediaException(media)
|
||||
val matcherContext = WebVideoMatcherContext(media)
|
||||
val webVideo = WebViewVideoExtractor().getVideoResourceUrl(
|
||||
attached ?: throw IllegalStateException("WebVideoSourceResolver not attached"),
|
||||
media.download.uri,
|
||||
resourceMatcher = {
|
||||
matchers.firstNotNullOfOrNull { matcher ->
|
||||
matcher.match(it, matcherContext)
|
||||
}
|
||||
}
|
||||
)
|
||||
return HttpStreamingVideoSource(webVideo.m3u8Url, media.originalTitle, webVideo = webVideo)
|
||||
}
|
||||
}
|
||||
|
||||
class WebViewVideoExtractor {
|
||||
private companion object {
|
||||
private val logger = logger<WebViewVideoExtractor>()
|
||||
}
|
||||
|
||||
@OptIn(DelicateCoroutinesApi::class)
|
||||
@SuppressLint("SetJavaScriptEnabled")
|
||||
suspend fun <R : Any> getVideoResourceUrl(
|
||||
context: Context,
|
||||
pageUrl: String,
|
||||
resourceMatcher: (String) -> R?,
|
||||
): R {
|
||||
val deferred = CompletableDeferred<R>()
|
||||
withContext(Dispatchers.Main) {
|
||||
val webView = WebView(context)
|
||||
deferred.invokeOnCompletion {
|
||||
GlobalScope.launch(Dispatchers.Main.immediate) {
|
||||
webView.destroy()
|
||||
}
|
||||
}
|
||||
|
||||
webView.settings.javaScriptEnabled = true
|
||||
|
||||
webView.webViewClient = object : WebViewClient() {
|
||||
override fun shouldInterceptRequest(
|
||||
view: WebView?,
|
||||
request: WebResourceRequest?
|
||||
): WebResourceResponse? {
|
||||
if (request == null) return null
|
||||
val url = request.url ?: return super.shouldInterceptRequest(view, request)
|
||||
val matched = resourceMatcher(url.toString())
|
||||
if (matched != null) {
|
||||
logger.info { "Found video resource via shouldInterceptRequest: $url" }
|
||||
deferred.complete(matched)
|
||||
|
||||
// 拦截, 以防资源只能加载一次
|
||||
return WebResourceResponse(
|
||||
"text/plain",
|
||||
"UTF-8", 500,
|
||||
"Internal Server Error",
|
||||
mapOf(),
|
||||
ByteArrayInputStream(ByteArray(0)),
|
||||
)
|
||||
}
|
||||
return super.shouldInterceptRequest(view, request)
|
||||
}
|
||||
}
|
||||
webView.loadUrl(pageUrl)
|
||||
}
|
||||
|
||||
return try {
|
||||
deferred.await()
|
||||
} catch (e: Throwable) {
|
||||
if (deferred.isActive) {
|
||||
deferred.cancel()
|
||||
}
|
||||
throw e
|
||||
}
|
||||
}
|
||||
}
|
@ -3,6 +3,7 @@ package me.him188.ani.app.data.media.resolver
|
||||
import me.him188.ani.app.videoplayer.data.VideoSource
|
||||
import me.him188.ani.app.videoplayer.torrent.HttpStreamingVideoSource
|
||||
import me.him188.ani.datasources.api.Media
|
||||
import me.him188.ani.datasources.api.matcher.WebVideo
|
||||
import me.him188.ani.datasources.api.topic.ResourceLocation
|
||||
|
||||
class HttpStreamingVideoSourceResolver : VideoSourceResolver {
|
||||
@ -12,6 +13,10 @@ class HttpStreamingVideoSourceResolver : VideoSourceResolver {
|
||||
|
||||
override suspend fun resolve(media: Media, episode: EpisodeMetadata): VideoSource<*> {
|
||||
if (!supports(media)) throw UnsupportedMediaException(media)
|
||||
return HttpStreamingVideoSource(media.download.uri, media.originalTitle)
|
||||
return HttpStreamingVideoSource(
|
||||
media.download.uri,
|
||||
media.originalTitle,
|
||||
WebVideo(media.download.uri, emptyMap())
|
||||
)
|
||||
}
|
||||
}
|
@ -1,5 +1,6 @@
|
||||
package me.him188.ani.app.data.media.resolver
|
||||
|
||||
import androidx.compose.runtime.Composable
|
||||
import me.him188.ani.app.videoplayer.data.VideoSource
|
||||
import me.him188.ani.datasources.api.EpisodeSort
|
||||
import me.him188.ani.datasources.api.Media
|
||||
@ -16,6 +17,13 @@ interface VideoSourceResolver {
|
||||
*/
|
||||
suspend fun supports(media: Media): Boolean
|
||||
|
||||
/**
|
||||
* "挂载" 到 composable 中, 以便进行需要虚拟 UI 的操作, 例如 WebView
|
||||
*/
|
||||
@Composable
|
||||
fun ComposeContent() {
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据 [EpisodeMetadata] 中的集数信息和 [Media.location] 中的下载方式,
|
||||
* 解析一个 [Media] 为可以播放的 [VideoSource].
|
||||
@ -53,6 +61,13 @@ private class ChainedVideoSourceResolver(
|
||||
return resolvers.any { it.supports(media) }
|
||||
}
|
||||
|
||||
@Composable
|
||||
override fun ComposeContent() {
|
||||
this.resolvers.forEach {
|
||||
it.ComposeContent()
|
||||
}
|
||||
}
|
||||
|
||||
override suspend fun resolve(media: Media, episode: EpisodeMetadata): VideoSource<*> {
|
||||
return resolvers.firstOrNull { it.supports(media) }?.resolve(media, episode)
|
||||
?: throw UnsupportedMediaException(media)
|
||||
|
@ -26,12 +26,17 @@ import androidx.compose.runtime.compositionLocalOf
|
||||
import androidx.compose.runtime.remember
|
||||
import kotlinx.coroutines.DelicateCoroutinesApi
|
||||
import kotlinx.coroutines.GlobalScope
|
||||
import me.him188.ani.app.data.media.resolver.HttpStreamingVideoSourceResolver
|
||||
import me.him188.ani.app.data.media.resolver.LocalFileVideoSourceResolver
|
||||
import me.him188.ani.app.data.media.resolver.TorrentVideoSourceResolver
|
||||
import me.him188.ani.app.data.media.resolver.VideoSourceResolver
|
||||
import me.him188.ani.app.navigation.AniNavigator
|
||||
import me.him188.ani.app.navigation.LocalNavigator
|
||||
import me.him188.ani.app.platform.LocalContext
|
||||
import me.him188.ani.app.platform.getCommonKoinModule
|
||||
import me.him188.ani.app.session.SessionManager
|
||||
import me.him188.ani.app.session.TestSessionManagers
|
||||
import me.him188.ani.app.tools.torrent.TorrentManager
|
||||
import me.him188.ani.app.ui.theme.aniColorScheme
|
||||
import me.him188.ani.app.videoplayer.ui.state.DummyPlayerState
|
||||
import me.him188.ani.app.videoplayer.ui.state.PlayerStateFactory
|
||||
@ -66,6 +71,14 @@ fun ProvideCompositionLocalsForPreview(
|
||||
playerStateFactory
|
||||
}
|
||||
single<SessionManager> { TestSessionManagers.Online }
|
||||
factory<VideoSourceResolver> {
|
||||
VideoSourceResolver.from(
|
||||
get<TorrentManager>().engines
|
||||
.map { TorrentVideoSourceResolver(it) }
|
||||
.plus(LocalFileVideoSourceResolver())
|
||||
.plus(HttpStreamingVideoSourceResolver())
|
||||
)
|
||||
}
|
||||
module()
|
||||
})
|
||||
}
|
||||
|
@ -127,6 +127,8 @@ fun EpisodePageContent(
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
vm.videoSourceResolver.ComposeContent()
|
||||
}
|
||||
|
||||
@Composable
|
||||
|
@ -127,6 +127,8 @@ class EpisodePresentation(
|
||||
|
||||
@Stable
|
||||
interface EpisodeViewModel : HasBackgroundScope {
|
||||
val videoSourceResolver: VideoSourceResolver
|
||||
|
||||
val subjectId: Int
|
||||
val episodeId: Int
|
||||
|
||||
@ -205,7 +207,7 @@ private class EpisodeViewModelImpl(
|
||||
private val playerStateFactory: PlayerStateFactory by inject()
|
||||
private val subjectManager: SubjectManager by inject()
|
||||
private val danmakuManager: DanmakuManager by inject()
|
||||
private val videoSourceResolver: VideoSourceResolver by inject()
|
||||
override val videoSourceResolver: VideoSourceResolver by inject()
|
||||
private val settingsRepository: SettingsRepository by inject()
|
||||
|
||||
private val subjectInfo = flowOf(subjectId).mapLatest { subjectId ->
|
||||
|
@ -20,6 +20,7 @@ import me.him188.ani.datasources.bangumi.BangumiSubjectProvider
|
||||
import me.him188.ani.datasources.dmhy.DmhyMediaSource
|
||||
import me.him188.ani.datasources.mikan.MikanCNMediaSource
|
||||
import me.him188.ani.datasources.mikan.MikanMediaSource
|
||||
import me.him188.ani.datasources.nyafun.NyafunMediaSource
|
||||
import org.jetbrains.compose.resources.painterResource
|
||||
|
||||
@Stable
|
||||
@ -31,6 +32,7 @@ fun renderMediaSource(
|
||||
MikanMediaSource.ID -> "Mikan"
|
||||
MikanCNMediaSource.ID -> "Mikan (中国大陆)"
|
||||
BangumiSubjectProvider.ID -> "Bangumi"
|
||||
NyafunMediaSource.ID -> "Nyafun"
|
||||
LOCAL_FS_MEDIA_SOURCE_ID -> "本地"
|
||||
else -> id
|
||||
}
|
||||
@ -44,6 +46,7 @@ fun renderMediaSourceDescription(
|
||||
MikanMediaSource.ID -> "mikanani.me"
|
||||
MikanCNMediaSource.ID -> "mikanime.tv"
|
||||
BangumiSubjectProvider.ID -> "bgm.tv"
|
||||
NyafunMediaSource.ID -> "nyafun.net"
|
||||
LOCAL_FS_MEDIA_SOURCE_ID -> null
|
||||
else -> null
|
||||
}
|
||||
|
@ -34,10 +34,6 @@ import me.him188.ani.app.data.media.MediaCacheManagerImpl
|
||||
import me.him188.ani.app.data.media.MediaSourceManager
|
||||
import me.him188.ani.app.data.media.MediaSourceManagerImpl
|
||||
import me.him188.ani.app.data.media.TorrentMediaCacheEngine
|
||||
import me.him188.ani.app.data.media.resolver.HttpStreamingVideoSourceResolver
|
||||
import me.him188.ani.app.data.media.resolver.LocalFileVideoSourceResolver
|
||||
import me.him188.ani.app.data.media.resolver.TorrentVideoSourceResolver
|
||||
import me.him188.ani.app.data.media.resolver.VideoSourceResolver
|
||||
import me.him188.ani.app.data.repositories.EpisodePreferencesRepository
|
||||
import me.him188.ani.app.data.repositories.EpisodePreferencesRepositoryImpl
|
||||
import me.him188.ani.app.data.repositories.EpisodeRepository
|
||||
@ -151,14 +147,6 @@ fun KoinApplication.getCommonKoinModule(getContext: () -> Context, coroutineScop
|
||||
}
|
||||
|
||||
|
||||
single<VideoSourceResolver> {
|
||||
VideoSourceResolver.from(
|
||||
get<TorrentManager>().engines
|
||||
.map { TorrentVideoSourceResolver(it) }
|
||||
.plus(LocalFileVideoSourceResolver())
|
||||
.plus(HttpStreamingVideoSourceResolver())
|
||||
)
|
||||
}
|
||||
single<MediaSourceManager> {
|
||||
MediaSourceManagerImpl(
|
||||
additionalSources = {
|
||||
|
@ -13,7 +13,9 @@ import androidx.media3.common.TrackGroup
|
||||
import androidx.media3.common.Tracks
|
||||
import androidx.media3.common.VideoSize
|
||||
import androidx.media3.common.util.UnstableApi
|
||||
import androidx.media3.datasource.DefaultHttpDataSource
|
||||
import androidx.media3.exoplayer.ExoPlayer
|
||||
import androidx.media3.exoplayer.source.DefaultMediaSourceFactory
|
||||
import androidx.media3.exoplayer.source.ProgressiveMediaSource
|
||||
import androidx.media3.exoplayer.trackselection.DefaultTrackSelector
|
||||
import androidx.media3.exoplayer.trackselection.ExoTrackSelection
|
||||
@ -89,7 +91,23 @@ internal class ExoPlayerState @UiThread constructor(
|
||||
emptyVideoData(),
|
||||
releaseResource = {},
|
||||
setMedia = {
|
||||
player.setMediaItem(MediaItem.fromUri(source.uri))
|
||||
player.setMediaSource(
|
||||
DefaultMediaSourceFactory(
|
||||
DefaultHttpDataSource.Factory()
|
||||
.setUserAgent("""Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3""")
|
||||
.setDefaultRequestProperties(
|
||||
mapOf(
|
||||
"Referer" to "https://play.nyafun.net/",
|
||||
"Sec-Ch-Ua-Mobile" to "?0",
|
||||
"Sec-Ch-Ua-Platform" to "macOS",
|
||||
"Sec-Fetch-Dest" to "video",
|
||||
"Sec-Fetch-Mode" to "no-cors",
|
||||
"Sec-Fetch-Site" to "cross-site",
|
||||
)
|
||||
)
|
||||
.setConnectTimeoutMs(30_000),
|
||||
).createMediaSource(MediaItem.fromUri(source.uri))
|
||||
)
|
||||
},
|
||||
)
|
||||
}
|
||||
|
@ -4,12 +4,14 @@ import kotlinx.coroutines.flow.Flow
|
||||
import kotlinx.coroutines.flow.flowOf
|
||||
import me.him188.ani.app.videoplayer.data.VideoData
|
||||
import me.him188.ani.app.videoplayer.data.VideoSource
|
||||
import me.him188.ani.datasources.api.matcher.WebVideo
|
||||
import me.him188.ani.datasources.api.topic.FileSize
|
||||
import me.him188.ani.utils.io.SeekableInput
|
||||
|
||||
class HttpStreamingVideoSource(
|
||||
override val uri: String,
|
||||
private val filename: String,
|
||||
val webVideo: WebVideo,
|
||||
) : VideoSource<HttpStreamingVideoData> {
|
||||
override suspend fun open(): HttpStreamingVideoData {
|
||||
return HttpStreamingVideoData(uri, filename)
|
||||
|
@ -82,7 +82,7 @@ sealed interface Media {
|
||||
*/
|
||||
@Immutable
|
||||
@Serializable
|
||||
class DefaultMedia(
|
||||
data class DefaultMedia(
|
||||
override val mediaId: String,
|
||||
override val mediaSourceId: String, // e.g. "dmhy"
|
||||
override val originalUrl: String,
|
||||
@ -143,6 +143,10 @@ class MediaProperties private constructor(
|
||||
subtitleLanguageIds, resolution, alliance, size,
|
||||
_primaryConstructorMarker = Unit
|
||||
)
|
||||
|
||||
override fun toString(): String {
|
||||
return "MediaProperties(subtitleLanguageIds=$subtitleLanguageIds, resolution='$resolution', alliance='$alliance', size=$size)"
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
28
data-sources/api/src/matcher/WebVideoMatcher.kt
Normal file
28
data-sources/api/src/matcher/WebVideoMatcher.kt
Normal file
@ -0,0 +1,28 @@
|
||||
package me.him188.ani.datasources.api.matcher
|
||||
|
||||
import me.him188.ani.datasources.api.Media
|
||||
|
||||
/**
|
||||
* 匹配 WebView 拦截到的资源.
|
||||
*/
|
||||
interface WebVideoMatcher {
|
||||
fun match(
|
||||
url: String,
|
||||
context: WebVideoMatcherContext
|
||||
): WebVideo?
|
||||
}
|
||||
|
||||
class WebVideoMatcherContext(
|
||||
val media: Media,
|
||||
)
|
||||
|
||||
class WebVideo(
|
||||
/**
|
||||
* 视频数据地址
|
||||
*/
|
||||
val m3u8Url: String,
|
||||
/**
|
||||
* 请求视频数据时需要的 headers
|
||||
*/
|
||||
val headers: Map<String, String>
|
||||
)
|
@ -5,6 +5,7 @@ import kotlinx.coroutines.flow.combine
|
||||
import kotlinx.coroutines.flow.filter
|
||||
import kotlinx.coroutines.flow.first
|
||||
import kotlinx.coroutines.flow.map
|
||||
import kotlinx.coroutines.flow.mapNotNull
|
||||
import kotlinx.coroutines.flow.merge
|
||||
|
||||
/**
|
||||
@ -32,6 +33,24 @@ inline fun <T, R> SizedSource<T>.map(crossinline transform: suspend (T) -> R): S
|
||||
}
|
||||
}
|
||||
|
||||
inline fun <T, R> SizedSource<T>.mapNotNull(crossinline transform: suspend (T) -> R?): SizedSource<R> {
|
||||
val self = this
|
||||
return object : SizedSource<R> {
|
||||
override val results = self.results.mapNotNull(transform)
|
||||
override val finished = self.finished
|
||||
override val totalSize = self.totalSize
|
||||
}
|
||||
}
|
||||
|
||||
inline fun <T> SizedSource<T>.filter(crossinline predicate: suspend (T) -> Boolean): SizedSource<T> {
|
||||
val self = this
|
||||
return object : SizedSource<T> {
|
||||
override val results = self.results.filter(predicate)
|
||||
override val finished = self.finished
|
||||
override val totalSize = self.totalSize
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Merge multiple [SizedSource] into one.
|
||||
*
|
||||
|
@ -72,7 +72,7 @@ interface MediaSource {
|
||||
/**
|
||||
* A media matched from the source.
|
||||
*/
|
||||
class MediaMatch(
|
||||
data class MediaMatch(
|
||||
val media: Media,
|
||||
val kind: MatchKind,
|
||||
)
|
||||
@ -192,6 +192,8 @@ enum class ConnectionStatus {
|
||||
FAILED,
|
||||
}
|
||||
|
||||
fun Boolean.toConnectionStatus() = if (this) ConnectionStatus.SUCCESS else ConnectionStatus.FAILED
|
||||
|
||||
interface SearchOrdering {
|
||||
val id: String
|
||||
val name: String
|
||||
|
@ -39,7 +39,24 @@ sealed class ResourceLocation {
|
||||
data class HttpStreamingFile(override val uri: String) : ResourceLocation() {
|
||||
init {
|
||||
require(uri.startsWith("https://") || uri.startsWith("http://")) {
|
||||
"HttpStreamingFile uri must start with http:// or https://"
|
||||
"HttpStreamingFile uri must start with 'http://' or 'https://', but was $uri"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 需要 WebView 去里面解析视频链接
|
||||
*/
|
||||
@Serializable
|
||||
data class WebVideo(
|
||||
/**
|
||||
* Web 页面地址
|
||||
*/
|
||||
override val uri: String,
|
||||
) : ResourceLocation() {
|
||||
init {
|
||||
require(uri.startsWith("https://") || uri.startsWith("http://")) {
|
||||
"WebVideo uri must start with 'http://' or 'https://', but was $uri"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -21,9 +21,12 @@ import kotlinx.coroutines.flow.shareIn
|
||||
import kotlinx.coroutines.flow.take
|
||||
import me.him188.ani.datasources.api.Media
|
||||
import me.him188.ani.datasources.api.paging.SizedSource
|
||||
import me.him188.ani.datasources.api.paging.filter
|
||||
import me.him188.ani.datasources.api.source.MatchKind
|
||||
import me.him188.ani.datasources.api.source.MediaFetchRequest
|
||||
import me.him188.ani.datasources.api.source.MediaMatch
|
||||
import me.him188.ani.datasources.api.source.MediaSource
|
||||
import me.him188.ani.datasources.api.topic.contains
|
||||
import me.him188.ani.utils.logging.error
|
||||
import me.him188.ani.utils.logging.logger
|
||||
import kotlin.coroutines.CoroutineContext
|
||||
@ -223,7 +226,9 @@ class MediaSourceMediaFetcher(
|
||||
config,
|
||||
pagedSources = flowOf(request)
|
||||
.map {
|
||||
provider.fetch(it)
|
||||
provider.fetch(it).filter { media ->
|
||||
media.matches(request)
|
||||
}
|
||||
}.shareIn(
|
||||
scope, replay = 1, started = SharingStarted.Lazily,
|
||||
).take(1) // so that the flow can normally complete
|
||||
@ -282,3 +287,10 @@ class MediaSourceMediaFetcher(
|
||||
val logger = logger<MediaSourceMediaFetcher>()
|
||||
}
|
||||
}
|
||||
|
||||
private fun MediaMatch.matches(request: MediaFetchRequest): Boolean {
|
||||
if (this.kind == MatchKind.NONE) return false
|
||||
val actualEpRange = this.media.episodeRange ?: return false
|
||||
val expectedEp = request.episodeEp
|
||||
return !(request.episodeSort !in actualEpRange && (expectedEp == null || expectedEp !in actualEpRange))
|
||||
}
|
28
data-sources/nyafun/build.gradle.kts
Normal file
28
data-sources/nyafun/build.gradle.kts
Normal file
@ -0,0 +1,28 @@
|
||||
plugins {
|
||||
kotlin("jvm")
|
||||
kotlin("plugin.serialization")
|
||||
id("kotlinx-atomicfu")
|
||||
`flatten-source-sets`
|
||||
}
|
||||
|
||||
dependencies {
|
||||
api(projects.dataSources.api)
|
||||
|
||||
api(libs.kotlinx.coroutines.core)
|
||||
implementation(libs.ktor.client.core)
|
||||
|
||||
implementation(libs.ktor.client.content.negotiation)
|
||||
implementation(libs.ktor.client.logging)
|
||||
implementation(libs.ktor.serialization.kotlinx.json)
|
||||
implementation(libs.kotlinx.serialization.json)
|
||||
implementation(libs.jsoup)
|
||||
implementation(libs.slf4j.api)
|
||||
implementation(projects.utils.slf4jKt)
|
||||
implementation(projects.utils.ktorClient)
|
||||
runtimeOnly(libs.ktor.client.okhttp)
|
||||
implementation(libs.slf4j.simple)
|
||||
}
|
||||
|
||||
tasks.withType<Jar> {
|
||||
duplicatesStrategy = DuplicatesStrategy.EXCLUDE // why is there a duplicate?
|
||||
}
|
@ -0,0 +1 @@
|
||||
me.him188.ani.datasources.nyafun.NyafunWebVideoMatcher
|
@ -0,0 +1,19 @@
|
||||
#
|
||||
# Ani
|
||||
# Copyright (C) 2022-2024 Him188
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation, either version 3 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
#
|
||||
|
||||
me.him188.ani.datasources.nyafun.NyafunMediaSource$Factory
|
190
data-sources/nyafun/src/NyafunMediaSource.kt
Normal file
190
data-sources/nyafun/src/NyafunMediaSource.kt
Normal file
@ -0,0 +1,190 @@
|
||||
package me.him188.ani.datasources.nyafun
|
||||
|
||||
import io.ktor.client.plugins.BrowserUserAgent
|
||||
import io.ktor.client.plugins.logging.LogLevel
|
||||
import io.ktor.client.plugins.logging.Logging
|
||||
import io.ktor.client.request.HttpRequestBuilder
|
||||
import io.ktor.client.request.get
|
||||
import io.ktor.client.request.parameter
|
||||
import io.ktor.client.statement.bodyAsChannel
|
||||
import io.ktor.http.isSuccess
|
||||
import io.ktor.utils.io.jvm.javaio.toInputStream
|
||||
import kotlinx.coroutines.flow.asFlow
|
||||
import kotlinx.coroutines.flow.emptyFlow
|
||||
import kotlinx.coroutines.flow.firstOrNull
|
||||
import kotlinx.coroutines.flow.flatMapMerge
|
||||
import kotlinx.coroutines.flow.flow
|
||||
import kotlinx.coroutines.flow.map
|
||||
import kotlinx.coroutines.flow.retry
|
||||
import me.him188.ani.datasources.api.DefaultMedia
|
||||
import me.him188.ani.datasources.api.EpisodeSort
|
||||
import me.him188.ani.datasources.api.MediaProperties
|
||||
import me.him188.ani.datasources.api.matcher.WebVideo
|
||||
import me.him188.ani.datasources.api.matcher.WebVideoMatcher
|
||||
import me.him188.ani.datasources.api.matcher.WebVideoMatcherContext
|
||||
import me.him188.ani.datasources.api.paging.SinglePagePagedSource
|
||||
import me.him188.ani.datasources.api.paging.SizedSource
|
||||
import me.him188.ani.datasources.api.source.ConnectionStatus
|
||||
import me.him188.ani.datasources.api.source.MatchKind
|
||||
import me.him188.ani.datasources.api.source.MediaFetchRequest
|
||||
import me.him188.ani.datasources.api.source.MediaMatch
|
||||
import me.him188.ani.datasources.api.source.MediaSource
|
||||
import me.him188.ani.datasources.api.source.MediaSourceConfig
|
||||
import me.him188.ani.datasources.api.source.MediaSourceFactory
|
||||
import me.him188.ani.datasources.api.source.applyMediaSourceConfig
|
||||
import me.him188.ani.datasources.api.source.toConnectionStatus
|
||||
import me.him188.ani.datasources.api.topic.EpisodeRange
|
||||
import me.him188.ani.datasources.api.topic.FileSize
|
||||
import me.him188.ani.datasources.api.topic.ResourceLocation
|
||||
import me.him188.ani.utils.ktor.createDefaultHttpClient
|
||||
import me.him188.ani.utils.logging.info
|
||||
import me.him188.ani.utils.logging.logger
|
||||
import org.jsoup.Jsoup
|
||||
import org.jsoup.nodes.Document
|
||||
|
||||
data class NyafunBangumi(
|
||||
val id: String,
|
||||
val name: String,
|
||||
val url: String,
|
||||
)
|
||||
|
||||
data class NyafunEp(
|
||||
val name: String,
|
||||
val url: String,
|
||||
)
|
||||
|
||||
class NyafunWebVideoMatcher : WebVideoMatcher {
|
||||
override fun match(url: String, context: WebVideoMatcherContext): WebVideo? {
|
||||
if (context.media.mediaSourceId != NyafunMediaSource.ID) return null
|
||||
// we want https://vod.2bdm.cc/2024/04/gs8h/01.mp4?verify=1716675316-p3ScUWwQbHmMf5%2F63tM6%2FR2Ac8NydzYvECQ1XmTUhbU%3D
|
||||
if ((url.contains(".mp4") || url.contains(".mkv") || url.contains(".m3u8"))
|
||||
&& url.contains("verify=")
|
||||
) {
|
||||
return WebVideo(url, mapOf("Referer" to "https://www.nyafun.net/play"))
|
||||
}
|
||||
return null
|
||||
}
|
||||
}
|
||||
|
||||
class NyafunMediaSource(config: MediaSourceConfig) : MediaSource {
|
||||
companion object {
|
||||
val ID = "nyafun"
|
||||
val logger = logger<NyafunMediaSource>()
|
||||
internal const val BASE_URL = "https://www.nyafun.net"
|
||||
|
||||
// https://www.nyafun.net/search.html?wd=girls%20band%20cry
|
||||
fun parseBangumiSearch(document: Document): List<NyafunBangumi> =
|
||||
document.getElementsByClass("public-list-box").map { element ->
|
||||
val a = element.select(".thumb-txt.cor4.hide").select("a")
|
||||
val name = a.text()
|
||||
val url = a.attr("href")
|
||||
val id = url.substringBeforeLast(".html").substringAfterLast("/")
|
||||
NyafunBangumi(
|
||||
id = id,
|
||||
name = name,
|
||||
url = BASE_URL + url,
|
||||
)
|
||||
}
|
||||
|
||||
// https://www.nyafun.net/bangumi/7168.html
|
||||
fun parseEpisodeList(document: Document): List<NyafunEp> {
|
||||
return document.getElementsByClass("anthology-list-play").flatMap { element ->
|
||||
element.select("a").map { a ->
|
||||
val name = a.text() // "第1集"
|
||||
val url = a.attr("href") // "/play/7168-1-1.html"
|
||||
NyafunEp(name, BASE_URL + url)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
private val subtitleLanguages = listOf("CHS")
|
||||
|
||||
fun createMediaMatch(
|
||||
bangumi: NyafunBangumi,
|
||||
ep: NyafunEp
|
||||
): MediaMatch {
|
||||
val sort = EpisodeSort(ep.name.removePrefix("第").removeSuffix("集"))
|
||||
return MediaMatch(
|
||||
DefaultMedia(
|
||||
mediaId = "$ID.${bangumi.id}-${sort}",
|
||||
mediaSourceId = ID,
|
||||
originalUrl = bangumi.url,
|
||||
download = ResourceLocation.WebVideo(ep.url),
|
||||
originalTitle = """${bangumi.name} ${ep.name}""",
|
||||
publishedTime = 0L,
|
||||
properties = MediaProperties(
|
||||
subtitleLanguageIds = subtitleLanguages,
|
||||
resolution = "1080P",
|
||||
alliance = ID,
|
||||
size = FileSize.Unspecified,
|
||||
),
|
||||
episodeRange = EpisodeRange.single(sort),
|
||||
), MatchKind.FUZZY
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
class Factory : MediaSourceFactory {
|
||||
override val mediaSourceId: String get() = ID
|
||||
|
||||
override fun create(config: MediaSourceConfig): MediaSource = NyafunMediaSource(config)
|
||||
}
|
||||
|
||||
internal val client = createDefaultHttpClient {
|
||||
applyMediaSourceConfig(config)
|
||||
Logging {
|
||||
logger = object : io.ktor.client.plugins.logging.Logger {
|
||||
override fun log(message: String) {
|
||||
Companion.logger.info { message }
|
||||
}
|
||||
}
|
||||
level = LogLevel.INFO
|
||||
}
|
||||
BrowserUserAgent()
|
||||
expectSuccess = true
|
||||
}
|
||||
|
||||
override val mediaSourceId: String get() = ID
|
||||
|
||||
override suspend fun checkConnection(): ConnectionStatus =
|
||||
client.get(BASE_URL).status.isSuccess().toConnectionStatus()
|
||||
|
||||
override suspend fun fetch(query: MediaFetchRequest): SizedSource<MediaMatch> = SinglePagePagedSource {
|
||||
query.subjectNames.asFlow().flatMapMerge { name ->
|
||||
val bangumiList = flow {
|
||||
emit(getDocument("$BASE_URL/search.html") {
|
||||
parameter("wd", name)
|
||||
})
|
||||
}.map {
|
||||
parseBangumiSearch(it)
|
||||
}.retry(3) { e ->
|
||||
logger.warn("Failed to search using name '$name'", e)
|
||||
true
|
||||
}.firstOrNull() ?: return@flatMapMerge emptyFlow()
|
||||
|
||||
bangumiList.asFlow()
|
||||
.flatMapMerge { bangumi ->
|
||||
flow {
|
||||
emit(getDocument(bangumi.url))
|
||||
}.map {
|
||||
parseEpisodeList(it)
|
||||
}.retry(3) { e ->
|
||||
logger.warn("Failed to search using name '$name'", e)
|
||||
true
|
||||
}.firstOrNull()?.map { ep ->
|
||||
createMediaMatch(bangumi, ep)
|
||||
}.orEmpty().asFlow()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
private suspend inline fun getDocument(
|
||||
url: String,
|
||||
block: HttpRequestBuilder.() -> Unit = {}
|
||||
) = client.get(url, block).bodyAsChannel().toInputStream().use {
|
||||
Jsoup.parse(it, "UTF-8", BASE_URL)
|
||||
}
|
||||
|
||||
}
|
17
data-sources/nyafun/src/main.kt
Normal file
17
data-sources/nyafun/src/main.kt
Normal file
@ -0,0 +1,17 @@
|
||||
package me.him188.ani.datasources.nyafun
|
||||
|
||||
//suspend fun main() {
|
||||
// val outFile = File("1.mp4")
|
||||
// HttpClient {
|
||||
// BrowserUserAgent()
|
||||
// }.get("https://play.nyafun.net/player/ec.php?code=nya&if=1&url=https://vod.2bdm.cc/2024/04/gs8h/01.mp4") {
|
||||
// header("referrer", "https://www.nyafun.net/play/7207-1-1.html")
|
||||
// }.bodyAsChannel().copyTo(outFile.writeChannel())
|
||||
// delay(3.seconds)
|
||||
// exitProcess(0)
|
||||
//
|
||||
// NyafunMediaSource(MediaSourceConfig()).run {
|
||||
// File("play.html").writeText(client.get("https://www.nyafun.net/play/7168-1-1.html").bodyAsText())
|
||||
// }
|
||||
// exitProcess(0)
|
||||
//}
|
77
data-sources/nyafun/test/NyafunMediaSourceTest.kt
Normal file
77
data-sources/nyafun/test/NyafunMediaSourceTest.kt
Normal file
@ -0,0 +1,77 @@
|
||||
package me.him188.ani.datasources.nyafun
|
||||
|
||||
import me.him188.ani.datasources.api.DefaultMedia
|
||||
import me.him188.ani.datasources.api.MediaProperties
|
||||
import me.him188.ani.datasources.api.source.MatchKind
|
||||
import me.him188.ani.datasources.api.source.MediaMatch
|
||||
import me.him188.ani.datasources.api.topic.EpisodeRange
|
||||
import me.him188.ani.datasources.api.topic.FileSize
|
||||
import me.him188.ani.datasources.api.topic.ResourceLocation
|
||||
import org.jsoup.Jsoup
|
||||
import org.junit.jupiter.api.Test
|
||||
import kotlin.test.assertEquals
|
||||
|
||||
class NyafunMediaSourceTest {
|
||||
@Test
|
||||
fun `parse search result`() {
|
||||
val doc = Jsoup.parse(
|
||||
this::class.java.classLoader.getResource("girls band cry/search.html")!!.readText(),
|
||||
NyafunMediaSource.BASE_URL
|
||||
)
|
||||
val list = NyafunMediaSource.parseBangumiSearch(doc)
|
||||
assertEquals(1, list.size)
|
||||
list[0].run {
|
||||
assertEquals("7168", id)
|
||||
assertEquals("GIRLS BAND CRY", name)
|
||||
assertEquals("https://www.nyafun.net/bangumi/7168.html", url)
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `parse bangumi result`() {
|
||||
val doc = Jsoup.parse(
|
||||
this::class.java.classLoader.getResource("girls band cry/bangumi.html")!!.readText(),
|
||||
NyafunMediaSource.BASE_URL
|
||||
)
|
||||
val list = NyafunMediaSource.parseEpisodeList(doc)
|
||||
assertEquals(8, list.size)
|
||||
list[0].run {
|
||||
assertEquals("第01集", name)
|
||||
assertEquals("https://www.nyafun.net/play/7168-1-1.html", url)
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `create media`() {
|
||||
assertEquals(
|
||||
MediaMatch(
|
||||
DefaultMedia(
|
||||
mediaId = "nyafun.7168-01",
|
||||
mediaSourceId = NyafunMediaSource.ID,
|
||||
originalUrl = "https://www.nyafun.net/bangumi/7168.html",
|
||||
download = ResourceLocation.WebVideo(
|
||||
"https://www.nyafun.net/play/7168-1-1.html",
|
||||
),
|
||||
originalTitle = "GIRLS BAND CRY 第01集",
|
||||
publishedTime = 0L,
|
||||
properties = MediaProperties(
|
||||
listOf("CHS"),
|
||||
resolution = "1080P",
|
||||
NyafunMediaSource.ID,
|
||||
size = FileSize.Unspecified,
|
||||
),
|
||||
episodeRange = EpisodeRange.single("01"),
|
||||
),
|
||||
MatchKind.FUZZY
|
||||
).toString(),
|
||||
NyafunMediaSource.createMediaMatch(
|
||||
NyafunBangumi(
|
||||
"7168",
|
||||
"GIRLS BAND CRY",
|
||||
"https://www.nyafun.net/bangumi/7168.html"
|
||||
),
|
||||
NyafunEp("第01集", "https://www.nyafun.net/play/7168-1-1.html")
|
||||
).toString()
|
||||
)
|
||||
}
|
||||
}
|
736
data-sources/nyafun/testResources/girls band cry/bangumi.html
vendored
Normal file
736
data-sources/nyafun/testResources/girls band cry/bangumi.html
vendored
Normal file
@ -0,0 +1,736 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="zh-CN">
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||
<meta name="viewport"
|
||||
content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no,viewport-fit=cover">
|
||||
<title>《GIRLS BAND CRY》番剧高清1080P在线观看_GIRLS BAND CRY全集无修-NyaFun动漫</title>
|
||||
<meta name="keywords"
|
||||
content="GIRLS BAND CRY番剧,GIRLS BAND CRY高清完整版,GIRLS BAND CRY在线观看,GIRLS BAND CRY迅雷下载,GIRLS BAND CRY百度网盘,NyaFun动漫"/>
|
||||
<meta name="description"
|
||||
content="GIRLS BAND CRY剧情介绍: 高中二年级,辍学独自在东京工作并设定了上大学的目标的主人公。 被朋友背叛,不知所措的少女。 被父母抛弃,靠打工在大城市中勉强维生的女孩。 这个世界总是背叛我们。 事情总是无法按照我们的想法进行。 但是,我们还是希望喜欢上什么。 因为我们相信自己的位置一定在某个地方。 所以,我们歌唱。..."/>
|
||||
<link href="/static/ds3/css/common.css?version=265" rel="stylesheet" type="text/css"/>
|
||||
<script src="/static/ds3/js/jquery.js"></script>
|
||||
<script src="/static/ds3/js/assembly.js"></script>
|
||||
<script src="/static/ds3/js/swiper.min.js"></script>
|
||||
<script>
|
||||
const maccms={"vod_mask":"mask-1","path2":"/","day":"2","jx":"0","so_off":"1","bt-style":"","login-login":"/","path":"","mid":"1","aid":"14","url":"www.nyafun.net","wapurl":"www.nyafun.net","mob_status":"0","upload":{"protocol":"https","mode":"local","remoteurl":"http://img.test.com/","img_key":"","img_api":"",}};
|
||||
</script>
|
||||
<script src="/static/ds3/js/ecscript.js"></script>
|
||||
<script>new WOW().init();</script>
|
||||
<meta name="renderer" content="webkit"/>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge"/>
|
||||
<meta http-equiv="Cache-Control" content="no-siteapp"/>
|
||||
<link rel="shortcut icon" href="https://pic1.imgdb.cn/item/6354c9b316f2c2beb1de5e2c.png"
|
||||
type="image/x-icon"/>
|
||||
<link rel="apple-touch-icon" href="https://pic1.imgdb.cn/item/6354c9b316f2c2beb1de5e2c.png">
|
||||
<link rel="icon" sizes="192x192" type="image/png"
|
||||
href="https://pic1.imgdb.cn/item/6354c9b316f2c2beb1de5e2c.png">
|
||||
</head>
|
||||
<body class="theme2">
|
||||
<div class="gen-loading bj load-icon-on" data-time="100"><img class="loading1 none" data-ii="on"
|
||||
src="https://www.nyafun.net/image/NyaFun_logo.png"
|
||||
alt="NyaFun动漫"><img
|
||||
class="loading2 none" src="https://www.nyafun.net/image/NyaFun_logo.png" alt="NyaFun动漫">
|
||||
</div>
|
||||
<div class="head flex between no-null header_nav0">
|
||||
<div class="left flex">
|
||||
<div class="logo"><a class="logo-brand" href="/"><img class="logo1 none"
|
||||
src="https://pic.imgdb.cn/item/653fc9b6c458853aef19190d.png"
|
||||
alt="NyaFun动漫"><img
|
||||
class="logo2 none" src="https://pic.imgdb.cn/item/653fc9b6c458853aef19190d.png"
|
||||
alt="NyaFun动漫"></a></div>
|
||||
<div class="head-nav ft4 roll bold0 pc-show0 wap-show1">
|
||||
<ul class="swiper-wrapper">
|
||||
<li class="swiper-slide"><a target="_self" href="/" class=""><em
|
||||
class="fa ds-zhuye"></em><em class="fa none ds-zhuye2"></em>首页</a></li>
|
||||
<li class="swiper-slide"><a target="_self" href="/show/1.html" class="current cor6"><em
|
||||
class="fa ds-dongman"></em><em class="fa none ds-dongman2"></em>番剧</a>
|
||||
</li>
|
||||
<li class="swiper-slide"><a target="_self" href="/show/2.html" class=""><em
|
||||
class="fa ds-dianying"></em><em class="fa none ds-dianying2"></em>剧场</a>
|
||||
</li>
|
||||
<li class="swiper-slide"><a target="_self" href="/show/207.html" class=""><em
|
||||
class="fa ds-dianshi"></em><em class="fa none ds-dianshi2"></em>特摄</a>
|
||||
</li>
|
||||
<li class="rel head-more-a"><a class="this-get" href="javascript:">更多<em
|
||||
class="fa nav-more" style="font-size:18px"></em></a>
|
||||
<div class="head-more none box size"><a target="_self" href="/"
|
||||
class="nav-link none2"><em
|
||||
class="fa ds-zhuye"></em><em class="fa none ds-zhuye2"></em>首页</a><a
|
||||
target="_self" href="/show/1.html" class="nav-link none2 cor6"><em
|
||||
class="fa ds-dongman"></em><em class="fa none ds-dongman2"></em>番剧</a><a
|
||||
target="_self" href="/show/2.html" class="nav-link none2"><em
|
||||
class="fa ds-dianying"></em><em
|
||||
class="fa none ds-dianying2"></em>剧场</a><a target="_self"
|
||||
href="/show/207.html"
|
||||
class="nav-link none2"><em
|
||||
class="fa ds-dianshi"></em><em class="fa none ds-dianshi2"></em>特摄</a><a
|
||||
href="/label/weekday.html" class="nav-link"><em class="fa ds-zhou"></em><em
|
||||
class="fa none ds-zhou2"></em>周番表</a><a href="/label/rank.html"
|
||||
class="nav-link"><em
|
||||
class="fa ds-pahang"></em><em class="fa none ds-pahang2"></em>排行榜</a><a
|
||||
href="/gbook.html" class="nav-link"><em class="fa ds-pinglun"></em><em
|
||||
class="fa none ds-pinglun2"></em>留言板</a></div>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
<div class="right flex">
|
||||
<div class="this-search">
|
||||
<form id="search2" name="search" class="flex-public" method="get" action="/search.html">
|
||||
<a href="javascript:" data-id="1" class="this-select">视频<i class="fa"></i></a><input
|
||||
type="text" name="wd" class="this-input flex-auto cor4" value=""
|
||||
placeholder="想看些什么捏~" autocomplete="off">
|
||||
<div class="flex"><a class="this-hot" href="/label/rank.html"><em
|
||||
class="fa ds-pahang2 r3"></em>排行榜</a>
|
||||
<button type="submit" class="fa ds-sousuo ol2"></button>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
<div class="qiAnDao_bnt margin qd-noneon qd-bnt-off1"><a class="content-center"
|
||||
href="javascript:"><i
|
||||
class="fa ds-qiandao"></i><em>签到</em></a></div>
|
||||
<div class="gen-search margin none"><a class="content-center" href="javascript:"><i
|
||||
class="fa ds-sousuo"></i></a></div>
|
||||
<div class="gen-history margin"><a class="content-center" href="javascript:"><i
|
||||
class="fa ds-lishijilu"></i><em>播放记录</em></a></div>
|
||||
<div class="margin down-none1"><a target="_blank" class="content-center"
|
||||
href="/label/app.html"><i class="fa ds-yingyong"></i><em>客户端</em></a>
|
||||
</div>
|
||||
<div class="gen-left-list margin" style="padding-right:0"><a class="content-center"
|
||||
href="javascript:"><i
|
||||
class="fa ds-menu"></i></a></div>
|
||||
<div class="margin wap-hide"><a class="this-user head-user" href="javascript:"
|
||||
data-url="/user/index.html"><img
|
||||
src="/static/ds3/img/default-head.jpg" alt="游客"/></a></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="vod-detail style-detail rel cor1 hader0">
|
||||
<div class="slide-time-img2"><img
|
||||
src="https://img02.sogoucdn.com/v2/thumb/retype_exclude_gif/ext/auto/q/95/crop/xy/ai/t/0/?appid=122&url=https://lain.bgm.tv/pic/cover/l/75/c1/431767_bX7FZ.jpg"
|
||||
alt="海报背景"/><span></span></div>
|
||||
<div class="box-width flex between rel">
|
||||
<div class="left flex">
|
||||
<div class="wow fadeInLeft">
|
||||
<div class="detail-pic"><img alt="GIRLS BAND CRY海报图片" class="lazy lazy1 mask-1"
|
||||
referrerpolicy="no-referrer"
|
||||
src="data:image/gif;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVQImWNgYGBgAAAABQABh6FO1AAAAABJRU5ErkJggg=="
|
||||
data-src="https://img02.sogoucdn.com/v2/thumb/retype_exclude_gif/ext/auto/q/95/crop/xy/ai/t/0/?appid=122&url=https://lain.bgm.tv/pic/cover/l/75/c1/431767_bX7FZ.jpg"/>
|
||||
</div>
|
||||
</div>
|
||||
<div class="detail-info rel flex-auto wow lightSpeedIn"><h3
|
||||
class="slide-info-title hide">GIRLS BAND CRY</h3>
|
||||
<div class="slide-info hide"><span class="slide-info-remarks"><a
|
||||
href="/search/year/2024.html" target="_blank">2024</a> </span><span
|
||||
class="slide-info-remarks"><a href="/search/area/%E6%97%A5%E6%9C%AC.html"
|
||||
target="_blank">日本</a> </span><span
|
||||
class="slide-info-remarks"><a href="/show/1/class/%E5%8E%9F%E5%88%9B.html">原创</a></span><span
|
||||
class="slide-info-remarks"><a href="/show/1/class/%E9%9F%B3%E4%B9%90.html">音乐</a></span><span
|
||||
class="slide-info-remarks"><a href="/show/1/class/%E7%99%BE%E5%90%88.html">百合</a></span><span
|
||||
class="slide-info-remarks"><a
|
||||
href="/show/1/class/%E6%BC%AB%E7%94%BB%E6%94%B9.html">漫画改</a></span><span
|
||||
class="slide-info-remarks"><a
|
||||
href="/show/1/class/%E6%97%A5%E6%BC%AB%E7%95%AA%E5%89%A7.html">日漫番剧</a></span><span
|
||||
class="slide-info-remarks"><a
|
||||
href="/show/1/class/%E6%97%A5%E6%BC%AB%E7%95%AA.html">日漫番</a></span>
|
||||
</div>
|
||||
<div class="slide-info hide"><strong class="r6">备注 :</strong>更新至08</div>
|
||||
<div class="slide-info hide"><strong class="r6">导演 :</strong><a
|
||||
href="/search/director/%E9%85%92%E4%BA%95%E5%92%8C%E7%94%B7.html"
|
||||
target="_blank">酒井和男</a><span class="slash">/</span></div>
|
||||
<div class="slide-info hide"><strong class="r6">演员 :</strong><a
|
||||
href="/search/actor/%E7%90%86%E5%90%8D.html" target="_blank">理名</a><span
|
||||
class="slash">/</span><a href="/search/actor/%E7%BE%8E%E6%80%9C.html"
|
||||
target="_blank">美怜</a><span
|
||||
class="slash">/</span><a href="/search/actor/%E5%A4%95%E8%8E%89.html"
|
||||
target="_blank">夕莉</a><span
|
||||
class="slash">/</span><a href="/search/actor/%E6%9C%B1%E6%9D%8E.html"
|
||||
target="_blank">朱李</a><span
|
||||
class="slash">/</span><a href="/search/actor/%E5%87%AA%E9%83%BD.html"
|
||||
target="_blank">凪都</a><span
|
||||
class="slash">/</span></div>
|
||||
<div class="slide-info hide"><strong class="r6">更新 :</strong>2024-05-25 10:40:02
|
||||
</div>
|
||||
<a class="deployment none cor5" href="javascript:"><span>2024</span><span
|
||||
class="division">·</span><span>日本</span><span
|
||||
class="division">·</span><span class="hl-ma0">原创 音乐 百合 漫画改 日漫番剧 日漫番 </span><span
|
||||
class="division">·</span><span>2024-04-05上映</span><span
|
||||
class="division">·</span><span>日语</span><span class="division">·</span>详情<i
|
||||
class="fa ds-jiantouyou"></i></a>
|
||||
<div class="vod-detail-bnt flex"><a href="javascript:" class="button ol2"
|
||||
style="width:120px"><i
|
||||
class="fa r6 ds-bofang1"></i>立即播放</a>
|
||||
<div class="detail-get-box collection" data-type="2" data-mid="1"
|
||||
data-id="7168"><span><i class="fa r3 ds-shoucang"></i>收藏</span></div>
|
||||
<div class="detail-get-box rel vod-detail-share"><span><i
|
||||
class="fa r3 ds-fenxiang"></i>分享</span>
|
||||
<div class="share-box box cor5 radius topfadeInUp none">
|
||||
<div class="share-qrcode"><p class="share-text">手机扫描访问</p>
|
||||
<div class="hl-cans none"></div>
|
||||
<p class="share-pic"></p></div>
|
||||
<div class="share-links"><span
|
||||
class="share-tips">复制下方链接,去粘贴给好友吧</span><span
|
||||
id="bar" class="share-url bj cor5">https://www.nyafun.net/bangumi/7168.html</span>
|
||||
<button type="button" class="share-copy bj2 ho radius copyBtn"
|
||||
data-clipboard-action="copy" data-clipboard-target="#bar">
|
||||
复制链接
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="right">
|
||||
<div class="detail-score wow fadeInUp">
|
||||
<div class="play-score cf">
|
||||
<div class="fraction">9.7</div>
|
||||
<div class="score-title l"><span class="text-site cor2">网友评分</span>
|
||||
<div class="rating-sm">
|
||||
<ul class="rating-s cf">
|
||||
<li class="one current active" title="很差" val="1">很差</li>
|
||||
<li class="two current active" title="较差" val="2">较差</li>
|
||||
<li class="three current active" title="还行" val="3">还行</li>
|
||||
<li class="four active" title="推荐" val="4">推荐</li>
|
||||
<li class="five active" title="力荐" val="5">力荐</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
<span class="score-data r">45次评分</span></div>
|
||||
<div id="rating" class="play-score" data-mid="1" data-id="7168" data-score="5">
|
||||
<ul class="rating-s rating cf" id="fenshu">
|
||||
<li class="one" title="很差" val="1">很差</li>
|
||||
<li class="two" title="较差" val="2">较差</li>
|
||||
<li class="three" title="还行" val="3">还行</li>
|
||||
<li class="four" title="推荐" val="4">推荐</li>
|
||||
<li class="five" title="力荐" val="5">力荐</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="weixin"><img alt="扫描观看" width="140" height="140" src="/">
|
||||
<div class="top20"><p>扫描一扫app播放</p></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="box-width rel wow fadeInUp">
|
||||
<div class="title vod-news top40">
|
||||
<div class="title-tab flex switch-button"><a class="selected" href="javascript:"
|
||||
title="影片简介">简介</a><a id="role_a"
|
||||
href="javascript:"
|
||||
title="角色信息">角色</a>
|
||||
</div>
|
||||
</div>
|
||||
<div class="switch-box top20">
|
||||
<div class="check selected">
|
||||
<div id="height_limit" class="text cor3">
|
||||
高中二年级,辍学独自在东京工作并设定了上大学的目标的主人公。 被朋友背叛,不知所措的少女。 被父母抛弃,靠打工在大城市中勉强维生的女孩。 这个世界总是背叛我们。 事情总是无法按照我们的想法进行。 但是,我们还是希望喜欢上什么。 因为我们相信自己的位置一定在某个地方。 所以,我们歌唱。
|
||||
</div>
|
||||
<div class="text-open"><span class="tim-bnt"><i class="fa r6 ease"></i>展开</span>
|
||||
</div>
|
||||
<div class="vod-tag" style="margin-top: 20px;"><a
|
||||
href="/search/tag/%E5%8E%9F%E5%88%9B.html" class="cor5 r6">#原创</a><a
|
||||
href="/search/tag/2024%E5%B9%B44%E6%9C%88.html"
|
||||
class="cor5 r6">#2024年4月</a><a href="/search/tag/%E4%B9%90%E9%98%9F.html"
|
||||
class="cor5 r6">#乐队</a><a
|
||||
href="/search/tag/%E4%B8%9C%E6%98%A0%E5%8A%A8%E7%94%BB.html"
|
||||
class="cor5 r6">#东映动画</a><a href="/search/tag/%E9%9F%B3%E4%B9%90.html"
|
||||
class="cor5 r6">#音乐</a><a
|
||||
href="/search/tag/TV.html" class="cor5 r6">#TV</a><a
|
||||
href="/search/tag/2024.html" class="cor5 r6">#2024</a><a
|
||||
href="/search/tag/%E6%9D%B1%E6%98%A0%E3%82%A2%E3%83%8B%E3%83%A1%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3.html"
|
||||
class="cor5 r6">#東映アニメーション</a><a href="/search/tag/3D.html"
|
||||
class="cor5 r6">#3D</a><a
|
||||
href="/search/tag/%E7%99%BE%E5%90%88.html" class="cor5 r6">#百合</a><a
|
||||
href="/search/tag/%E4%B8%9C%E6%98%A0.html" class="cor5 r6">#东映</a><a
|
||||
href="/search/tag/%E9%85%92%E4%BA%95%E5%92%8C%E7%94%B7.html"
|
||||
class="cor5 r6">#酒井和男</a><a
|
||||
href="/search/tag/%E8%8A%B1%E7%94%B0%E5%8D%81%E8%BE%89.html"
|
||||
class="cor5 r6">#花田十辉</a><a
|
||||
href="/search/tag/%E6%97%A0%E6%B3%95%E9%A2%84%E6%B5%8B%E7%9A%84%E5%91%BD%E8%BF%90%E4%B9%8B%E8%88%9E%E5%8F%B0.html"
|
||||
class="cor5 r6">#无法预测的命运之舞台</a><a
|
||||
href="/search/tag/%E7%AC%AC%E4%B8%80%E5%AD%A3.html"
|
||||
class="cor5 r6">#第一季</a><a
|
||||
href="/search/tag/%E6%9C%AA%E5%BC%80%E6%92%AD.html"
|
||||
class="cor5 r6">#未开播</a><a href="/search/tag/2024%E5%B9%B4.html"
|
||||
class="cor5 r6">#2024年</a><a
|
||||
href="/search/tag/%E6%BC%AB%E7%94%BB%E6%94%B9.html"
|
||||
class="cor5 r6">#漫画改</a><a href="/search/tag/%E5%A7%9B.html"
|
||||
class="cor5 r6">#姛</a><a
|
||||
href="/search/tag/%E5%A4%A7%E4%B9%90%E9%98%9F%E6%97%B6%E4%BB%A3.html"
|
||||
class="cor5 r6">#大乐队时代</a><a
|
||||
href="/search/tag/%E8%8A%B1%E7%94%B0%E5%8D%81%E8%BC%9D.html"
|
||||
class="cor5 r6">#花田十輝</a></div>
|
||||
</div>
|
||||
<div class="check">
|
||||
<div class="shp public-r size">
|
||||
<ul id="role" class="flex wrap"></ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<script>if($(".public-pic-e").length === 0){$("#role_a").hide();}</script>
|
||||
<div class="box-width ec-ad ds-adif-a1 ds-adif-b1"><a style="padding-top:10px"
|
||||
href="https://mimoe.su/" target="_blank"><img
|
||||
class="slide-pc" src="https://pic.imgdb.cn/item/64a2231e1ddac507cc2afa9d.png"
|
||||
alt="展示你的位置"><img class="slide-wap" style="display:none"
|
||||
src="https://pic.imgdb.cn/item/64a2231e1ddac507cc2afa9d.png"
|
||||
alt="展示你的位置"><span class="this-adicon"></span></a></div>
|
||||
<div class="box-width cor5">
|
||||
<div class="title-a flex top40 between"><h2 class="this-name cor4">资源列表</h2><a id="zxdaoxu"
|
||||
href="javascript:"><i
|
||||
class="fa r3 ds-daoxu"></i>排序</a></div>
|
||||
<div class="anthology wow fadeInUp animated">
|
||||
<div class="anthology-tab nav-swiper b-b br">
|
||||
<div class="swiper-wrapper"><a class="swiper-slide"><i class="fa ds-dianying"></i> 主线<span
|
||||
class="badge">8</span></a></div>
|
||||
</div>
|
||||
<div class="anthology-list top20 select-c">
|
||||
<div class="anthology-list-box none">
|
||||
<div>
|
||||
<ul class="anthology-list-play size">
|
||||
<li class="box border"><a class="hide" href="/play/7168-1-1.html">第01集</a>
|
||||
</li>
|
||||
<li class="box border"><a class="hide" href="/play/7168-1-2.html">第02集</a>
|
||||
</li>
|
||||
<li class="box border"><a class="hide" href="/play/7168-1-3.html">第03集</a>
|
||||
</li>
|
||||
<li class="box border"><a class="hide" href="/play/7168-1-4.html">第04集</a>
|
||||
</li>
|
||||
<li class="box border"><a class="hide" href="/play/7168-1-5.html">第05集</a>
|
||||
</li>
|
||||
<li class="box border"><a class="hide" href="/play/7168-1-6.html">第06集</a>
|
||||
</li>
|
||||
<li class="box border"><a class="hide" href="/play/7168-1-7.html">第07集</a>
|
||||
</li>
|
||||
<li class="box border"><a class="hide" href="/play/7168-1-8.html">第08集</a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<script>
|
||||
$(".anthology-tab a").eq(0).addClass("on nav-dt");$(".anthology-list .anthology-list-box").eq(0).show().addClass("dx");
|
||||
</script>
|
||||
<div class="star-works overflow">
|
||||
<div class="title-a flex top40 between"><h2 class="this-name cor4">相关明星</h2></div>
|
||||
<div class="list-swiper public-r border-box rel star-works-top">
|
||||
<div class="swiper-wrapper"></div>
|
||||
<div class="vod-list-actor-page"><a class="swiper-button-prev" href="javascript:"><i
|
||||
class="fa ds-fanhui"></i></a><a class="swiper-button-next" href="javascript:"><i
|
||||
class="fa ds-jiantouyou"></i></a></div>
|
||||
</div>
|
||||
<div class="public-r list-swiper rel">
|
||||
<div class="swiper-wrapper actor-api"></div>
|
||||
<div class="vod-list-page"><a class="swiper-button-prev" href="javascript:"><i
|
||||
class="fa ds-fanhui"></i></a><a class="swiper-button-next" href="javascript:"><i
|
||||
class="fa ds-jiantouyou"></i></a></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="box-width wow fadeInUp">
|
||||
<div class="title-a flex top40"><h2 class="this-name cor4">相关视频</h2><a
|
||||
class="this-get cor5 ds-line2" target="_self" href="#">更多<em
|
||||
class="fa ds-jiantouyou"></em></a>
|
||||
<div class="this-tab"></div>
|
||||
</div>
|
||||
<div class="flex wrap border-box public-r hide-b-10">
|
||||
<div class="public-list-box public-pic-b [swiper]">
|
||||
<div class="public-list-div public-list-bj"><a target="_self" class="public-list-exp"
|
||||
href="/bangumi/6242.html"
|
||||
title="汤摇庄的幽奈同学 OAD"><img
|
||||
class="lazy lazy1 gen-movie-img mask-1" referrerpolicy="no-referrer"
|
||||
src="data:image/gif;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVQImWNgYGBgAAAABQABh6FO1AAAAABJRU5ErkJggg=="
|
||||
alt="汤摇庄的幽奈同学 OAD封面图"
|
||||
data-src="https://img02.sogoucdn.com/v2/thumb/retype_exclude_gif/ext/auto/q/95/crop/xy/ai/t/0/?appid=122&url=https://lain.bgm.tv/pic/cover/l/95/4c/232657_du556.jpg"/><span
|
||||
class="public-bg"></span><span class="public-prt hide cr8">后宫</span><span
|
||||
class="public-list-prb hide ft2">已完结</span><span class="public-play"><i
|
||||
class="fa"></i></span></a></div>
|
||||
<div class="public-list-button"><a target="_self" class="time-title hide ft4"
|
||||
href="/bangumi/6242.html"
|
||||
title="汤摇庄的幽奈同学 OAD">汤摇庄的幽奈同学 OAD</a>
|
||||
<div class="public-list-subtitle cor5 hide ft2">井上ほの花</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="public-list-box public-pic-b [swiper]">
|
||||
<div class="public-list-div public-list-bj"><a target="_self" class="public-list-exp"
|
||||
href="/bangumi/3257.html"
|
||||
title="妖精的尾巴 第一季"><img
|
||||
class="lazy lazy1 gen-movie-img mask-1" referrerpolicy="no-referrer"
|
||||
src="data:image/gif;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVQImWNgYGBgAAAABQABh6FO1AAAAABJRU5ErkJggg=="
|
||||
alt="妖精的尾巴 第一季封面图"
|
||||
data-src="https://img02.sogoucdn.com/v2/thumb/retype_exclude_gif/ext/auto/q/95/crop/xy/ai/t/0/?appid=122&url=https://lain.bgm.tv/pic/cover/l/33/9a/2609_3ak4F.jpg"/><span
|
||||
class="public-bg"></span><span class="public-prt hide cr4">动画</span><span
|
||||
class="public-list-prb hide ft2">已完结[1-175]</span><span
|
||||
class="public-play"><i class="fa"></i></span></a></div>
|
||||
<div class="public-list-button"><a target="_self" class="time-title hide ft4"
|
||||
href="/bangumi/3257.html" title="妖精的尾巴 第一季">妖精的尾巴
|
||||
第一季</a>
|
||||
<div class="public-list-subtitle cor5 hide ft2">Fairy Tail</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="public-list-box public-pic-b [swiper]">
|
||||
<div class="public-list-div public-list-bj"><a target="_self" class="public-list-exp"
|
||||
href="/bangumi/7168.html"
|
||||
title="GIRLS BAND CRY"><img
|
||||
class="lazy lazy1 gen-movie-img mask-1" referrerpolicy="no-referrer"
|
||||
src="data:image/gif;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVQImWNgYGBgAAAABQABh6FO1AAAAABJRU5ErkJggg=="
|
||||
alt="GIRLS BAND CRY封面图"
|
||||
data-src="https://img02.sogoucdn.com/v2/thumb/retype_exclude_gif/ext/auto/q/95/crop/xy/ai/t/0/?appid=122&url=https://lain.bgm.tv/pic/cover/l/75/c1/431767_bX7FZ.jpg"/><span
|
||||
class="public-bg"></span><span class="public-prt hide cr6">原创</span><span
|
||||
class="public-list-prb hide ft2">更新至08</span><span class="public-play"><i
|
||||
class="fa"></i></span></a></div>
|
||||
<div class="public-list-button"><a target="_self" class="time-title hide ft4"
|
||||
href="/bangumi/7168.html" title="GIRLS BAND CRY">GIRLS
|
||||
BAND CRY</a>
|
||||
<div class="public-list-subtitle cor5 hide ft2">哭泣少女乐队</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="public-list-box public-pic-b [swiper]">
|
||||
<div class="public-list-div public-list-bj"><a target="_self" class="public-list-exp"
|
||||
href="/bangumi/7207.html"
|
||||
title="怪兽8号"><img
|
||||
class="lazy lazy1 gen-movie-img mask-1" referrerpolicy="no-referrer"
|
||||
src="data:image/gif;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVQImWNgYGBgAAAABQABh6FO1AAAAABJRU5ErkJggg=="
|
||||
alt="怪兽8号封面图"
|
||||
data-src="https://img02.sogoucdn.com/v2/thumb/retype_exclude_gif/ext/auto/q/95/crop/xy/ai/t/0/?appid=122&url=https://lain.bgm.tv/pic/cover/l/9c/d2/394623_BkSVB.jpg"/><span
|
||||
class="public-bg"></span><span class="public-prt hide cr5">漫画改</span><span
|
||||
class="public-list-prb hide ft2">更新至07</span><span class="public-play"><i
|
||||
class="fa"></i></span></a></div>
|
||||
<div class="public-list-button"><a target="_self" class="time-title hide ft4"
|
||||
href="/bangumi/7207.html" title="怪兽8号">怪兽8号</a>
|
||||
<div class="public-list-subtitle cor5 hide ft2">怪兽八号 / Kaiju No.8 / Kaijuu
|
||||
8-gou
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="public-list-box public-pic-b [swiper]">
|
||||
<div class="public-list-div public-list-bj"><a target="_self" class="public-list-exp"
|
||||
href="/bangumi/5602.html"
|
||||
title="没有黄段子的无聊世界"><img
|
||||
class="lazy lazy1 gen-movie-img mask-1" referrerpolicy="no-referrer"
|
||||
src="data:image/gif;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVQImWNgYGBgAAAABQABh6FO1AAAAABJRU5ErkJggg=="
|
||||
alt="没有黄段子的无聊世界封面图"
|
||||
data-src="https://img02.sogoucdn.com/v2/thumb/retype_exclude_gif/ext/auto/q/95/crop/xy/ai/t/0/?appid=122&url=https://img9.doubanio.com/view/photo/s_ratio_poster/public/p2249118651.jpg"/><span
|
||||
class="public-bg"></span><span class="public-prt hide cr2">校园</span><span
|
||||
class="public-list-prb hide ft2">已完结</span><span class="public-play"><i
|
||||
class="fa"></i></span></a></div>
|
||||
<div class="public-list-button"><a target="_self" class="time-title hide ft4"
|
||||
href="/bangumi/5602.html"
|
||||
title="没有黄段子的无聊世界">没有黄段子的无聊世界</a>
|
||||
<div class="public-list-subtitle cor5 hide ft2">下流梗不存在的灰暗世界
|
||||
下ネタという概念が存在しない退屈な世界
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="public-list-box public-pic-b [swiper]">
|
||||
<div class="public-list-div public-list-bj"><a target="_self" class="public-list-exp"
|
||||
href="/bangumi/7137.html"
|
||||
title="关于我转生变成史莱姆这档事 第三季"><img
|
||||
class="lazy lazy1 gen-movie-img mask-1" referrerpolicy="no-referrer"
|
||||
src="data:image/gif;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVQImWNgYGBgAAAABQABh6FO1AAAAABJRU5ErkJggg=="
|
||||
alt="关于我转生变成史莱姆这档事 第三季封面图"
|
||||
data-src="https://img02.sogoucdn.com/v2/thumb/retype_exclude_gif/ext/auto/q/95/crop/xy/ai/t/0/?appid=122&url=https://lain.bgm.tv/pic/cover/l/f0/f4/407573_993Vy.jpg"/><span
|
||||
class="public-bg"></span><span class="public-prt hide cr3">异世界</span><span
|
||||
class="public-list-prb hide ft2">更新至56</span><span class="public-play"><i
|
||||
class="fa"></i></span></a></div>
|
||||
<div class="public-list-button"><a target="_self" class="time-title hide ft4"
|
||||
href="/bangumi/7137.html"
|
||||
title="关于我转生变成史莱姆这档事 第三季">关于我转生变成史莱姆这档事
|
||||
第三季</a>
|
||||
<div class="public-list-subtitle cor5 hide ft2">Tensei Shitara Slime Datta Ken 3rd
|
||||
Season / That Time I Got Reincarnated as a Slime Season 3
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="public-list-box public-pic-b [swiper]">
|
||||
<div class="public-list-div public-list-bj"><a target="_self" class="public-list-exp"
|
||||
href="/bangumi/6146.html"
|
||||
title="sin 七大罪"><img
|
||||
class="lazy lazy1 gen-movie-img mask-1" referrerpolicy="no-referrer"
|
||||
src="data:image/gif;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVQImWNgYGBgAAAABQABh6FO1AAAAABJRU5ErkJggg=="
|
||||
alt="sin 七大罪封面图"
|
||||
data-src="https://img02.sogoucdn.com/v2/thumb/retype_exclude_gif/ext/auto/q/95/crop/xy/ai/t/0/?appid=122&url=https://lain.bgm.tv/pic/cover/l/01/90/189784_Q31of.jpg"/><span
|
||||
class="public-bg"></span><span class="public-prt hide cr4">卖肉</span><span
|
||||
class="public-list-prb hide ft2">已完结</span><span class="public-play"><i
|
||||
class="fa"></i></span></a></div>
|
||||
<div class="public-list-button"><a target="_self" class="time-title hide ft4"
|
||||
href="/bangumi/6146.html" title="sin 七大罪">sin
|
||||
七大罪</a>
|
||||
<div class="public-list-subtitle cor5 hide ft2">sin 七宗罪 / Seven Mortal Sins</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="public-list-box public-pic-b [swiper]">
|
||||
<div class="public-list-div public-list-bj"><a target="_self" class="public-list-exp"
|
||||
href="/bangumi/5110.html"
|
||||
title="排球少年"><img
|
||||
class="lazy lazy1 gen-movie-img mask-1" referrerpolicy="no-referrer"
|
||||
src="data:image/gif;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVQImWNgYGBgAAAABQABh6FO1AAAAABJRU5ErkJggg=="
|
||||
alt="排球少年封面图"
|
||||
data-src="https://img02.sogoucdn.com/v2/thumb/retype_exclude_gif/ext/auto/q/95/crop/xy/ai/t/0/?appid=122&url=https://img9.doubanio.com/view/photo/s_ratio_poster/public/p2178189911.jpg"/><span
|
||||
class="public-bg"></span><span class="public-prt hide cr3">运动</span><span
|
||||
class="public-list-prb hide ft2">已完结</span><span class="public-play"><i
|
||||
class="fa"></i></span></a></div>
|
||||
<div class="public-list-button"><a target="_self" class="time-title hide ft4"
|
||||
href="/bangumi/5110.html"
|
||||
title="排球少年">排球少年</a>
|
||||
<div class="public-list-subtitle cor5 hide ft2">排球!! / Haikyuu!</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="public-list-box public-pic-b [swiper]">
|
||||
<div class="public-list-div public-list-bj"><a target="_self" class="public-list-exp"
|
||||
href="/bangumi/4417.html"
|
||||
title="无职转生:到了异世界就拿出真本事 下部"><img
|
||||
class="lazy lazy1 gen-movie-img mask-1" referrerpolicy="no-referrer"
|
||||
src="data:image/gif;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVQImWNgYGBgAAAABQABh6FO1AAAAABJRU5ErkJggg=="
|
||||
alt="无职转生:到了异世界就拿出真本事 下部封面图"
|
||||
data-src="https://img02.sogoucdn.com/v2/thumb/retype_exclude_gif/ext/auto/q/95/crop/xy/ai/t/0/?appid=122&url=https://img9.doubanio.com/view/photo/s_ratio_poster/public/p2676948712.jpg"/><span
|
||||
class="public-bg"></span><span class="public-prt hide cr4">穿越</span><span
|
||||
class="public-list-prb hide ft2">已完结</span><span class="public-play"><i
|
||||
class="fa"></i></span></a></div>
|
||||
<div class="public-list-button"><a target="_self" class="time-title hide ft4"
|
||||
href="/bangumi/4417.html"
|
||||
title="无职转生:到了异世界就拿出真本事 下部">无职转生:到了异世界就拿出真本事
|
||||
下部</a>
|
||||
<div class="public-list-subtitle cor5 hide ft2">无职转生~到了异世界就拿出真本事~
|
||||
下部
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="public-list-box public-pic-b [swiper]">
|
||||
<div class="public-list-div public-list-bj"><a target="_self" class="public-list-exp"
|
||||
href="/bangumi/5226.html"
|
||||
title="妖精的尾巴 第二季"><img
|
||||
class="lazy lazy1 gen-movie-img mask-1" referrerpolicy="no-referrer"
|
||||
src="data:image/gif;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVQImWNgYGBgAAAABQABh6FO1AAAAABJRU5ErkJggg=="
|
||||
alt="妖精的尾巴 第二季封面图"
|
||||
data-src="https://img02.sogoucdn.com/v2/thumb/retype_exclude_gif/ext/auto/q/95/crop/xy/ai/t/0/?appid=122&url=https://lain.bgm.tv/pic/cover/l/65/f5/91946_qTQpV.jpg"/><span
|
||||
class="public-bg"></span><span class="public-prt hide cr8">剧情</span><span
|
||||
class="public-list-prb hide ft2">已完结[176-265]</span><span
|
||||
class="public-play"><i class="fa"></i></span></a></div>
|
||||
<div class="public-list-button"><a target="_self" class="time-title hide ft4"
|
||||
href="/bangumi/5226.html" title="妖精的尾巴 第二季">妖精的尾巴
|
||||
第二季</a>
|
||||
<div class="public-list-subtitle cor5 hide ft2">フェアリーテール 第2期</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="info-parameter none">
|
||||
<div style="padding: 15px; width: 100%; height: 100%;">
|
||||
<div class="wap-head">
|
||||
<div class="l"><a class="fa drawer-of cor4" href="javascript:"></a></div>
|
||||
<h2 class="hidden"><a class="cor4 b" href="javascript:">影片参数</a></h2></div>
|
||||
<div class="wap-head-z"></div>
|
||||
<div class="gen-search-form search-show drawer-scroll-list cor5" style="line-height:30px">
|
||||
<ul>
|
||||
<li><em class="cor4">片名:</em><span>GIRLS BAND CRY</span></li>
|
||||
<li><em class="cor4">状态:</em><span>更新至4集</span></li>
|
||||
<li><em class="cor4">主演:</em><a href="/search/actor/%E7%90%86%E5%90%8D.html"
|
||||
target="_blank">理名</a> <a
|
||||
href="/search/actor/%E7%BE%8E%E6%80%9C.html"
|
||||
target="_blank">美怜</a> <a
|
||||
href="/search/actor/%E5%A4%95%E8%8E%89.html"
|
||||
target="_blank">夕莉</a> <a
|
||||
href="/search/actor/%E6%9C%B1%E6%9D%8E.html"
|
||||
target="_blank">朱李</a> <a
|
||||
href="/search/actor/%E5%87%AA%E9%83%BD.html" target="_blank">凪都</a>
|
||||
</li>
|
||||
<li><em class="cor4">导演:</em><a
|
||||
href="/search/director/%E9%85%92%E4%BA%95%E5%92%8C%E7%94%B7.html"
|
||||
target="_blank">酒井和男</a>
|
||||
</li>
|
||||
<li><em class="cor4">年份:</em>2024</li>
|
||||
<li><em class="cor4">地区:</em>日本</li>
|
||||
<li><em class="cor4">类型:</em><a href="/search/class/%E5%8E%9F%E5%88%9B.html"
|
||||
target="_blank">原创</a> <a
|
||||
href="/search/class/%E9%9F%B3%E4%B9%90.html"
|
||||
target="_blank">音乐</a> <a
|
||||
href="/search/class/%E7%99%BE%E5%90%88.html"
|
||||
target="_blank">百合</a> <a
|
||||
href="/search/class/%E6%BC%AB%E7%94%BB%E6%94%B9.html"
|
||||
target="_blank">漫画改</a> <a
|
||||
href="/search/class/%E6%97%A5%E6%BC%AB%E7%95%AA%E5%89%A7.html"
|
||||
target="_blank">日漫番剧</a> <a
|
||||
href="/search/class/%E6%97%A5%E6%BC%AB%E7%95%AA.html"
|
||||
target="_blank">日漫番</a>
|
||||
</li>
|
||||
<li><em class="cor4">频道:</em>内详</li>
|
||||
<li><em class="cor4">上映:</em>2024-04-05</li>
|
||||
<li><em class="cor4">语言:</em>日语</li>
|
||||
<li><em class="cor4">更新:</em>2024-05-25 10:40</li>
|
||||
<li class="top26"><em class="cor4">简介:</em> 高中二年级,辍学独自在东京工作并设定了上大学的目标的主人公。 被朋友背叛,不知所措的少女。 被父母抛弃,靠打工在大城市中勉强维生的女孩。 这个世界总是背叛我们。 事情总是无法按照我们的想法进行。 但是,我们还是希望喜欢上什么。 因为我们相信自己的位置一定在某个地方。 所以,我们歌唱。
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="top-back"><a class="lang-bnt fa box" data-id="1" href="javascript:">繁</a>
|
||||
<script src="/static/ds3/js/zh.js"></script>
|
||||
<a class="theme-style fa box" data-id="2" href="javascript:"></a><a
|
||||
class="bj2 top fa ds-jiantoushang" href="javascript:"></a></div>
|
||||
<footer class="footer box top40 wap-hide"><p class="this-link"><a href="" target="_blank"
|
||||
rel="nofollow">Telegram群</a><a
|
||||
href="/gbook.html" target="_blank">问题反馈</a><a href="/rss/baidu.xml"
|
||||
target="_blank">网站地图</a></p>
|
||||
<p class="cor5">
|
||||
本站所有资源信息均从互联网搜索而来,本站不对显示的内容承担责任,如您认为本站页面信息侵犯了您的权益,请附上版权证明邮件告知,在收到邮件后48小时内删除</p>
|
||||
<p class="cor5">Copyright © 2021~2024 <a href="/">www.nyafun.net</a> All
|
||||
rights reservd.</p>
|
||||
<p class="none">
|
||||
<script>
|
||||
var _paq = window._paq = window._paq || []; _paq.push(['trackPageView']); _paq.push(['enableLinkTracking']); (function() { var u="//tongji.nyafun.net/"; _paq.push(['setTrackerUrl', u+'matomo.php']); _paq.push(['setSiteId', '1']); var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0]; g.async=true; g.src=u+'matomo.js'; s.parentNode.insertBefore(g,s); })();
|
||||
</script>
|
||||
</p>
|
||||
</footer>
|
||||
<div class="bottom-navigation none tab-off-1 tab-text-1">
|
||||
<div class="foot-top-height"></div>
|
||||
<div class="foot-table-box bj3">
|
||||
<ul class="flex around">
|
||||
<li><a target="_self" class="cor4" href="/"><em class="fa ds-zhuye"></em><em
|
||||
class="fa none ds-zhuye2"></em>
|
||||
<p class="time-title">首页</p></a></li>
|
||||
<li><a target="_self" class="cor4" href="/show/1.html"><em
|
||||
class="fa ds-dongman"></em><em class="fa none ds-dongman2"></em>
|
||||
<p class="time-title">番剧</p></a></li>
|
||||
<li><a target="_self" class="cor4" href="/label/rank.html"><em
|
||||
class="fa ds-pahang"></em><em class="fa none ds-pahang2"></em>
|
||||
<p class="time-title">排行榜</p></a></li>
|
||||
<li><a target="_self" class="cor4" href="/label/app.html"><em class="fa ds-faxian"></em><em
|
||||
class="fa none ds-faxian2"></em>
|
||||
<p class="time-title">APP下载</p></a></li>
|
||||
<li><a target="_self" class="cor4" href="/user/index.html"><em
|
||||
class="fa ds-yonghu"></em><em class="fa none ds-yonghu2"></em>
|
||||
<p class="time-title">我的</p></a></li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
<div id="notice" class="ds-pop none">
|
||||
<div class="box-bg"></div>
|
||||
<div class="pop-box">
|
||||
<div class="topfadeInUp animated bj3 cor4">
|
||||
<div class="pop-top"></div>
|
||||
<div class="pop-title">公告</div>
|
||||
<div class="pop-content">
|
||||
<div class="popup-main"><p class="popup-domain">
|
||||
<span>NyaFun动漫APP已上线</span><strong><a
|
||||
href="https://www.123pan.com/s/U0MbVv-SPWIh.html"
|
||||
target="_red">🔥点我立即下载🔥</a></strong></p>
|
||||
<p class="popup-domain"><span>英文域名</span><strong><a
|
||||
href="https://www.nyafun.net"
|
||||
target="_blank">www.nyafun.net</a></strong></p>
|
||||
<p align="center">将以上域名加入Ctrl+D收藏夹,回到NyaFun更方便</div>
|
||||
</div>
|
||||
<input type="button" class="button ol2" style="width:100%" value="我已了解"></div>
|
||||
</div>
|
||||
</div>
|
||||
<script>
|
||||
((function () { var callbacks = [], timeLimit = 50, open = false; setInterval(loop, 1); return {addListener: function (fn) {callbacks.push(fn);}, cancleListenr: function (fn) { callbacks = callbacks.filter(function (v) { return v !== fn; }); }}; function loop() { var startTime = new Date(); debugger; if (new Date() - startTime > timeLimit) { if (!open) { callbacks.forEach(function (fn) { fn.call(null); }); }open = true; window.stop(); $(location).attr('href', 'https://www.baidu.com/'); }else { open = false; } } })()).addListener(function () { window.location.reload(); }); window.document.keydown(function (event) { if (event.keyCode == 123) { $(location).attr('href', 'https://www.baidu.com/'); } });
|
||||
</script>
|
||||
<div class="box-bg2 pop-bj" style="display:none"></div>
|
||||
<div class="pop-list-body bj pop-1">
|
||||
<div class="wap-head" style="display:none">
|
||||
<div class="l"><a class="fa pop-bj cor4" href="javascript:"></a></div>
|
||||
<h2 class="hidden"><a class="cor4 b" href="javascript:">搜索</a></h2></div>
|
||||
<div class="wap-head-z"></div>
|
||||
<div class="head-search input bj br">
|
||||
<form id="search" name="search" method="get" action="/search.html"><input type="text"
|
||||
name="wd"
|
||||
class="search-input mac_wd cor5"
|
||||
value=""
|
||||
placeholder="想看些什么捏~"
|
||||
autocomplete="off"/>
|
||||
<button type="submit" class="search-input-sub button fa ds-sousuo"></button>
|
||||
<button type="button" class="select-name cor5" data-id="1">视频<i class="fa cor5"></i>
|
||||
</button>
|
||||
</form>
|
||||
</div>
|
||||
<div class="select-list bj radius br none">
|
||||
<div class="flex between ease cor4"><span data-id="1" data-name="视频"
|
||||
data-url="/search.html">视频</span></div>
|
||||
</div>
|
||||
<div class="completion cor5 ft3"></div>
|
||||
<div class="public-list-new top30">
|
||||
<div class="title-m cor4 flex between"><h5>搜索历史</h5><a id="re_del" class="cor6 ho"
|
||||
style="font-size:14px"><i
|
||||
class="fa r3 ds-shanchu"></i>删除</a></div>
|
||||
<div class="records-list"></div>
|
||||
</div>
|
||||
<div class="wap-diy-vod-e search-hot top30">
|
||||
<div class="title-m cor4 flex between"><h5>热门搜索</h5></div>
|
||||
<div>
|
||||
<ul>
|
||||
<li><a href="/search/wd/%E5%BD%B1%E4%B9%8B%E5%AE%9E%E5%8A%9B%E8%80%85.html"
|
||||
target="_blank" class="vod-link br b-b"><span
|
||||
class="vod-no-style">NO</span><span
|
||||
class="vod-on-e-styles key1 cor5">1</span>
|
||||
<div class="vod-center hide">影之实力者</div>
|
||||
</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="pop-list-body gen-history-list bj pop-2">
|
||||
<div class="wap-head" style="display:none">
|
||||
<div class="l"><a class="fa pop-bj cor4" href="javascript:"></a></div>
|
||||
<h2 class="hidden"><a class="cor4 b" href="javascript:">播放记录</a></h2></div>
|
||||
<div class="wap-head-z"></div>
|
||||
<div class="play-catalog flex around ft4 b"><span class="rel on"><a
|
||||
href="javascript:">本地记录</a></span><span class="rel"><a
|
||||
href="javascript:">云端记录</a></span></div>
|
||||
<div class="top30 mask-1-box">
|
||||
<div class="locality-history history check">
|
||||
<ul></ul>
|
||||
<a id="l_history" href="javascript:" class="button top30 ol2"
|
||||
style="width:100%">清空记录</a></div>
|
||||
<div class="user-history history">
|
||||
<ul>
|
||||
<div class="loading">
|
||||
<span></span><span></span><span></span><span></span><span></span></div>
|
||||
</ul>
|
||||
<a href="/user/plays.html" class="button top30 ol2" style="width:100%">查看更多</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="gen-account-menu none">
|
||||
<div class="head-user-info"
|
||||
style="background-image: linear-gradient(to top,rgb(0 0 0 / 80%),transparent),url(/static/ds3/img/index_user.jpg);">
|
||||
<a class="head-user" data-url="/user/index.html" href="javascript:">登录账号</a></div>
|
||||
</div>
|
||||
<div class="qiAnDao-con pop-box" style="display:none"><a class="qiAnDao-gz-bnt" href="javascript:">签到规则</a><a
|
||||
class="qiAnDao-gz-off fa" href="javascript:"></a>
|
||||
<div class="qiAnDao-con-bj"></div>
|
||||
<div class="qiAnDao-title cor1"><h5>每日签到</h5><span>每日签到一次,连续签到奖励更多</span>
|
||||
</div>
|
||||
<div id="qiAnDao_1" class="qiAnDao-main"
|
||||
style="display:none;text-align:center;color:#999;padding:60px 0"><i class="loading3"></i>加载中
|
||||
</div>
|
||||
<div id="qiAnDao_2" class="qiAnDao-main">
|
||||
<div class="qiAnDao-bj"></div>
|
||||
<ul class="qiAnDao-list days cor8 flex wrap">
|
||||
<li>日</li>
|
||||
<li>一</li>
|
||||
<li>二</li>
|
||||
<li>三</li>
|
||||
<li>四</li>
|
||||
<li>五</li>
|
||||
<li>六</li>
|
||||
</ul>
|
||||
<ul class="qiAnDao-list flex wrap" id="qiAnDao-list"></ul>
|
||||
</div>
|
||||
<div class="qiAnDao-top">立即签到</div>
|
||||
<div class="qiAnDao-bottom"><a href="javascript:" class="fa"></a><h4>签到规则</h4>
|
||||
<p>1.连续签到7天可以获得额外奖励5积分<br>2.连续签到15天可以获得额外奖励5积分<br>3.连续签到20天获得额外奖励10积分<br>4.连续签到25天获得额外奖励10积分<br>
|
||||
</p></div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
<script>
|
||||
// 兼容低版本浏览器插件
|
||||
var um = document.createElement("script");
|
||||
um.src = "https://cdn.polyfill.io/v3/polyfill.min.js?features=default";
|
||||
var s = document.getElementsByTagName("script")[0];
|
||||
s.parentNode.insertBefore(um, s);
|
||||
</script>
|
535
data-sources/nyafun/testResources/girls band cry/search.html
vendored
Normal file
535
data-sources/nyafun/testResources/girls band cry/search.html
vendored
Normal file
@ -0,0 +1,535 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="zh-CN">
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||
<meta name="viewport"
|
||||
content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no,viewport-fit=cover">
|
||||
<title>搜索girls band-NyaFun动漫</title>
|
||||
<meta name="keywords" content="girls band在线观看,girls band迅雷下载"/>
|
||||
<meta name="description" content="girls band的搜索结果,NyaFun动漫"/>
|
||||
<link href="/static/ds3/css/common.css?version=265" rel="stylesheet" type="text/css"/>
|
||||
<script src="/static/ds3/js/jquery.js"></script>
|
||||
<script src="/static/ds3/js/assembly.js"></script>
|
||||
<script src="/static/ds3/js/swiper.min.js"></script>
|
||||
<script>
|
||||
const maccms={"vod_mask":"mask-1","path2":"/","day":"2","jx":"0","so_off":"1","bt-style":"","login-login":"/","path":"","mid":"1","aid":"13","url":"www.nyafun.net","wapurl":"www.nyafun.net","mob_status":"0","upload":{"protocol":"https","mode":"local","remoteurl":"http://img.test.com/","img_key":"","img_api":"",}};
|
||||
</script>
|
||||
<script src="/static/ds3/js/ecscript.js"></script>
|
||||
<script>new WOW().init();</script>
|
||||
<meta name="renderer" content="webkit"/>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge"/>
|
||||
<meta http-equiv="Cache-Control" content="no-siteapp"/>
|
||||
<link rel="shortcut icon" href="https://pic1.imgdb.cn/item/6354c9b316f2c2beb1de5e2c.png"
|
||||
type="image/x-icon"/>
|
||||
<link rel="apple-touch-icon" href="https://pic1.imgdb.cn/item/6354c9b316f2c2beb1de5e2c.png">
|
||||
<link rel="icon" sizes="192x192" type="image/png"
|
||||
href="https://pic1.imgdb.cn/item/6354c9b316f2c2beb1de5e2c.png">
|
||||
</head>
|
||||
<body class="theme2">
|
||||
<div class="gen-loading bj load-icon-on" data-time="100"><img class="loading1 none" data-ii="on"
|
||||
src="https://www.nyafun.net/image/NyaFun_logo.png"
|
||||
alt="NyaFun动漫"><img
|
||||
class="loading2 none" src="https://www.nyafun.net/image/NyaFun_logo.png" alt="NyaFun动漫">
|
||||
</div>
|
||||
<div class="head flex between head-c header_nav0">
|
||||
<div class="left flex">
|
||||
<div class="logo"><a class="logo-brand" href="/"><img class="logo1 none"
|
||||
src="https://pic.imgdb.cn/item/653fc9b6c458853aef19190d.png"
|
||||
alt="NyaFun动漫"><img
|
||||
class="logo2 none" src="https://pic.imgdb.cn/item/653fc9b6c458853aef19190d.png"
|
||||
alt="NyaFun动漫"></a></div>
|
||||
<div class="head-nav ft4 roll bold0 pc-show0 wap-show1">
|
||||
<ul class="swiper-wrapper">
|
||||
<li class="swiper-slide"><a target="_self" href="/" class=""><em
|
||||
class="fa ds-zhuye"></em><em class="fa none ds-zhuye2"></em>首页</a></li>
|
||||
<li class="swiper-slide"><a target="_self" href="/show/1.html" class=""><em
|
||||
class="fa ds-dongman"></em><em class="fa none ds-dongman2"></em>番剧</a>
|
||||
</li>
|
||||
<li class="swiper-slide"><a target="_self" href="/show/2.html" class=""><em
|
||||
class="fa ds-dianying"></em><em class="fa none ds-dianying2"></em>剧场</a>
|
||||
</li>
|
||||
<li class="swiper-slide"><a target="_self" href="/show/207.html" class=""><em
|
||||
class="fa ds-dianshi"></em><em class="fa none ds-dianshi2"></em>特摄</a>
|
||||
</li>
|
||||
<li class="rel head-more-a"><a class="this-get" href="javascript:">更多<em
|
||||
class="fa nav-more" style="font-size:18px"></em></a>
|
||||
<div class="head-more none box size"><a target="_self" href="/"
|
||||
class="nav-link none2"><em
|
||||
class="fa ds-zhuye"></em><em class="fa none ds-zhuye2"></em>首页</a><a
|
||||
target="_self" href="/show/1.html" class="nav-link none2"><em
|
||||
class="fa ds-dongman"></em><em class="fa none ds-dongman2"></em>番剧</a><a
|
||||
target="_self" href="/show/2.html" class="nav-link none2"><em
|
||||
class="fa ds-dianying"></em><em
|
||||
class="fa none ds-dianying2"></em>剧场</a><a target="_self"
|
||||
href="/show/207.html"
|
||||
class="nav-link none2"><em
|
||||
class="fa ds-dianshi"></em><em class="fa none ds-dianshi2"></em>特摄</a><a
|
||||
href="/label/weekday.html" class="nav-link"><em class="fa ds-zhou"></em><em
|
||||
class="fa none ds-zhou2"></em>周番表</a><a href="/label/rank.html"
|
||||
class="nav-link"><em
|
||||
class="fa ds-pahang"></em><em class="fa none ds-pahang2"></em>排行榜</a><a
|
||||
href="/gbook.html" class="nav-link"><em class="fa ds-pinglun"></em><em
|
||||
class="fa none ds-pinglun2"></em>留言板</a></div>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
<div class="right flex">
|
||||
<div class="this-search">
|
||||
<form id="search2" name="search" class="flex-public" method="get" action="/search.html">
|
||||
<a href="javascript:" data-id="1" class="this-select">视频<i class="fa"></i></a><input
|
||||
type="text" name="wd" class="this-input flex-auto cor4" value=""
|
||||
placeholder="想看些什么捏~" autocomplete="off">
|
||||
<div class="flex"><a class="this-hot" href="/label/rank.html"><em
|
||||
class="fa ds-pahang2 r3"></em>排行榜</a>
|
||||
<button type="submit" class="fa ds-sousuo ol2"></button>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
<div class="qiAnDao_bnt margin qd-noneon qd-bnt-off1"><a class="content-center"
|
||||
href="javascript:"><i
|
||||
class="fa ds-qiandao"></i><em>签到</em></a></div>
|
||||
<div class="gen-search margin none"><a class="content-center" href="javascript:"><i
|
||||
class="fa ds-sousuo"></i></a></div>
|
||||
<div class="gen-history margin"><a class="content-center" href="javascript:"><i
|
||||
class="fa ds-lishijilu"></i><em>播放记录</em></a></div>
|
||||
<div class="margin down-none1"><a target="_blank" class="content-center"
|
||||
href="/label/app.html"><i class="fa ds-yingyong"></i><em>客户端</em></a>
|
||||
</div>
|
||||
<div class="gen-left-list margin" style="padding-right:0"><a class="content-center"
|
||||
href="javascript:"><i
|
||||
class="fa ds-menu"></i></a></div>
|
||||
<div class="margin wap-hide"><a class="this-user head-user" href="javascript:"
|
||||
data-url="/user/index.html"><img
|
||||
src="/static/ds3/img/default-head.jpg" alt="游客"/></a></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="m-search">
|
||||
<div class="sbg"></div>
|
||||
<div class="m-search-case"><input type="text" name="wd" value="girls band"
|
||||
placeholder="想看些什么捏~" class="input"></div>
|
||||
<div class="m-search-card box-width">
|
||||
<ul class="cf">
|
||||
<li class="focus"><a href="/search.html?wd=girls band">视频</a><span
|
||||
class="tips ol7"><strong class="mac-total"></strong></span></li>
|
||||
</ul>
|
||||
<a href="/label/rank.html" class="hotrank"><i class="fa icon-hot ds-pahang"></i>热搜榜</a>
|
||||
</div>
|
||||
</div>
|
||||
<div class="box-width">
|
||||
<div class="row flex wrap top40">
|
||||
<div class="row-9">
|
||||
<div class="row-right">
|
||||
<div class="public-list-box search-box flex rel">
|
||||
<div class="cover"
|
||||
style="background-image: linear-gradient(180deg, rgb(17, 19, 25) 0%, rgba(25,26,33,0.90) 52%, rgb(17, 19, 25) 100%), url(https://img02.sogoucdn.com/v2/thumb/retype_exclude_gif/ext/auto/q/95/crop/xy/ai/t/0/?appid=122&url=https://lain.bgm.tv/pic/cover/l/75/c1/431767_bX7FZ.jpg);"></div>
|
||||
<div class="left public-list-bj"><a target="_self" class="public-list-exp"
|
||||
href="/bangumi/7168.html"><img
|
||||
class="lazy lazy1 gen-movie-img mask-1" alt="GIRLS BAND CRY封面图"
|
||||
referrerpolicy="no-referrer"
|
||||
src="data:image/gif;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVQImWNgYGBgAAAABQABh6FO1AAAAABJRU5ErkJggg=="
|
||||
data-src="https://img02.sogoucdn.com/v2/thumb/retype_exclude_gif/ext/auto/q/95/crop/xy/ai/t/0/?appid=122&url=https://lain.bgm.tv/pic/cover/l/75/c1/431767_bX7FZ.jpg"/><span
|
||||
class="public-list-prb hide ft2">更新至08</span><span
|
||||
class="public-bg"></span><span class="public-play"><i class="fa"></i></span></a>
|
||||
</div>
|
||||
<div class="right rel flex-auto">
|
||||
<div class="thumb-content">
|
||||
<div class="thumb-txt cor4 hide"><a target="_self"
|
||||
href="/bangumi/7168.html">GIRLS BAND
|
||||
CRY</a></div>
|
||||
<div class="thumb-else cor5 hide"><span><a href="/search/year/2024.html"
|
||||
target="_blank">2024</a> </span><span><a
|
||||
href="/search/area/%E6%97%A5%E6%9C%AC.html"
|
||||
target="_blank">日本</a> </span><span><a
|
||||
href="/search/class/%E5%8E%9F%E5%88%9B.html"
|
||||
target="_blank">原创</a> <a
|
||||
href="/search/class/%E9%9F%B3%E4%B9%90.html"
|
||||
target="_blank">音乐</a> <a
|
||||
href="/search/class/%E7%99%BE%E5%90%88.html"
|
||||
target="_blank">百合</a> <a
|
||||
href="/search/class/%E6%BC%AB%E7%94%BB%E6%94%B9.html"
|
||||
target="_blank">漫画改</a> <a
|
||||
href="/search/class/%E6%97%A5%E6%BC%AB%E7%95%AA%E5%89%A7.html"
|
||||
target="_blank">日漫番剧</a> <a
|
||||
href="/search/class/%E6%97%A5%E6%BC%AB%E7%95%AA.html"
|
||||
target="_blank">日漫番</a> </span></div>
|
||||
<div class="thumb-director cor5 hide"><a class="b" href="javascript:">导演:</a><a
|
||||
href="/search/director/%E9%85%92%E4%BA%95%E5%92%8C%E7%94%B7.html"
|
||||
target="_blank">酒井和男</a><em>/</em></div>
|
||||
<div class="thumb-actor cor5 hide"><a class="b"
|
||||
href="javascript:">主演:</a><a
|
||||
href="/search/actor/%E7%90%86%E5%90%8D.html"
|
||||
target="_blank">理名</a><em>/</em><a
|
||||
href="/search/actor/%E7%BE%8E%E6%80%9C.html"
|
||||
target="_blank">美怜</a><em>/</em><a
|
||||
href="/search/actor/%E5%A4%95%E8%8E%89.html"
|
||||
target="_blank">夕莉</a><em>/</em><a
|
||||
href="/search/actor/%E6%9C%B1%E6%9D%8E.html"
|
||||
target="_blank">朱李</a><em>/</em><a
|
||||
href="/search/actor/%E5%87%AA%E9%83%BD.html"
|
||||
target="_blank">凪都</a><em>/</em></div>
|
||||
</div>
|
||||
<span class="cor5 thumb-blurb hide2"> 高中二年级,辍学独自在东京工作并设定了上大学的目标的主人公。 被朋友背叛,不知所措的少女。 被父母抛弃,靠打工在大城市中勉强维生的女孩。 这个世界总是背叛我们。 事情总是无法按照我们的想法进行。 但是,我们还是希望喜欢上什么。 因为我们相信自己的位置一定在某个地方。 所以,我们歌唱。</span>
|
||||
<div class="thumb-menu flex"><a target="_self" href="/bangumi/7168.html"
|
||||
class="button ol2"><i
|
||||
class="fa r3 ds-bofang1"></i>播放正片</a><a
|
||||
class="thumb-s collection fa ds-shoucang" data-type="2" data-mid="1"
|
||||
data-id="7168"></a></div>
|
||||
</div>
|
||||
</div>
|
||||
<script>$('.mac-total').html('1');</script>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row-1 wap-hide">
|
||||
<div class="wap-diy-vod-e">
|
||||
<div class="title-m cor4 flex between"><h5>热播影片</h5><a target="_self"
|
||||
class="cor5"
|
||||
href="/label/rank.html">更多<i
|
||||
class="fa r3 ds-jiantouyou"></i></a></div>
|
||||
<ul>
|
||||
<li><a target="_self" href="/bangumi/3257.html" class="vod-link br b-b"><img
|
||||
alt="妖精的尾巴 第一季"
|
||||
src="https://img02.sogoucdn.com/v2/thumb/retype_exclude_gif/ext/auto/q/95/crop/xy/ai/t/0/?appid=122&url=https://lain.bgm.tv/pic/cover/l/33/9a/2609_3ak4F.jpg"
|
||||
class="vod-img vod-no-dom radius"/><span
|
||||
class="vod-no-style vod-no-dom-show">NO</span><span
|
||||
class="vod-on-e-styles key1 cor5 vod-no-dom-show">1</span>
|
||||
<div class="vod-center"><span class="vod-title" title="妖精的尾巴 第一季">妖精的尾巴 第一季</span>
|
||||
<div class="vod-sub-title"><span
|
||||
class="vod-sub-text cor5">已完结[1-175]</span>
|
||||
<div class="vod-hot-content flex"><span
|
||||
class="fa"></span><span>89447</span></div>
|
||||
</div>
|
||||
</div>
|
||||
</a></li>
|
||||
<li><a target="_self" href="/bangumi/7168.html" class="vod-link br b-b"><img
|
||||
alt="GIRLS BAND CRY"
|
||||
src="https://img02.sogoucdn.com/v2/thumb/retype_exclude_gif/ext/auto/q/95/crop/xy/ai/t/0/?appid=122&url=https://lain.bgm.tv/pic/cover/l/75/c1/431767_bX7FZ.jpg"
|
||||
class="vod-img vod-no-dom radius"/><span
|
||||
class="vod-no-style vod-no-dom-show">NO</span><span
|
||||
class="vod-on-e-styles key2 cor5 vod-no-dom-show">2</span>
|
||||
<div class="vod-center"><span class="vod-title" title="GIRLS BAND CRY">GIRLS BAND CRY</span>
|
||||
<div class="vod-sub-title"><span
|
||||
class="vod-sub-text cor5">更新至08</span>
|
||||
<div class="vod-hot-content flex"><span
|
||||
class="fa"></span><span>49620</span></div>
|
||||
</div>
|
||||
</div>
|
||||
</a></li>
|
||||
<li><a target="_self" href="/bangumi/7140.html" class="vod-link br b-b"><img
|
||||
alt="为美好的世界献上祝福!第三季"
|
||||
src="https://img02.sogoucdn.com/v2/thumb/retype_exclude_gif/ext/auto/q/95/crop/xy/ai/t/0/?appid=122&url=https://lain.bgm.tv/pic/cover/l/4c/8a/342667_0RfU8.jpg"
|
||||
class="vod-img vod-no-dom radius"/><span
|
||||
class="vod-no-style vod-no-dom-show">NO</span><span
|
||||
class="vod-on-e-styles key3 cor5 vod-no-dom-show">3</span>
|
||||
<div class="vod-center"><span class="vod-title"
|
||||
title="为美好的世界献上祝福!第三季">为美好的世界献上祝福!第三季</span>
|
||||
<div class="vod-sub-title"><span
|
||||
class="vod-sub-text cor5">更新至07</span>
|
||||
<div class="vod-hot-content flex"><span
|
||||
class="fa"></span><span>50732</span></div>
|
||||
</div>
|
||||
</div>
|
||||
</a></li>
|
||||
<li><a target="_self" href="/bangumi/4841.html" class="vod-link br b-b"><img
|
||||
alt="CLANNAD"
|
||||
src="https://img02.sogoucdn.com/v2/thumb/retype_exclude_gif/ext/auto/q/95/crop/xy/ai/t/0/?appid=122&url=https://img9.doubanio.com/view/photo/s_ratio_poster/public/p2221186392.jpg"
|
||||
class="vod-img vod-no-dom radius"/><span
|
||||
class="vod-no-style vod-no-dom-show">NO</span><span
|
||||
class="vod-on-e-styles key4 cor5 vod-no-dom-show">4</span>
|
||||
<div class="vod-center"><span class="vod-title"
|
||||
title="CLANNAD">CLANNAD</span>
|
||||
<div class="vod-sub-title"><span class="vod-sub-text cor5">已完结</span>
|
||||
<div class="vod-hot-content flex"><span
|
||||
class="fa"></span><span>91336</span></div>
|
||||
</div>
|
||||
</div>
|
||||
</a></li>
|
||||
<li><a target="_self" href="/bangumi/7187.html" class="vod-link br b-b"><img
|
||||
alt="无职转生Ⅱ ~到了异世界就拿出真本事~ 第2部分"
|
||||
src="https://img02.sogoucdn.com/v2/thumb/retype_exclude_gif/ext/auto/q/95/crop/xy/ai/t/0/?appid=122&url=https://lain.bgm.tv/pic/cover/l/ad/25/444557_P66C6.jpg"
|
||||
class="vod-img vod-no-dom radius"/><span
|
||||
class="vod-no-style vod-no-dom-show">NO</span><span
|
||||
class="vod-on-e-styles key5 cor5 vod-no-dom-show">5</span>
|
||||
<div class="vod-center"><span class="vod-title"
|
||||
title="无职转生Ⅱ ~到了异世界就拿出真本事~ 第2部分">无职转生Ⅱ ~到了异世界就拿出真本事~ 第2部分</span>
|
||||
<div class="vod-sub-title"><span
|
||||
class="vod-sub-text cor5">更新至18</span>
|
||||
<div class="vod-hot-content flex"><span
|
||||
class="fa"></span><span>47638</span></div>
|
||||
</div>
|
||||
</div>
|
||||
</a></li>
|
||||
<li><a target="_self" href="/bangumi/7137.html" class="vod-link br b-b"><img
|
||||
alt="关于我转生变成史莱姆这档事 第三季"
|
||||
src="https://img02.sogoucdn.com/v2/thumb/retype_exclude_gif/ext/auto/q/95/crop/xy/ai/t/0/?appid=122&url=https://lain.bgm.tv/pic/cover/l/f0/f4/407573_993Vy.jpg"
|
||||
class="vod-img vod-no-dom radius"/><span
|
||||
class="vod-no-style vod-no-dom-show">NO</span><span
|
||||
class="vod-on-e-styles key6 cor5 vod-no-dom-show">6</span>
|
||||
<div class="vod-center"><span class="vod-title"
|
||||
title="关于我转生变成史莱姆这档事 第三季">关于我转生变成史莱姆这档事 第三季</span>
|
||||
<div class="vod-sub-title"><span
|
||||
class="vod-sub-text cor5">更新至56</span>
|
||||
<div class="vod-hot-content flex"><span
|
||||
class="fa"></span><span>54854</span></div>
|
||||
</div>
|
||||
</div>
|
||||
</a></li>
|
||||
<li><a target="_self" href="/bangumi/6447.html" class="vod-link br b-b"><img
|
||||
alt="欢迎来到实力至上主义教室 第三季"
|
||||
src="https://img02.sogoucdn.com/v2/thumb/retype_exclude_gif/ext/auto/q/95/crop/xy/ai/t/0/?appid=122&url=https://lain.bgm.tv/pic/cover/l/50/4d/373266_BiqQm.jpg"
|
||||
class="vod-img vod-no-dom radius"/><span
|
||||
class="vod-no-style vod-no-dom-show">NO</span><span
|
||||
class="vod-on-e-styles key7 cor5 vod-no-dom-show">7</span>
|
||||
<div class="vod-center"><span class="vod-title"
|
||||
title="欢迎来到实力至上主义教室 第三季">欢迎来到实力至上主义教室 第三季</span>
|
||||
<div class="vod-sub-title"><span class="vod-sub-text cor5">已完结</span>
|
||||
<div class="vod-hot-content flex"><span
|
||||
class="fa"></span><span>142611</span></div>
|
||||
</div>
|
||||
</div>
|
||||
</a></li>
|
||||
<li><a target="_self" href="/bangumi/7207.html" class="vod-link br b-b"><img
|
||||
alt="怪兽8号"
|
||||
src="https://img02.sogoucdn.com/v2/thumb/retype_exclude_gif/ext/auto/q/95/crop/xy/ai/t/0/?appid=122&url=https://lain.bgm.tv/pic/cover/l/9c/d2/394623_BkSVB.jpg"
|
||||
class="vod-img vod-no-dom radius"/><span
|
||||
class="vod-no-style vod-no-dom-show">NO</span><span
|
||||
class="vod-on-e-styles key8 cor5 vod-no-dom-show">8</span>
|
||||
<div class="vod-center"><span class="vod-title"
|
||||
title="怪兽8号">怪兽8号</span>
|
||||
<div class="vod-sub-title"><span
|
||||
class="vod-sub-text cor5">更新至07</span>
|
||||
<div class="vod-hot-content flex"><span
|
||||
class="fa"></span><span>30768</span></div>
|
||||
</div>
|
||||
</div>
|
||||
</a></li>
|
||||
<li><a target="_self" href="/bangumi/6452.html" class="vod-link br b-b"><img
|
||||
alt="迷宫饭"
|
||||
src="https://img02.sogoucdn.com/v2/thumb/retype_exclude_gif/ext/auto/q/95/crop/xy/ai/t/0/?appid=122&url=https://lain.bgm.tv/pic/cover/l/c5/88/395378_1N3Zy.jpg"
|
||||
class="vod-img vod-no-dom radius"/><span
|
||||
class="vod-no-style vod-no-dom-show">NO</span><span
|
||||
class="vod-on-e-styles key9 cor5 vod-no-dom-show">9</span>
|
||||
<div class="vod-center"><span class="vod-title" title="迷宫饭">迷宫饭</span>
|
||||
<div class="vod-sub-title"><span
|
||||
class="vod-sub-text cor5">更新至21</span>
|
||||
<div class="vod-hot-content flex"><span
|
||||
class="fa"></span><span>77578</span></div>
|
||||
</div>
|
||||
</div>
|
||||
</a></li>
|
||||
<li><a target="_self" href="/bangumi/5734.html" class="vod-link br b-b"><img
|
||||
alt="暴食狂战士"
|
||||
src="https://img02.sogoucdn.com/v2/thumb/retype_exclude_gif/ext/auto/q/95/crop/xy/ai/t/0/?appid=122&url=https://lain.bgm.tv/pic/cover/c/d0/9c/406180_zvAgW.jpg"
|
||||
class="vod-img vod-no-dom radius"/><span
|
||||
class="vod-no-style vod-no-dom-show">NO</span><span
|
||||
class="vod-on-e-styles key10 cor5 vod-no-dom-show">10</span>
|
||||
<div class="vod-center"><span class="vod-title"
|
||||
title="暴食狂战士">暴食狂战士</span>
|
||||
<div class="vod-sub-title"><span
|
||||
class="vod-sub-text cor5">更新至12</span>
|
||||
<div class="vod-hot-content flex"><span
|
||||
class="fa"></span><span>204411</span></div>
|
||||
</div>
|
||||
</div>
|
||||
</a></li>
|
||||
<li><a target="_self" href="/bangumi/7143.html" class="vod-link br b-b"><img
|
||||
alt="转生为第七王子,随心所欲的魔法学习之路"
|
||||
src="https://img02.sogoucdn.com/v2/thumb/retype_exclude_gif/ext/auto/q/95/crop/xy/ai/t/0/?appid=122&url=https://lain.bgm.tv/pic/cover/l/2b/b7/407133_hGMQM.jpg"
|
||||
class="vod-img vod-no-dom radius"/><span
|
||||
class="vod-no-style vod-no-dom-show">NO</span><span
|
||||
class="vod-on-e-styles key11 cor5 vod-no-dom-show">11</span>
|
||||
<div class="vod-center"><span class="vod-title"
|
||||
title="转生为第七王子,随心所欲的魔法学习之路">转生为第七王子,随心所欲的魔法学习之路</span>
|
||||
<div class="vod-sub-title"><span
|
||||
class="vod-sub-text cor5">更新至08</span>
|
||||
<div class="vod-hot-content flex"><span
|
||||
class="fa"></span><span>35073</span></div>
|
||||
</div>
|
||||
</div>
|
||||
</a></li>
|
||||
<li><a target="_self" href="/bangumi/3337.html" class="vod-link br b-b"><img
|
||||
alt="海贼王"
|
||||
src="https://img02.sogoucdn.com/v2/thumb/retype_exclude_gif/ext/auto/q/95/crop/xy/ai/t/0/?appid=122&url=https://img9.doubanio.com/view/photo/s_ratio_poster/public/p2197828404.jpg"
|
||||
class="vod-img vod-no-dom radius"/><span
|
||||
class="vod-no-style vod-no-dom-show">NO</span><span
|
||||
class="vod-on-e-styles key12 cor5 vod-no-dom-show">12</span>
|
||||
<div class="vod-center"><span class="vod-title" title="海贼王">海贼王</span>
|
||||
<div class="vod-sub-title"><span
|
||||
class="vod-sub-text cor5">更新至1105</span>
|
||||
<div class="vod-hot-content flex"><span
|
||||
class="fa"></span><span>178670</span></div>
|
||||
</div>
|
||||
</div>
|
||||
</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="top-back"><a class="lang-bnt fa box" data-id="1" href="javascript:">繁</a>
|
||||
<script src="/static/ds3/js/zh.js"></script>
|
||||
<a class="theme-style fa box" data-id="2" href="javascript:"></a><a
|
||||
class="bj2 top fa ds-jiantoushang" href="javascript:"></a></div>
|
||||
<footer class="footer box top40 wap-hide"><p class="this-link"><a href="" target="_blank"
|
||||
rel="nofollow">Telegram群</a><a
|
||||
href="/gbook.html" target="_blank">问题反馈</a><a href="/rss/baidu.xml"
|
||||
target="_blank">网站地图</a></p>
|
||||
<p class="cor5">
|
||||
本站所有资源信息均从互联网搜索而来,本站不对显示的内容承担责任,如您认为本站页面信息侵犯了您的权益,请附上版权证明邮件告知,在收到邮件后48小时内删除</p>
|
||||
<p class="cor5">Copyright © 2021~2024 <a href="/">www.nyafun.net</a> All
|
||||
rights reservd.</p>
|
||||
<p class="none">
|
||||
<script>
|
||||
var _paq = window._paq = window._paq || []; _paq.push(['trackPageView']); _paq.push(['enableLinkTracking']); (function() { var u="//tongji.nyafun.net/"; _paq.push(['setTrackerUrl', u+'matomo.php']); _paq.push(['setSiteId', '1']); var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0]; g.async=true; g.src=u+'matomo.js'; s.parentNode.insertBefore(g,s); })();
|
||||
</script>
|
||||
</p>
|
||||
</footer>
|
||||
<div class="bottom-navigation none tab-off-1 tab-text-1">
|
||||
<div class="foot-top-height"></div>
|
||||
<div class="foot-table-box bj3">
|
||||
<ul class="flex around">
|
||||
<li><a target="_self" class="cor4" href="/"><em class="fa ds-zhuye"></em><em
|
||||
class="fa none ds-zhuye2"></em>
|
||||
<p class="time-title">首页</p></a></li>
|
||||
<li><a target="_self" class="cor4" href="/show/1.html"><em
|
||||
class="fa ds-dongman"></em><em class="fa none ds-dongman2"></em>
|
||||
<p class="time-title">番剧</p></a></li>
|
||||
<li><a target="_self" class="cor4" href="/label/rank.html"><em
|
||||
class="fa ds-pahang"></em><em class="fa none ds-pahang2"></em>
|
||||
<p class="time-title">排行榜</p></a></li>
|
||||
<li><a target="_self" class="cor4" href="/label/app.html"><em class="fa ds-faxian"></em><em
|
||||
class="fa none ds-faxian2"></em>
|
||||
<p class="time-title">APP下载</p></a></li>
|
||||
<li><a target="_self" class="cor4" href="/user/index.html"><em
|
||||
class="fa ds-yonghu"></em><em class="fa none ds-yonghu2"></em>
|
||||
<p class="time-title">我的</p></a></li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
<div id="notice" class="ds-pop none">
|
||||
<div class="box-bg"></div>
|
||||
<div class="pop-box">
|
||||
<div class="topfadeInUp animated bj3 cor4">
|
||||
<div class="pop-top"></div>
|
||||
<div class="pop-title">公告</div>
|
||||
<div class="pop-content">
|
||||
<div class="popup-main"><p class="popup-domain">
|
||||
<span>NyaFun动漫APP已上线</span><strong><a
|
||||
href="https://www.123pan.com/s/U0MbVv-SPWIh.html"
|
||||
target="_red">🔥点我立即下载🔥</a></strong></p>
|
||||
<p class="popup-domain"><span>英文域名</span><strong><a
|
||||
href="https://www.nyafun.net"
|
||||
target="_blank">www.nyafun.net</a></strong></p>
|
||||
<p align="center">将以上域名加入Ctrl+D收藏夹,回到NyaFun更方便</div>
|
||||
</div>
|
||||
<input type="button" class="button ol2" style="width:100%" value="我已了解"></div>
|
||||
</div>
|
||||
</div>
|
||||
<script>
|
||||
((function () { var callbacks = [], timeLimit = 50, open = false; setInterval(loop, 1); return {addListener: function (fn) {callbacks.push(fn);}, cancleListenr: function (fn) { callbacks = callbacks.filter(function (v) { return v !== fn; }); }}; function loop() { var startTime = new Date(); debugger; if (new Date() - startTime > timeLimit) { if (!open) { callbacks.forEach(function (fn) { fn.call(null); }); }open = true; window.stop(); $(location).attr('href', 'https://www.baidu.com/'); }else { open = false; } } })()).addListener(function () { window.location.reload(); }); window.document.keydown(function (event) { if (event.keyCode == 123) { $(location).attr('href', 'https://www.baidu.com/'); } });
|
||||
</script>
|
||||
<div class="box-bg2 pop-bj" style="display:none"></div>
|
||||
<div class="pop-list-body bj pop-1">
|
||||
<div class="wap-head" style="display:none">
|
||||
<div class="l"><a class="fa pop-bj cor4" href="javascript:"></a></div>
|
||||
<h2 class="hidden"><a class="cor4 b" href="javascript:">搜索</a></h2></div>
|
||||
<div class="wap-head-z"></div>
|
||||
<div class="head-search input bj br">
|
||||
<form id="search" name="search" method="get" action="/search.html"><input type="text"
|
||||
name="wd"
|
||||
class="search-input mac_wd cor5"
|
||||
value="girls band"
|
||||
placeholder="想看些什么捏~"
|
||||
autocomplete="off"/>
|
||||
<button type="submit" class="search-input-sub button fa ds-sousuo"></button>
|
||||
<button type="button" class="select-name cor5" data-id="1">视频<i class="fa cor5"></i>
|
||||
</button>
|
||||
</form>
|
||||
</div>
|
||||
<div class="select-list bj radius br none">
|
||||
<div class="flex between ease cor4"><span data-id="1" data-name="视频"
|
||||
data-url="/search.html">视频</span></div>
|
||||
</div>
|
||||
<div class="completion cor5 ft3"></div>
|
||||
<div class="public-list-new top30">
|
||||
<div class="title-m cor4 flex between"><h5>搜索历史</h5><a id="re_del" class="cor6 ho"
|
||||
style="font-size:14px"><i
|
||||
class="fa r3 ds-shanchu"></i>删除</a></div>
|
||||
<div class="records-list"></div>
|
||||
</div>
|
||||
<div class="wap-diy-vod-e search-hot top30">
|
||||
<div class="title-m cor4 flex between"><h5>热门搜索</h5></div>
|
||||
<div>
|
||||
<ul>
|
||||
<li><a href="/search/wd/%E5%BD%B1%E4%B9%8B%E5%AE%9E%E5%8A%9B%E8%80%85.html"
|
||||
target="_blank" class="vod-link br b-b"><span
|
||||
class="vod-no-style">NO</span><span
|
||||
class="vod-on-e-styles key1 cor5">1</span>
|
||||
<div class="vod-center hide">影之实力者</div>
|
||||
</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="pop-list-body gen-history-list bj pop-2">
|
||||
<div class="wap-head" style="display:none">
|
||||
<div class="l"><a class="fa pop-bj cor4" href="javascript:"></a></div>
|
||||
<h2 class="hidden"><a class="cor4 b" href="javascript:">播放记录</a></h2></div>
|
||||
<div class="wap-head-z"></div>
|
||||
<div class="play-catalog flex around ft4 b"><span class="rel on"><a
|
||||
href="javascript:">本地记录</a></span><span class="rel"><a
|
||||
href="javascript:">云端记录</a></span></div>
|
||||
<div class="top30 mask-1-box">
|
||||
<div class="locality-history history check">
|
||||
<ul></ul>
|
||||
<a id="l_history" href="javascript:" class="button top30 ol2"
|
||||
style="width:100%">清空记录</a></div>
|
||||
<div class="user-history history">
|
||||
<ul>
|
||||
<div class="loading">
|
||||
<span></span><span></span><span></span><span></span><span></span></div>
|
||||
</ul>
|
||||
<a href="/user/plays.html" class="button top30 ol2" style="width:100%">查看更多</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="gen-account-menu none">
|
||||
<div class="head-user-info"
|
||||
style="background-image: linear-gradient(to top,rgb(0 0 0 / 80%),transparent),url(/static/ds3/img/index_user.jpg);">
|
||||
<a class="head-user" data-url="/user/index.html" href="javascript:">登录账号</a></div>
|
||||
</div>
|
||||
<div class="qiAnDao-con pop-box" style="display:none"><a class="qiAnDao-gz-bnt" href="javascript:">签到规则</a><a
|
||||
class="qiAnDao-gz-off fa" href="javascript:"></a>
|
||||
<div class="qiAnDao-con-bj"></div>
|
||||
<div class="qiAnDao-title cor1"><h5>每日签到</h5><span>每日签到一次,连续签到奖励更多</span>
|
||||
</div>
|
||||
<div id="qiAnDao_1" class="qiAnDao-main"
|
||||
style="display:none;text-align:center;color:#999;padding:60px 0"><i class="loading3"></i>加载中
|
||||
</div>
|
||||
<div id="qiAnDao_2" class="qiAnDao-main">
|
||||
<div class="qiAnDao-bj"></div>
|
||||
<ul class="qiAnDao-list days cor8 flex wrap">
|
||||
<li>日</li>
|
||||
<li>一</li>
|
||||
<li>二</li>
|
||||
<li>三</li>
|
||||
<li>四</li>
|
||||
<li>五</li>
|
||||
<li>六</li>
|
||||
</ul>
|
||||
<ul class="qiAnDao-list flex wrap" id="qiAnDao-list"></ul>
|
||||
</div>
|
||||
<div class="qiAnDao-top">立即签到</div>
|
||||
<div class="qiAnDao-bottom"><a href="javascript:" class="fa"></a><h4>签到规则</h4>
|
||||
<p>1.连续签到7天可以获得额外奖励5积分<br>2.连续签到15天可以获得额外奖励5积分<br>3.连续签到20天获得额外奖励10积分<br>4.连续签到25天获得额外奖励10积分<br>
|
||||
</p></div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
<script>
|
||||
// 兼容低版本浏览器插件
|
||||
var um = document.createElement("script");
|
||||
um.src = "https://cdn.polyfill.io/v3/polyfill.min.js?features=default";
|
||||
var s = document.getElementsByTagName("script")[0];
|
||||
s.parentNode.insertBefore(um, s);
|
||||
</script>
|
@ -74,6 +74,7 @@ includeProject(":data-sources:core", "data-sources/core") // data source manager
|
||||
includeProject(":data-sources:dmhy", "data-sources/dmhy") // data source from https://dmhy.org
|
||||
includeProject(":data-sources:acg-rip", "data-sources/acg.rip") // data source from https://acg.rip
|
||||
includeProject(":data-sources:mikan", "data-sources/mikan") // data source from https://mikanani.me/
|
||||
includeProject(":data-sources:nyafun", "data-sources/nyafun") // data source from https://nyafun.net/
|
||||
includeProject(
|
||||
":data-sources:bangumi",
|
||||
"data-sources/bangumi"
|
||||
|
Reference in New Issue
Block a user