腾讯QQ音乐网页版 音频初始化模块解压混淆js源码
define("js/view/playerBar.js",function(t,e,o){
    var i = t("js/lib/zepto.js"),
        a = t("js/lib/music.js"),
        n = t("js/lib/backbone.js"),
        s = t("js/ui/timeFormat.js"),
        d = n.View.extend({
            el:"#player_bar",
            initialize:function(){
                var t = this;
                    this.listenTo(this.model,"change:playId",this.changeId),
                    this.listenToOnce(this.model,"change:playId",this.showBtn),
                    this.listenTo(this.model,"change:index",this.changeIndex),
                    this.initAudio(),
                    i("#player_bar").tap(function(e){
                        e.stopPropagation(),
                        e.preventDefault();
                        var o=t.model.getSong();
                        return o ? (
                            e.target.className.indexOf("btn_download")>=0
                            ?
                            (t.download(),a.tj.sendClick("song.downloadicon"))
                            :
                            "btn_status"==e.target.id
                            ?
                            (t.togglePlay(),a.tj.sendClick("song.playicon"))
                            :
                            a.router.navigate("player",{trigger:!0}),void 0
                            ) :
                            !1
                    }),
                    i("#player_bar .poster").on("error",function(){
                        this.src="http://imgcache.gtimg.cn/music/mobile/css/img/music_0949f22.png"
                    })
            },
            initAudio:function(){
                var t=this;
                i(this.model.get("audio"))
                .on("play",function(){
                    SPD.pointMark("songload"),
                    i("#btn_status").attr("class","btn_pause"),
                    i(".cover_pic").removeClass("pause"),
                    t.model.set("status",1),
                    i("video")[0]&&i("video")[0].pause()
                })
                .on("pause",function(){
                    i("#btn_status").attr("class","btn_play"),
                    i(".cover_pic").addClass("pause"),
                    t.model.set("status",0)
                })
                .on("timeupdate",function(){
                    var e=t.model.get("audio").currentTime,
                        o=t.model.get("audio").duration;
                        i(".has_play").css({width:100*(e/o)+"%"}),
                        i("#current_time").text(s(e));
                    try{
                        var a=t.model.get("audio").buffered.end(0);
                        i(".has_load").css({width:100*(a/o)+"%"})
                    }
                    catch(n){}
                })
                .on("ended",function(){
                    var e=t.model.get("index");
                    e++,
                    e>=t.model.get("playList").length&&(e=0),
                    t.model.set("playId",t.model.get("playList").at(e).cid)
                })
                .on("canplay",function(){
                    t.play()
                })
                .on("error",function(t){
                    a.tip("歌曲加载失败 T T 请稍候重试!"),
                    a.tj.sendClick("song.playerror"),
                    console.log(t)
                })
                .on("durationchange",function(){
                    i("#total_time").text(s(t.model.get("audio").duration))
                })
            },
            togglePlay:function(){
                this.model.get("audio").paused?this.play():this.pause()
            },
            showBtn:function(){
                i("#btn_status,#player_bar .btn_download").show()
            },
            changeId:function(){
                var t=this.model.getSong();
                this.model.set("index",this.model.get("playList").indexOf(t)),
                i(".has_play,.has_load").css({width:"0%"});
                var e="http://"+a.audioServer+".stream.qqmusic.qq.com/"+(t.get("songid")||"C100"+t.get("songmid"))+".m4a?fromtag=30";
                this.model.get("audio").src=e,
                0!=this.model.get("audio").readyState&&this.model.get("audio").load();
                var o=t.get("albumid"),
                    n="http://imgcache.qq.com/music/photo/album/"+o%100+"/90_albumpic_"+o+"_0.jpg";
                    i("#player_bar .poster").attr("src",n),
                    i("#player_bar .song").html(t.get("songname")),
                    i("#player_bar .singer").html(t.get("singername")),
                    a.tj.sendClick("song.playtimes")
            },
            play:function(){
                this.model.get("audio").play()
            },
            pause:function(){
                this.model.get("audio").pause()
            },
            stop:function(){
                this.pause()
            },
            speed:function(){
                this.model.get("audio").currentTime+=10
            },
            openSingle:function(){
                new playerBox({model:this.model})
            },
            changeIndex:function(){
                this.model.set("playId",this.model.get("playList").at(this.model.get("index")).cid)
            },
            download:function(){
                var e=this,
                    o=t("js/ui/dialog.js");
                    o.opendDialog(
                        "提示",
                        "网页版暂不支持下载,你可以在手机客户端免费下载此歌曲",
                        "在手机QQ音乐中下载",
                        function(){
                            var i=t("js/ui/openAppSong.js");
                            i(e.model.getSong()),
                            o.hide()
                        }
                    )
            }
        });
    o.exports=d
});/*  |xGv00|c0a42f805c79489f9535548049f674e3 */
腾讯QQ音乐网页版 音频初始化模块解压混淆js源码的更多相关文章
- 实现类似 QQ音乐网页版 的单页面总结
		
最近需要对创业团队的网站进行改版,而我负责前端设计和实现. 下面是一些总结与体会: 当设计完成之前,我就跟和我配合的Java 后台说用iframe实现,结果说麻烦不肯,到最后突然对我说还是用ifram ...
 - 一步步实现windows版ijkplayer系列文章之三——Ijkplayer播放器源码分析之音视频输出——音频篇
		
一步步实现windows版ijkplayer系列文章之一--Windows10平台编译ffmpeg 4.0.2,生成ffplay 一步步实现windows版ijkplayer系列文章之二--Ijkpl ...
 - 原创:用python把链接指向的网页直接生成图片的http服务及网站(含源码及思想)
		
原创:用python把链接指向的网页直接生成图片的http服务及网站(含源码及思想) 总体思想: 希望让调用方通过 http调用传入一个需要生成图片的网页链接生成一个网页的图片并返回图片链接 ...
 - 微信小程序版博客——开发汇总总结(附源码)
		
花了点时间陆陆续续,拼拼凑凑将我的小程序版博客搭建完了,这里做个简单的分享和总结. 整体效果 对于博客来说功能页面不是很多,且有些限制于后端服务(基于ghost博客提供的服务),相关样式可以参考截图或 ...
 - HTML5网页录音和压缩,边猜边做..(附源码)
		
宣传一下自己的qq群: (暗号:C#交流) 欢迎喜欢C#,热爱C#,正在学习C#,准备学习C#的朋友来这里互相学习交流,共同进步 群刚建,人不多,但是都是真正热爱C#的 我也是热爱C#的 希望大家可以 ...
 - iOS电商常见动画与布局、微信悬浮窗、音乐播放器、歌词解析、拖动视图等源码
		
iOS精选源码 MXScroll 介绍 混合使用UIScrollView ios 电商demo(实现各种常见动画效果和页面布局) 一行代码集成微信悬浮窗 可拖动,大小的视图,可放置在屏幕边缘. 在使用 ...
 - Vue.js源码解析-Vue初始化流程
		
目录 前言 1. 初始化流程概述图.代码流程图 1.1 初始化流程概述 1.2 初始化代码执行流程图 2. 初始化相关代码分析 2.1 initGlobalAPI(Vue) 初始化Vue的全局静态AP ...
 - 从网易云音乐网页版无登陆下载MP3的办法
		
用chrome浏览器就能办到 现在,你还为下载不到满意的音乐而苦恼吗?
 - 看看腾讯是怎么做产品设计分析的 - 腾讯QQ音乐业务产品规划
 
随机推荐
- compass安装使用960 Grid System
			
960 Grid System 是一个CSS的页面布局框架 demo: http://960.gs/demo.html 前提:安装Ruby .NodeJS 步骤1:在命令行下安装css插件: gem ...
 - JSP_include指令和<jsp:include>
			
包括三个文件:jsp_include.jsp, static.html, two.jsp 周边环境:tomcat7.0. myeclipse10 1.jsp_include.jsp <%@ pa ...
 - [ExtJS5学习笔记]第22 Extjs5正在使用beforeLabelTpl添加所需的配置选项标注星号标记
			
本文地址:http://blog.csdn.net/sushengmiyan/article/details/39395753 官方样例:http://docs.sencha.com/extjs/5. ...
 - jQuery、Ajax分页
			
1.效果预览 2.HTML代码 <div class="row"> <div class="col-lg-12 col-sm-12 col-xs-12 ...
 - .NET单元测试艺术(2) - 第一个单元测试
			
List 2.1 使用[SetUp]和[TearDown]特性 using System; using System.Collections.Generic; using System.Linq; u ...
 - UVA 11584
			
Problem H: Partitioning by Palindromes We say a sequence of characters is a palindrome if it is the ...
 - Content://sms
			
package com.example.sms; import android.app.Activity; import android.app.Notification; import androi ...
 - Swift的74标准功能
			
Swift中共同拥有74个内建函数,可是在Swift官方文档("The Swift Programming Language")中仅仅记录了7中.剩下的67个都没有记录. 本文将列 ...
 - Linux IPC(Inter-Process Communication,进程间通信)之管道学习
			
1.标准流管道 管道操作支持文件流模式,用来创建链接还有一个进程的管道,通过函数popen和pclose popen的详细介绍在本blog:Linux 多进程学习中有具体介绍 2.无名管道(PIPE) ...
 - Android 4.4 KitKat NotificationManagerService使用具体解释与原理分析(一)__使用具体解释
			
概况 Android在4.3的版本号中(即API 18)增加了NotificationListenerService,依据SDK的描写叙述(AndroidDeveloper)能够知道,当系统收到新的通 ...