自动调用本地播放器,观看各大在线视频.理论上 You-Get 支持的都能支持.

2017-01-14 10:41:49 +08:00
 xiaocsl

使用帮助 简单演示视频


起因

最开始是因为每次下载视频时都要手动输入各种参数,控制台操作复制粘贴也不方便.

所以想用 C# 拖了个 GUI 直接调用 cmd.exe 参数配置不用管,还可以根据域名来自动选择是否使用代理.

没几行代码的事,立刻准备动手.刚才 VS 里新建项目突然想起来 You-Get 能直接调用播放器,干脆写成浏览器打开视频网址后直接用 VLC 播放算了,不光不用忍受 Flash 这渣渣,~~(还能去广告)~~

思路

HKEY_CLASSES_ROOT
   ygtxxx
      URL Protocol = ""
      shell
         open
            command
               (Default) = "{Path}\YouGet.exe" "%1"

You-Get + VLC 的各种小问题

Tampermonkey

// ==UserScript==
// @name         You-Get Tool
// @namespace    http://tampermonkey.net/
// @version      0.1
// @description  try to take over the world!
// @author       You
// @include      http://www.iqiyi.com/v_*
// @include      http://v.youku.com/v_show/id_*
// @include      http://video.sina.com.cn/*
// @include      http://weibo.com/tv/v/*
// @include      http://tv.sohu.com/*html*
// @include      http://www.tudou.com/*html*
// @grant        none
// @require      https://cdn.staticfile.org/jquery/3.1.1/jquery.min.js
// ==/UserScript==

(function() {
    'use strict';
    var openUrl = window.location.toString();
    //取 Url 参数
    function getUrlParam(name) {
        var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)");
        var r = window.location.search.substr(1).match(reg);
        if (r != null) return unescape(r[2]); return null;
    }
    //微博视频需转换 Url 格式
    if(openUrl.indexOf("/weibo.com/tv/v") != -1){
        var tempFid = getUrlParam("fid");
        if(tempFid == null){
            return;
        }
        openUrl = "http://video.weibo.com/show?fid=" + tempFid;
    }
    //移除页面中的 flash 元素
    $("#flash,#player,#myflashBox,#playerRoom").remove();
    //请求应用程序
    window.location.href = "ygtxxx:sendmsg?url=" + openUrl;
    //关闭页面
    setTimeout("window.close()",100);
})();

PS

所有的算下来没几行代码,但是效果很给力,各种感谢 @You-Get

很少用 C# ,大部分代码都是搜出来的.各种感谢 @Google

代码很烂,各种感谢 @吃瓜群众

其实我最好奇的是 OS X 平台上为什么没人写一个类似的呢.随便想了下就有好多解决方案.

对 MacBook 来说,收益更大.也希望这个小软件给大家提了个小思路.

自己最常用的播放器是 PotPlayer ,但是 You-Get 调用时传的参数不对人家胃口,分段的视频只能添加第一段到播放列表.有能力的可以自己改一下 You-Get 哈.

斗鱼等直播平台也完全没问题,需要的自己在脚本里匹配网址即可

本来 exe 只有 10kb 左右,添了俩图标变好大,而且自己不会删好尴尬...

8408 次点击
所在节点    分享创造
21 条回复
shoaly
2017-01-14 11:04:24 +08:00
http://oss.1024it.cn/section1/20170114/png/ce9c53676bbaa77c6bf8042dd911caf9.png
这种是我自用的, 没做楼主那么复杂, c#那个 form 只响应 ctrl+v 和 直接拖拽 url 的事件, 然后调用 you-get..
所以比楼主的多一步拖拽, 不用点进详情页面那一下 :)
shoaly
2017-01-14 11:08:51 +08:00
目前 you-get 看视频有 2 个问题
1 youku 那边 6 分钟就会拆出来一段, 所以我看一些美剧长短的片子的时候, 经常播放列表到了 第 3 4 个的时候就会中断
2 即便是短的视频, 每次切换播放列表的时候会卡那么 1 2 秒(根据网速而定), 这地方要是能自动缓存下一个就好了
xiaocsl
2017-01-14 11:08:55 +08:00
@shoaly 稍微改一下脚本,也完全可以不进入详情页.操作更隐式.都有优缺点哈.
ashfinal
2017-01-14 13:08:49 +08:00
macOS 上不几行就可以撸个 workflow ,不过我调的 youtube-dl , you-get 问题是不会自动分段组合。
使用时直接按 cmd+u ,回车了事了。自己在用,没发出来。
czmecho
2017-01-14 13:12:27 +08:00
有意思,鉴于优酷作为国内几乎是体验最垃圾的视频网站,用这方法确实不错。
JackBlack2006
2017-01-14 13:17:19 +08:00
@xiaocsl 我用的这个方法 http://www.jianshu.com/p/a4dddbd39d4d?nomobile=yes 不过不知道 Chrome 系能不能用,也许楼主的可以

@ashfinal 能不能分享 workflow 看看, open with 在 OS X 下面只能支持.app , automator 我也没成功过
xiaocsl
2017-01-14 13:37:10 +08:00
@JackBlack2006 更简洁的办法哈.看了下发现自己还有个逗逼的地方,哈哈.好尴尬.不过我这个扩展性更高哈 >_<|||
JackBlack2006
2017-01-14 13:40:54 +08:00
@xiaocsl 我看了代码和演示视频,很不错,但是在哪儿可以自己改成 mpv 呢?
leafleave
2017-01-14 13:44:49 +08:00
同常用 potplayer ,但小白不会改-_-||,养肥了再用
Haiwx
2017-01-14 13:58:59 +08:00
OpenWith +1
xiaocsl
2017-01-14 14:53:48 +08:00
zhangfei
2017-01-15 19:23:05 +08:00
@shoaly 如果是 mpv 的话,可以加参数
you-get -p "mpv --cache-seek-min=300 --merge-files" http://www.acfun.cn/v/ac3262317
这样会同时下载所有分段,播放下一个分段时不会卡一下
nidhogger
2017-01-17 19:22:00 +08:00
win10 64bit chrome ,打开页面一闪而过,无法调出 vlc,请问通常是什么问题?
单独用 you-get 可以调用 vlc 播放 youku 视频。
nidhogger
2017-01-17 22:10:42 +08:00
@shoaly 可否共享一下,一直想找类似的护理,没有找到过
xiaocsl
2017-01-19 00:21:04 +08:00
@nidhogger 注释掉 Tampermonkey 脚本里的最后一行
setTimeout("window.close()",100);
然后再执行,弹出是否打开软件时.勾选记录.之后应该就正常了.就可以取消掉最后一行的注释了.

另外 vlc 的环境变量记得自己添加.
ixinshang
2017-01-20 12:00:03 +08:00
-x 无法使用袋里下载油管视频 现在在外面,没法详细说😓
lantianqiren
2017-07-11 19:30:23 +08:00
@xiaocsl 大神你好,最近也在折腾这个调用本地播放器,
您的软件打开后,写入注册表,我点写入毫无反应,

我按照步骤,点开网页视频,你那个软件有提示,但是仍然无法调用出 VLC 播放器,
但是单独用 youget 是可以用 VLC 播放的
是不是因为注册表没写入进去的原因?有手工添加进去注册表的方法么?
xiaocsl
2017-07-11 19:47:55 +08:00
lantianqiren
2017-07-11 19:48:50 +08:00
github.com 在您上面留言啦
lantianqiren
2017-07-11 19:59:52 +08:00
@xiaocsl 很尴尬,本人小白,折腾好几天了,没弄好
1.能帮忙改一下 PotPlayer 然后打包成 exe 么?

还有你那个写入注册表的工具 我点写入注册表 没反应!各种折腾还是没反应!
请问有手动导入的方法么?

就是最后一步调不出播放器来

http://i2.kiimg.com/1949/34f810da4edb7725.png

一开始这个工具也没显示的

我把 Tampermonkey 脚本里最后一行 setTimeout ( “ window.close ()”,100 ); 去掉了

就可以弹出来了,只是会出来一个什么不能为空的提示 倒是不到影响点


还有爱奇艺 貌似失效了 不会弹出窗口了

--
虽然对您来说是很简单的代码,可是对很多人来说是很需要的,麻烦您如果有时间可以更新一下额

谢谢了

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/334525

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX