如何用vba从potplayer抓字幕填写到excel

主要是简单的实现,把百度或有道的单词翻译的页面的字体变粗,字号加大,页面设置为黑底,方便弱视力孩子学习英语

excel是一直开着么?每次一个新词替换掉之前那个位置的么?

excel不打开,点击potplayer的外挂字幕的单词(鼠标移到这个单词的上方,这个单词四周自动出现一个红框,点击这个带红框的单词),就复制这个单词,并自动打开某个指定的excel文件,并把复制的单词,粘贴到excel的指定的某个工作簿的指定的单元格

相当于是,把百度或有道的,英语单词的解释,及音标,例句,等,部分内容,抓取到excel,重新排版,并且放大字号,加粗字体,方便弱视力儿童学习英语

不知道这种效果满足不满足需求。 这个是点击后直接写到已打开工作簿的指定表的指定单元格。

虽然也可以现打开,但是先打开的情况下速度会比较快。 程序已发到邮箱。

writetoexcel1

1 个赞

根据你这张图

我猜你的需求,就是替英语的听力材料专门制作对应的视频(就是图中蓝白色的字幕),然后也有一份对应的外挂字幕,用来给外部程序 excel 来做交互(就是图中的绿色的字幕)。

这种需求直接用浏览器定制搞不就更好?甚至你不需要弄成视频了,直接由代码生成即时生成图中蓝白色的字幕,直接能在这个字幕上做交互了,甚至你也不需要复制到 excel 里了,用浏览器扩展加点 CSS 直接修改有道词典的页面样式就行了,一个浏览器搞定全部功能。

您的分析,很准确,我的操作,确实是这样的。
您的建议,用浏览器的做法,应该也是可行的,而且,我也在考虑。前几天,崔亮工程师(非常有爱心,再次对崔工表示感谢)写了一个小软件给我,writetoexcel.exe,我使用了,很不错,不过,崔工也建议用浏览器。

excel主要是孩子们眼睛视力不好,容易误操作,从potplayer点击单词,进入excel后,一不小心把excel里面的函数设置,给空格键,删掉了,而且从excel转回potplayer,要操作鼠标点击屏幕底部的potplayer小图标,这个小图标,太小了,不好操作,也容易误点,打开其他软件,因此,希望能有一个浏览器版本的功能实现。

1.在potplayer点字幕上某个英语单词,potplayer就暂停播放视频,同时进入浏览器的辞典放大字号的页面,弱视力孩子能看到英语单词的介绍;2.看完单词介绍页面,弱视力孩子按键盘的空格键,就能自动切换到potplayer,并继续播放视频,空格键就相当于是alt+tab这样的返回potplayer界面这样的功能。

以上就是我们的需求。
能帮我们落实一下吗?红包感谢。

其实操作系统不都是有“无障碍”的功能,提供字体放大, 增加对比度的功能。

不知道你那个卡拉OK效果的视频是怎么制作出来的?应该有个文本格式的字幕/歌词文件吧?不如你上传一个样本来研究一下。

就是srt字幕,请加我qq 199483611,我发视频课件及外挂的srt字幕文件给您

srt 字幕没有卡拉OK代码的,我意思是视频里卡拉OK的效果你是怎么弄出来的。

剪映做的卡拉ok特效

如果没理解错的话,
可能不是要抓字幕,自动监视剪贴板上的新单词不是更简单。

用 aardio 写了自动翻译剪贴板单词,然后在屏幕上放大显示,仅供参考:

import win.ui;
/*DSG{{*/
var winform = win.form(text="自动翻译剪贴板文本";left=-2;right=426;bottom=222;parent=...;topmost=1)

winform.add(
plus={cls="plus";text="中文";left=340;top=284;right=748;bottom=374;bgcolor=16777215;border={color=-16744448;width=1};color=255;font=LOGFONT(h=-48);notify=1;z=1}
)
/*}}*/

import mouse;
import win.clip.viewer;

import web.rest.htmlClient;
var http = web.rest.htmlClient();
var google = http.api("https://translate.google.cn/m?hl=zh-CN");

//翻译函数
var translate = function(q){
	var htmlDoc = google.get(q=q,sl="en",tl="zh-CN");
	if(htmlDoc){
		var resultContainer = htmlDoc.queryEle({"class":"result-container"})
		if(resultContainer){
			return resultContainer.innerText();
		}
	}	
}

var viewer = win.clip.viewer(winform);
viewer.onDrawClipboard=function(){
	var str = win.clip.read();	
	if(string.match(str,"^[a-zA-Z]+$")){
		
		var str = translate(str);
		if(#str){
			//显示翻译结果
			winform.plus.text = str;
			
			var x,y = mouse.getPos();
			winform.plus.setPos(x,y,,,-1/*_HWND_TOPMOST*/,0x40/*_SWP_SHOWWINDOW*/);		
			return;	
		}
	}
	
	winform.plus.show(false)
}

winform.plus.orphanWindow();
winform.plus.show(false)

//点击关闭
winform.plus.onMouseClick = function(wParam,lParam){
    winform.plus.show(false)
}

winform.show(); 
win.loopMessage();

收到,谢谢,我测试一下

1.在potplayer点字幕上某个英语单词,potplayer就暂停播放视频,同时进入浏览器的辞典放大字号的页面,弱视力孩子能看到英语单词的介绍,2.看完单词介绍页面,弱视力孩子按键盘的空格键,就能自动切换到potplayer,并继续播放视频,空格键就相当于是alt+tab这样的返回potplayer界面这样的功能

这个切换回potplayer的设置,能否不用鼠标点x,关闭页面,而是点击电脑键盘上的空格键,自动关闭页面,返回potplayer,并执行继续播放的集合命令

您这个代码,如何使用,是封装为一个可执行的exe文件,放在d盘根目录,然后在potplayer设置字幕关键词搜索的那个地方,添加这个exe文件的一个执行路径,,就能自动运行了吗?

如果我想实现,单词抓取,音标,词性及释义,例句、例句的音标及例句的翻译,短语及词根词缀的思维导图功能,这个能弄吗?

盼复,谢谢

1、我写的那个不用任何设置,只要复制单词到剪贴板(点一下字幕) —— 就会自动翻译并弹出结果,关闭只要点一下翻译结果就可以,不用按其他键。

2、如果你想走启动参数,可能是不行的,potplayer 里似乎只能指定系统浏览器。所以更好的方法是采用我前面说的「监视剪贴板」。

3、你想弹出浏览器,然后按空格关闭、或者抓网页内容等等 …… 你需要的可能是嵌入浏览器控件,你自己的控件你才能更方便的抓取、修改页面内容,拦截快捷键。

aardio 里有很多这种例子:

不过你的需求似乎比做一个翻译网站还复杂,你可能需要一个程序员。

另外,不一定要抓翻译网站,其实这种很麻烦,你就算一切都写好了,翻译网站常常改版 —— 你的程序很可能写完没多久就失效了。

更好的方法是找一些网上开放的翻译数据库,自己做本地翻译。

————————————————————
以上仅供参考,用其他编程语言当然也可以这样做。

之前编写的 vbs 运行出错可能与你的 Windows 有关。

看了下你的需求,如 26 楼 muzuiget 所说可以考虑直接改造查词结果网页,使用脚本修改网页背景、文字颜色等。
尝试编写了一个油猴脚本,结合 Potplayer 目前已知问题如下:

  1. Potplayer 字幕点击时无法自动暂停,需手动暂停后才能点击字幕
  2. 看完查词结果后需要手动关闭浏览器才能返回 Potplayer
  3. 因浏览器、显示器不通可能需要调整或定制 CSS 代码

以下是脚本使用方法:

  1. Chrome 安装 Tampermonkey
  2. 新建一个脚本,脚本代码如下。
    (代码大部分来自搜索结果,如效果不理想,可以尝试手动调整或找人定制 :airplane:
// ==UserScript==
// @name         有道词典高对比度
// @namespace    http://tampermonkey.net/
// @version      0.1
// @description  try to take over the world!
// @author       You
// @match        https://www.youdao.com/w/eng/*
// @icon         data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==
// @grant        GM_addStyle
// ==/UserScript==

(function() {
    'use strict';
    GM_addStyle('body { -moz-transform: scale(1.7, 1.7); zoom: 1.7; zoom: 170%; /* Webkit browsers */}') //浏览器缩放,参考来自:https://stackoverflow.com/questions/21668635/how-do-i-zoom-out-a-whole-website-using-jquery-or-css
    GM_addStyle('* { font-size: 25px !important;line-height:200% !important; }');//调整字体大小及行距
    GM_addStyle('body .keyword {color:red !important;}')//关键字红色
    GM_addStyle('body .contentTitle a {color:red !important;}')//关键字词组红色
    GM_addStyle('body .highLight {background:blue;}')//例句高亮改米色为蓝色
    GM_addStyle('* { color:white !important; }');//所有字体颜色白色
    GM_addStyle('body {background-color:black !important;}')//背景黑色
    GM_addStyle('body .collinsMajorTrans{background:black !important;}')//背景黑色
    GM_addStyle('body #result_navigator,body .c-bsearch,body #c_footer,body .c-topbar-wrapper,body #follow{display: none; }');//去除无用元素、搜索框等内容,参考来自:https://userstyles.org/styles/93158/clean-youdao-dict
    GM_addStyle('body #webTrans ,body #authTrans,body #eTransform,body #wordArticle{ display: none; }');//去除网络释意等,仅保留双语例句
    GM_addStyle('body #scontainer { margin-top: 0px;margin-left:-100px}');//查词结果向上向左靠拢
    GM_addStyle('body .error-typo { background-color:black; }');//错误界面改米色为蓝色
    $(function(){//当网页加载完成
          $(".more").click()//自动点击右侧更多词组短语
    })
    $(document).keydown(function(event){ //监听键盘按下时的事件
        if(event.keyCode== 32){//当按下空格键
            window.close();//关闭网页,可能不会生效
        }
    });

})();
  1. Potplayer 字幕设置中新增项目,项目内容如下:
https://www.youdao.com/w/eng/%%SS

运行效果图:
词典

此外,如想定制化软件,实现自动关闭页面、切换软件等功能,可以尝试直接抓取查词页面结果进行二次排版,这个项目可能对你有帮助:

GitHub - TimothyYe/ydict: Yet another command-line youdao dictionary for geeks!

该项目使用 Go 语言抓取查词结果界面并输出至命令行,包含音标、例句等结果,其中网页抓取代码可在 /lib/query.go 中查看。项目演示图:
ydict

谢谢谢谢
potplayer,可以设置为在播放状态下,鼠标移动到外挂字幕的单词上,单词出现红框,这个红框就代表,这个单词可以被点击,点击后会跳转到指定的网页
我发一张图,您看看
这个地方,设置为总是,那么,不暂停,视频播放的时候,鼠标移到外挂字幕上,单词出现红框,就能点击,然后,被点击之后,potplayer自动暂停,被点击的单词,被复制

你的代码,我这两天试试,非常感谢

我们这个初衷,是给弱视力的孩子学习英语单词的时候,能看到放大字号的一些内容,黑底是为了保护眼睛视力,现在是要放大字号,减少内容,因为百度或有道目前的单词的词条的内容,信息量还是大了,对于小学三年级的学生,实在是太多了,因此想精简一些词条内容展现给弱视力孩子看
另外,我也画了一个三屏的内容结构的草图,如果能看到这样的思维导图,也许对学英语单词有帮助
我发了一个短语的思维导图,两张词根拆解的思维导图,您看看
我想要的这两个思维导图,能否实现
盼复
谢谢

我觉得分成两个需求并分开解决。

  1. 找一个播放器,播放器的字幕能以可选择文本和鼠标交互。
  2. 找一个划词软件,当鼠标选择文本时,弹出该词的词典数据。

这两个需求其实正常人也有的。然后向播放器和划词软件分别添加“高对比度”的显示界面。

  1. 播放器的可选择文本,桌面播放器一般都不好定制,最好还是用浏览器播放(如果视频文件的编码能被浏览器支持的话),用 HTML 渲染字幕,就像普通网页取词一样的了,这可能能实现的了。

  2. 划词软件,这选择就很多了,用桌面程序和浏览器扩展都行,浏览器扩展定制也方便,加一个 CSS 进去就能了。

如果用浏览器扩展的话,甚至连服务器都不用,即不用抓取或者自己写词典页面,直接用 iframe 引用词典网站的网页就行(网页标准,合情合理合法),然后加个自定义 CSS 改掉。词典网站页面可以用手机版的网页,布局会精简很多,适合嵌入。

以下是这两个思路的实现,纯手工调的模拟,没有写代码。