Flutter视频内容爬取插件anitube_crawler_updated_api的使用

Flutter视频内容爬取插件anitube_crawler_updated_api的使用

anitube_crawler_api

Build Status

Anitube网站爬虫API。这是一个简单的Dart包,用于从巴西的Anitube网站抓取动漫和剧集数据。

真实包链接:anitube_crawler_api

此包获取网站HTML页面,解析它们并返回格式良好的数据模型类。

该包是AnimeStore移动应用项目的一部分。

特性

  • 🎬 获取最近发布的剧集。
  • 🎉 获取最近的动漫。
  • 😍 获取最受欢迎的动漫。
  • ✅ 获取每日发布。
  • 💫 获取可用的类型。
  • 🙆‍♂️ 获取包含所有可用剧集的动漫详情信息。
  • 🎬 获取包含视频流链接的剧集详情信息。
  • 🔍 搜索动漫。

使用

要使用此插件,在pubspec.yaml文件中添加anitube_crawler_updated_apidio包作为依赖项。例如:

dependencies:
  anitube_crawler_updated_api: 1.4.0
  dio: ^4.0.6

API

API非常简单。你只需要一个AniTubeApi类的实例就可以获取你想要的所有数据。

import 'package:anitube_crawler_updated_api/anitube_crawler_api.dart';

final dioClient = Dio();
/// 创建一个实例。
final AniTubeApi api = AniTubeApi(dioClient);

获取Anitube首页数据

HomePageInfo homePage = await api.getHomePageData();

// HomePageInfo 带来了关于Anitube网站首页的全部信息,使用了简单且格式良好的模型。

// 检查homePage带来的数据。

print(homePage.dayReleases); // 数据类型是 List<AnimeItem>

print(homePage.latestEpisodes); // 数据类型是 List<EpisodeItem>

print(homePage.mostRecentAnimes); // 数据类型是 List<AnimeItem>

print(homePage.mostShowedAnimes); // 数据类型是 List<AnimeItem>

获取动漫详情信息,如标题、作者、剧集参考列表、类型等

// 获取首次发布的动漫。
AnimeItem anime = homePage.dayReleases[0];
// 使用AnimeItem实例的id属性。

AnimeDetails details = await api.getAnimeDetails();

// 检查动漫详情属性
print(details);

获取剧集详情信息,如播放URL

// details是一个AnimeDetails实例。

var episodeList = details.episodes; // 获取 List<EpisodeItem>

// 获取列表中的第一个剧集

var desiredEpisode = episodeList[0];

// 使用EpisodeItem实例的id属性。

EpisodeDetails episode = await api.getEpisodeDetails(desiredEpisode.id);

// 打印剧集标题

print(episode.title);

// 打印剧集播放URL

print(episode.streamUrl);

// 检查EpisodeDetails类属性

print(episode);

获取所有可用的类型

List<Genres> genres = await api.getGenresAvailable();

// 打印所有可用类型的列表。
print(genres);

获取Anitube网站上的所有动漫

// AnimeListPageInfo 实例包含了当前动漫列表页的数据,包括动漫项目列表和当前页码和最大页码,这些都可用于分页。

AnimeListPageInfo pageInfo = await api.getAnimeListPageData(
  // 1是默认页码
  pageNumber: 1,
  // 获取只有字幕的动漫。
  ccType: AnimeCC.LEGENDED,
);

// 打印当前页码
print(pageInfo.pageNumber);

// 打印最后一页码
print(pageInfo.maxPageNumber);

// 打印当前页的动漫列表
print(pageInfo.animes);

动漫搜索

搜索引擎来自anitube网站。有时它会返回不希望的结果,但大多数情况下工作得很好。

// 搜索可以是任何内容。一个字母、动漫名称、工作室名称等。

String query = "Shigeki no kyojin";

AnimeListPageInfo searchPageInfo = await api.search(
  query,
  pageNumber: 1, // 默认页码是1。
);

// 打印当前搜索页码
print(searchPageInfo.pageNumber);

// 打印最后一页码
print(searchPageInfo.maxPageNumber);

// 打印当前搜索页的动漫列表
print(searchPageInfo.animes);

// 注意:有时查询可能有多于一页,这种情况下
// 如果你需要更多与相同查询字符串值的结果,你必须再次调用search方法,使用相同的查询但不同的页码。

// 获取查询字符串的第2页。

AnimeListPageInfo searchPageInfo2 = await api.search(
  query,
  pageNumber: 2,
);

更多关于Flutter视频内容爬取插件anitube_crawler_updated_api的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter视频内容爬取插件anitube_crawler_updated_api的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


当然,以下是如何在Flutter项目中使用anitube_crawler_updated_api插件来爬取视频内容的示例代码。请注意,实际使用中需要确保遵守相关网站的使用条款和版权法律。

首先,确保你已经在pubspec.yaml文件中添加了anitube_crawler_updated_api依赖:

dependencies:
  flutter:
    sdk: flutter
  anitube_crawler_updated_api: ^最新版本号  # 请替换为实际的最新版本号

然后,运行flutter pub get来安装依赖。

接下来,在你的Flutter项目中,你可以按照以下步骤使用anitube_crawler_updated_api

  1. 导入插件

在你的Dart文件中导入插件:

import 'package:anitube_crawler_updated_api/anitube_crawler_updated_api.dart';
  1. 初始化并爬取视频内容

下面是一个简单的示例,展示如何使用该插件来爬取视频内容:

import 'package:flutter/material.dart';
import 'package:anitube_crawler_updated_api/anitube_crawler_updated_api.dart';

void main() {
  runApp(MyApp());
}

class MyApp extends StatefulWidget {
  @override
  _MyAppState createState() => _MyAppState();
}

class _MyAppState extends State<MyApp> {
  List<VideoData> videos = [];
  bool isLoading = false;

  @override
  void initState() {
    super.initState();
    fetchVideos();
  }

  void fetchVideos() async {
    setState(() {
      isLoading = true;
    });

    try {
      // 假设你要爬取的是某个特定的动画或视频列表页面
      String url = "https://example.com/anime/video-list";  // 替换为实际的URL
      AnitubeCrawler crawler = AnitubeCrawler();
      List<VideoData> result = await crawler.fetchVideoDataFromUrl(url);

      setState(() {
        videos = result;
        isLoading = false;
      });
    } catch (e) {
      print("Error fetching videos: $e");
      setState(() {
        isLoading = false;
      });
    }
  }

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text('Anitube Crawler Demo'),
        ),
        body: isLoading
            ? Center(child: CircularProgressIndicator())
            : ListView.builder(
                itemCount: videos.length,
                itemBuilder: (context, index) {
                  VideoData video = videos[index];
                  return ListTile(
                    title: Text(video.title),
                    subtitle: Text(video.description),
                    leading: Image.network(video.thumbnailUrl),
                  );
                },
              ),
      ),
    );
  }
}

// 假设VideoData是一个简单的数据模型类,根据实际情况定义
class VideoData {
  String title;
  String description;
  String thumbnailUrl;

  VideoData({required this.title, required this.description, required this.thumbnailUrl});
}

注意

  1. 上面的代码假设AnitubeCrawler类有一个fetchVideoDataFromUrl方法,这只是一个示例。实际插件的API可能会有所不同,请参考插件的官方文档或源代码来了解具体的API调用方式。
  2. VideoData类是一个简单的数据模型,你需要根据实际情况调整它的结构和初始化方式。
  3. 在实际开发中,处理错误和异常非常重要,上面的代码只是简单地打印了错误信息。
  4. 遵守目标网站的使用条款和版权法律是至关重要的。在使用爬虫插件时,请确保你的行为是合法和合规的。

由于我无法直接访问anitube_crawler_updated_api插件的源代码或文档,上述代码是基于假设的API调用方式编写的。如果你遇到任何问题或需要进一步的帮助,请查阅该插件的官方文档或在其GitHub仓库中查找示例代码。

回到顶部