自动调用本地播放器,观看各大在线视频.理论上 You-Get 支持的都能支持. - V2EX
爱意满满的作品展示区。
xiaocsl

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

  •  1
     
  •   xiaocsl Jan 14, 2017 8991 views
    This topic created in 3410 days ago, the information mentioned may be changed or developed.

    使用帮助 简单演示视频

    • 下载 You-Get @You-Get Releases

    • 下载 VLC @videolan.org

    • 下载 exe()>_<|||) @GitHub 并将此 exe 放入 You-Get 根目录

    • 首次打开需点击 写入注册表 按钮

    • 安装 Tampermonkey 并添加脚本


    • JS 代码很简单,根据自己需求添加待匹配网站
    • 推荐设置 VLC 仅允许运行一个实例播放并退出
    • 我用的是 VS 2010

    起因

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

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

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

    思路

    • C# 主要就通过调用 CMD 来执行 You-Get
    • 在注册表里添加一个 URI Scheme ,注册表结构如下:
    HKEY_CLASSES_ROOT ygtxxx URL Protocol = "" shell open command (Default) = "{Path}\YouGet.exe" "%1" 
    • 通过 Tampermonkey 脚本,来匹配在线播放链接,并发出请求.

    You-Get + VLC 的各种小问题

    • 优酷视频分割太多
    • 爱奇艺不显示时间
    • 搜狐 TV 无法快进
    • 部分网站缓冲速度太慢
    • 等等.........

    Tampermonkey

    • 只包含了几个自己常用的网站,可自行添加,只要 You-Get 支持即可.
    • 实际上就一行代码,前面的只是为了转换成 You-Get 支持的微博视频地址.
    // ==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 左右,添了俩图标变好大,而且自己不会删好尴尬...

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

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

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

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

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

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

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

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

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

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


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

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

    谢谢了
    lantianqiren
        21
    lantianqiren  
       Jul 11, 2017
    @xiaocsl 还写了点文字发到您的 github 上了,有时间您看看吧,
    About     Help     Advertise     Blog     API     FAQ     Solana     890 Online   Highest 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 47ms UTC 22:29 PVG 06:29 LAX 15:29 JFK 18:29
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86