马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
×
迩来搞了一个故意思的小工具——短视频去水印分析器!这玩意儿可以把短视频中的水印给抹掉,还能提取视频、封面等资源。整个项目用了 Uniapp 开发,做完后体验了一下,发现还挺随手。本日就来跟各人聊聊实现思绪和代码细节~
需求分析
我们的目标是做一个简朴易用的小工具,支持以下功能:
- 输入短视频链接,辨认并分析出视频内容。
- 展示视频信息:视频封面、作者信息、标题等。
- 下载和复制功能:可以方便地复制视频链接、封面链接和标题。
代码拆解与讲授
先来看代码的大要结构,我们把重要部门放在 <template> 和 <script> 里,固然另有一些样式细节。不要发急,我们会逐段分析,干货满满~
页面模板部门 (<template>)
起首是页面的结构,用 Vue 的模板语法来结构。这里用了 uni-notice-bar 来放一些提示,克制用户乱用这工具(你懂的,须要的免责声明)。- <uni-notice-bar
- :show-icon="true"
- :scrollable="true"
- :single="true"
- text="本工具仅供学习交流实用,请勿用于商业用途。"
- ></uni-notice-bar>
复制代码 这段代码很简朴,就是一个横幅关照条,提示用户“仅供学习用途”,毕竟,咱们要做个遵法的好公民。
接下来是输入框、辨认按钮、展示效果的地区:- <view class="input-section card">
- <input v-model="inputText" placeholder="请输入文本" class="input-box" />
- <view class="button-group">
- <button class="action-button" @tap="clearText">清空</button>
- <button class="action-button" @tap="extractLinks">识别</button>
- </view>
- </view>
复制代码
- input:绑定 v-model="inputText",获取用户输入的链接。
- 按钮组:两个按钮,一个清空输入框,一个开始辨认。
辨认链接功能 (extractLinks 方法)
代码如下:- async extractLinks() {
- const urlPattern = /(https?:\/\/[^\s]+)/g;
- const links = this.inputText.match(urlPattern);
- if (links && links.length > 0) {
- this.extractedLinks = links;
- this.showNoLinkMessage = false;
- await this.fetchVideoData(links[0]);
- } else {
- this.extractedLinks = [];
- this.showNoLinkMessage = true;
- }
- }
复制代码
- 正则匹配链接:简朴地通过正则表达式来辨认用户输入中的 URL。
- 调用视频分析函数:辨认到 URL 后,就调用 fetchVideoData,实行分析视频信息。
哀求视频分析接口 (fetchVideoData 方法)
通过接口哀求获取视频信息,这里用了 uni.request 方法。- async fetchVideoData(link) {
- const encodedURL = encodeURIComponent(link);
- await uni.request({
- url: `${VideoParserAPI}?url=${encodedURL}`,
- method: 'GET',
- success: (response) => {
- if (response.data.code === 200) {
- this.data = response.data.data;
- } else {
- this.data = null;
- uni.showToast({ title: response.data.msg || '解析失败', icon: 'none' });
- }
- },
- fail: () => {
- this.data = null;
- uni.showToast({ title: '请求出错', icon: 'none' });
- }
- });
- }
复制代码
- URL编码:encodeURIComponent 确保链接转达准确。
- 哀求乐成:如果 code === 200,则表现分析乐成,数据就放在 this.data 里,反面展示就靠这个了。
- 哀求失败:不管啥缘故原由,直接 uni.showToast 弹个错误提示就完事了。
视频播放与信息展示
分析乐成后,我们会展示作者、标题、封面等信息,趁便整了个播放按钮。- <view class="card" v-if="data">
- <view class="author">
- <image :src="data.author.avatar" class="avatar"></image>
- <text class="author-name">{{ data.author.name }}</text>
- </view>
- <text class="title">{{ data.title }}</text>
- <image :src="data.cover_url" class="cover"></image>
- <button class="play-button" @tap="playVideo">播放视频</button>
- </view>
复制代码
- v-if="data":只有当 data 有内容时才表现。
- 播放视频:点击按钮后 playVideo 方法会表现 <video> 标签,开始播放视频。
- playVideo() {
- this.showVideo = true;
- }
复制代码 下载和复制功能
提供了几个按钮,可以让用户复制视频的标题、链接等信息。代码如下:- copyTitle() {
- if (this.data && this.data.title) {
- uni.setClipboardData({
- data: this.data.title,
- success: () => {
- uni.showToast({ title: '标题已复制', icon: 'success' });
- },
- fail: () => {
- uni.showToast({ title: '复制失败', icon: 'none' });
- }
- });
- }
- }
复制代码 其他按钮(如复制视频链接、复制封面链接)逻辑雷同,就不赘述了。
样式与美化
页面的样式重要会合在 <style> 标签内,针对差别组件举行样式界说,好比 card、input-box、button-group 等等。- .container {
- display: flex;
- flex-direction: column;
- align-items: center;
- padding: 20rpx;
- background-color: #f5f5f5;
- }
- .input-box {
- width: 100%;
- height: 60rpx;
- padding: 10rpx;
- border: 1px solid #ccc;
- border-radius: 10rpx;
- margin-bottom: 10rpx;
- }
- .action-button {
- width: 45%;
- height: 60rpx;
- background-color: #007aff;
- color: #fff;
- border-radius: 10rpx;
- }
复制代码 样式计划保持轻便,让用户可以舒畅地利用,整个页面风格清新、轻便。
下面是效果展示:
总结
整个过程还是蛮顺畅的,重要是借助了 Uniapp 和现成的视频分析 API 来实现短视频去水印分析的焦点功能。固然,代码中还是有一些细节必要注意,好比正则表达式的利用、接口哀求的错误处理处罚等。整个工具界面友爱,利用简朴,信任各人用起来会感觉不错!
代码着实也没啥复杂的地方,简朴实用才是硬原理。渴望各人喜欢这个工具,如果你有更好的优化发起,欢迎一起交换~
|