• 玩具项目 .开门大吉忙忙碌碌的第一天


    开发者笔记

    hBuilder 连接手机模拟器异常

    cd D:Program FilesNoxin 手机模拟器工作目录

    sheel>> adb connect 127.0.0.1:62001 
    sheel>> adb devices

    e:
    cd E:worksoftwareHBuilder oolsadbs 工作目录

    sheel >> adb connect 127.0.0.1:62001
    sheel >> adb devices

    项目 Chopper 意为乔巴 (海贼王的宠物)

    mongo 后台启动和开机启动操作

    mongodb设置后台运行

    我们要在mongodb下面创建data目录和logs目录,用于存放data和logs。

    设置好了之后,我们通常通过

    mongod --dbpath /usr/local/mongo/data
    

    让mongodb启动。

    但是我们关闭shell,mongodb就停止运行了。如果想在后台运行,启动时只需添加 --fork函数即可。可以在日志路径后面添加--logappend,防止日志被删除。

    代码如下:

    mongod --fork --dbpath=/usr/local/mongodb/data --logpath=/usr/local/mongodb/logs/mongodb2.log --logappend

    这样,你关闭shell,在打开shell,照常可以允许mongo了!

    mongodb设置开机启动。

    当我们把服务器关闭,重启之后,发现mongodb又停止了,有没有开机就启动的方法呢?我们把上面代码放到/etc/rc.local,中,就可以了。

    具体操作步骤:

    vim  /etc/rc.local
    

    添加上面启动代码:

    /usr/local/mongodb/bin/mongod  --fork --dbpath=/usr/local/mongodb/data  --logpath=/usr/local/mongodb/logs/mongodb2.log  --logappend
    

    下次重启就可以直接运行mongodb了!

    采集数据 date_collection.py

    import os
    import time
    import requests
    
    from uuid import uuid4
    from setting import IMAGE_PATH
    from setting import MUSIC_PATH
    from setting import MONGO_DB
    
    base_url = 'http://audio.xmcdn.com/'
    url = 'http://m.ximalaya.com/m-revision/page/track/queryTrackPage/%s'
    
    content_list = ['42666925', '42472932', '48271866', '43226220', '48703517', '50026238']
    # 这是在喜某拉某上采集的几个地址 半自动化
    
    
    def deal_data(news):
        detail_content = []
    
        for item in news:
            audio_id = item
    
            res = requests.get(url % audio_id)
    
            res_dict = res.json().get("data").get("trackDetailInfo").get("trackInfo")
            # print('res_dict', res_dict)
    
            cover_url = base_url + res_dict.get('cover')
            audio_url = res_dict.get('playPath')
            audio = requests.get(audio_url)
            cover = requests.get(cover_url)
    
            filename = uuid4()
            image = os.path.join(IMAGE_PATH, f'{filename}.jpg')
            music = os.path.join(MUSIC_PATH, f'{filename}.mp3')
    
            with open(music, 'wb') as f1:
                f1.write(audio.content)
    
            with open(image, 'wb') as f2:
                f2.write(cover.content)
    
            music_info = {
                "title": res_dict.get("title"),
                "intro": res_dict.get("intro"),
                "cover": f"{filename}.jpg",
                "audio": f"{filename}.mp3",
            }
    
            detail_content.append(music_info)
            time.sleep(1)
        print(detail_content)
        MONGO_DB.content.insert_many(detail_content)
        # 写入mongodb数据库
    
    
    deal_data(content_list)
    
    # 数据大致是这个样子
    [{
    	'title': '008-狐狸和狼的故事',
    	'intro': '',
    	'cover': '242ece4b-d42a-4cbb-a8a0-6c4c648145c9.jpg',
    	'audio': '242ece4b-d42a-4cbb-a8a0-6c4c648145c9.mp3'
    }, 
    {
    	'title': '005-神灯',
    	'intro': '',
    	'cover': '6cb4d654-9d8f-4e76-8e3b-4a79ad10071c.jpg',
    	'audio': '6cb4d654-9d8f-4e76-8e3b-4a79ad10071c.mp3'
    }, 
    {
    	'title': '020-蠢汉、驴子与骗子的故事',
    	'intro': '',
    	'cover': '7a846087-cb46-49d4-ad82-9d9881707a64.jpg',
    	'audio': '7a846087-cb46-49d4-ad82-9d9881707a64.mp3'
    }, 
    {
    	'title': '012-三个苹果的故事',
    	'intro': '',
    	'cover': '160fe95b-b00e-4b6c-9c13-e84b525b2649.jpg',
    	'audio': '160fe95b-b00e-4b6c-9c13-e84b525b2649.mp3'
    }, 
    {
    	'title': '026-国王和神医',
    	'intro': '',
    	'cover': '97253b33-650d-44e6-afb6-b3a5499df354.jpg',
    	'audio': '97253b33-650d-44e6-afb6-b3a5499df354.mp3'
    }, 
    {
    	'title': '042-狐狸和野驴的故事',
    	'intro': '',
    	'cover': 'b3f8d7cf-fe7e-4c7c-8ff6-a18204f19249.jpg',
    	'audio': 'b3f8d7cf-fe7e-4c7c-8ff6-a18204f19249.mp3'
    }]
    
    

    Server 中的content.py

    from flask import Blueprint, jsonify
    from setting import MONGO_DB, RET
    
    content = Blueprint('content', __name__)
    
    
    @content.route('/content_list', methods=["POST"])
    def content_list():
        res = list(MONGO_DB.content.find({}))
    
        for index, item in enumerate(res):
            res[index]['_id'] = str(item.get('_ID'))
    
        RET['code'] = 0
        RET['msg'] = '查询幼教内容'
        RET['data'] = res
        print('RET', RET)
    
        return jsonify(RET)
    
    

    Server 中的get_set_anything.py

    import os
    from flask import Blueprint, send_file
    from setting import MUSIC_PATH, IMAGE_PATH
    
    gsa = Blueprint('gsa', __name__)
    
    
    @gsa.route('/images/<filename>')
    def get_image(filename):
        file_path = os.path.join(IMAGE_PATH, filename)
        return send_file(file_path)
    
    
    @gsa.route('/music/<filename>')
    def get_music(filename):
        file_path = os.path.join(MUSIC_PATH, filename)
        return send_file(file_path)
    
    

    chopper_app.py

    from flask import Flask, render_template
    from Server import content
    from Server import get_set_anything
    
    app = Flask(__name__)
    
    app.register_blueprint(content.content)
    app.register_blueprint(get_set_anything.gsa)
    
    
    @app.route('/')
    def toy():
        return render_template('toy.html')
    
    
    if __name__ == '__main__':
        app.run('0.0.0.0', 9527, debug=True)
    
    

    玩具页面 templates/toy.html

    <!DOCTYPE html>
    <html lang="en">
    <head>
      <meta charset="UTF-8">
      <title>Title</title>
    </head>
    <body>
    <audio autoplay controls id="player"></audio>
    </body>
    
    <script type="application/javascript">
      let  ws = new WebSocket('ws://192.168.13.204:3721/toy/toy123');
      ws.onmessage = function (data) {
          console.log(data.data)
          let msg = JSON.parse(data.data);
          document.getElementById('player').src='http://192.168.13.204:9527/music/' +msg.music;
    
      }
    
    </script>
    </html>
    

    websocket代码 chopper_ws.py

    import json
    from flask import Flask, request
    from geventwebsocket.handler import WebSocketHandler
    from gevent.pywsgi import WSGIServer
    from geventwebsocket.websocket import WebSocket
    
    ws_app = Flask(__name__)
    
    user_socket_dict = {}
    
    
    @ws_app.route('/app/<app_id>')
    def app(app_id):
        user_socket = request.environ.get('wsgi.websocket')  # type:WebSocket
        if user_socket:
            user_socket_dict[app_id] = user_socket
    
        print('user_socket_dict', user_socket_dict)
        while True:
            user_msg = user_socket.receive()
            print('user_msg', user_msg)
            msg_dict = json.loads(user_msg)
            toy_socket = user_socket_dict.get(msg_dict.get('to_user'))
            toy_socket.send(user_msg)
    
    
    @ws_app.route("/toy/<toy_id>")
    def toy(toy_id):
        user_socket = request.environ.get("wsgi.websocket")  # type: WebSocket
        if user_socket:
            user_socket_dict[toy_id] = user_socket
        print('user_socket_dict', user_socket_dict)
        while 1:
            user_msg = user_socket.receive()
            print('user_msg', user_msg)
    
    
    if __name__ == '__main__':
        http_server = WSGIServer(('0.0.0.0', 3721), ws_app, handler_class=WebSocketHandler)
        http_server.serve_forever()
    
    

    ui页面

    index.html

    <!DOCTYPE html>
    <html>
    <head>
        <meta charset="utf-8">
        <meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no" />
        <title></title>
        <script src="js/mui.min.js"></script>
        <link href="css/mui.min.css" rel="stylesheet"/>
       
    </head>
    <body>
    	
    </body>
    	 <script type="text/javascript" charset="utf-8">
    	 // 创建子页面
          	mui.init({
          		subpages:[{
          			url:'main.html',
          			id:'main.html',
          			styles:{
          			top:'0px', // mui 标题栏默认高度为45px;
          			bottom:'50px' // 默认为0px, 可选项;
        
          					}     		
          		}]
          	});
          	
          	var ws = new WebSocket('ws://192.168.13.204:3721/app/app01');
          	document.addEventListener('send_music',function(data){
          		var send_str = data.detail // {to_user:'toy123', music:Sdata.audio}
          		ws.send(JSON.stringify(send_str));
          		
          	})
        </script>
    </html>
    

    main.html

    <!doctype html>
    <html lang="en">
    <head>
        <meta charset="UTF-8" />
        <title>Document</title>
        <meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no" />
        <link rel="stylesheet" type="text/css" href="css/mui.css"/>
    </head>
    <body>
      
      
    
    	<ul class="mui-table-view mui-grid-view mui-grid-9">
    	<li class="mui-table-view-cell mui-media mui-col-xs-4 mui-col-sm-4">
    	    <a href="#">
    	        <span class="mui-icon mui-icon-home"></span>
    	        <div class="mui-media-body">Home</div>
    	    </a>
    	</li>
    	<li class="mui-table-view-cell mui-media mui-col-xs-4 mui-col-sm-">
    	    <a href="#">
    	        <span class="mui-icon mui-icon-email"><span class="mui-badge mui-badge-red">5</span></span>
    	        <div class="mui-media-body">Email</div>
    	    </a>
    	</li>
    	<li class="mui-table-view-cell mui-media mui-col-xs-4 mui-col-sm-4">
    	    <a href="#">
    	        <span class="mui-icon mui-icon-chatbubble"></span>
    	        <div class="mui-media-body">Chat</div>
    	    </a>
    	</li>
    	<li class="mui-table-view-cell mui-media mui-col-xs-4 mui-col-sm-4">
    	    <a href="#">
    	        <span class="mui-icon mui-icon-location"></span>
    	        <div class="mui-media-body">Location</div>
    	    </a>
    	</li>
    	<li class="mui-table-view-cell mui-media mui-col-xs-4 mui-col-sm-4">
    	    <a href="#">
    	        <span class="mui-icon mui-icon-search"></span>
    	        <div class="mui-media-body">Search</div>
    	    </a>
    	</li>
    	<li class="mui-table-view-cell mui-media mui-col-xs-4 mui-col-sm-4">
    	    <a href="#">
    	        <span class="mui-icon mui-icon-phone"></span>
    	        <div class="mui-media-body">Phone</div>
    	    </a>
    	</li>
    	    </ul>
    	
    	<ul class="mui-table-view" id="content_list">
            <li class="mui-table-view-cell mui-media">
                <a href="javascript:;">
                    <img class="mui-media-object mui-pull-left" src="http://placehold.it/40x30">
                    <div class="mui-media-body">
                        幸福
                        <p class="mui-ellipsis">能和心爱的人一起睡觉,是件幸福的事情;可是,打呼噜怎么办?</p>
                    </div>
                </a>
            </li>
    
        </ul>
      	
    	<nav class="mui-bar mui-bar-tab">
    	    <a class="mui-tab-item mui-active">
    	        <span class="mui-icon mui-icon-home"></span>
    	        <span class="mui-tab-label">首页</span>
    	    </a>
    	    <a class="mui-tab-item">
    	        <span class="mui-icon mui-icon-phone"></span>
    	        <span class="mui-tab-label">电话</span>
    	    </a>
    	    <a class="mui-tab-item">
    	        <span class="mui-icon mui-icon-email"></span>
    	        <span class="mui-tab-label">邮件</span>
    	    </a>
    	    <a class="mui-tab-item">
    	        <span class="mui-icon mui-icon-gear"></span>
    	        <span class="mui-tab-label">设置</span>
    	    </a>
    	</nav>
    </body>
    	<script src="js/mui.js" type="text/javascript" charset="utf-8"></script>
        <script type="text/javascript">
        mui.init();
        
        mui.plusReady(function(){
        	mui.post(window.server + '/content_list',{
        			
        		},function(data){
        			console.log(JSON.stringify(data))
        			for (var i = 0; i < data.data.length; i++) {
            			create_item(data.data[i]);
            		}
        		},'json'
        	);
        })
        
        function create_item(content){         
              var li = document.createElement("li");
              li.className ="mui-table-view-cell mui-media";
              var a = document.createElement("a");
              a.onclick = function(){
              		mui.openWindow({
              			url:"player.html",
              			id:"player.html",
              			extras:content
              		})
              }
              var img = document.createElement("img");
              img.className ="mui-media-object mui-pull-left";
              img.src = window.server_image + content.cover;
              var div = document.createElement("div");
              div.className="mui-media-body";
              div.innerText = content.title;
              var p = document.createElement("p");
              p.className="mui-ellipsis";
              p.innerText=content.intro; 
              
              li.appendChild(a);
              a.appendChild(img);
              a.appendChild(div);
              div.appendChild(p);
              
              document.getElementById("content_list").appendChild(li);
        }
        </script>
    </html>
    
    

    player.html 播放器页面

    <!doctype html>
    <html lang="en">
    <head>
        <meta charset="UTF-8" />
        <title>Document</title>
        <meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no" />
        <link rel="stylesheet" type="text/css" href="css/mui.css"/>
    </head>
    <body>
        <header class="mui-bar mui-bar-nav">
            <h1 class="mui-title" id='title'>正在播放xxxxxx</h1>
        </header>
       	
       	<div class="mui-content">
       	     <div class="mui-row" style="text-align: center; margin-top: 10px;" >
                <img src="" id="cover" style="height: 250px; 250px; border-radius: 50%;"/>
            </div>
            
            <button type="button" id="pause" class="mui-btn mui-btn-yellow mui-btn-block">暂停</button>
            <button type="button" id="resume" class="mui-btn mui-btn-green mui-btn-block">继续</button>
            <button type="button" id="stop" class="mui-btn mui-btn-red mui-btn-block">停止</button>
            <button type="button" id="send" class="mui-btn mui-btn-blue mui-btn-block">发送给玩具</button>
       	</div>
       	
    </body>
     	<script src="js/mui.js" type="text/javascript" charset="utf-8"></script>
        <script type="text/javascript">
        mui.init();
        var Sdata = null;
        var myplayer = null;
        mui.plusReady(function () {
            Sdata = plus.webview.currentWebview();
            document.getElementById('title').innerText = '正在播放' + Sdata.title;
            document.getElementById('cover').src  = window.server_image + Sdata.cover;
            myplayer = plus.audio.createPlayer(window.server_music + Sdata.audio);
            myplayer.play();
        })
        
         document.getElementById('pause').addEventListener('tap',function () {
              myplayer.pause();  
        })
        
        document.getElementById('resume').addEventListener('tap',function () {
              myplayer.resume();  
        })
        
        document.getElementById('stop').addEventListener('tap',function () {
                myplayer.stop();
        })
        
       document.getElementById('send').addEventListener('tap',function () {
     		var index = plus.webview.getWebviewById('HBuilder');
     		mui.fire(index,'send_music',{to_user:'toy123', music: Sdata.audio})
       })
        </script>
    </html>
    
    

    nui.js 增加的代码

    window.server = 'http://192.168.13.204:9527';
    window.server_image = window.server + "/images/";
    window.server_music = window.server + '/music/';
    
    
  • 相关阅读:
    [hdu 2089]简单数位dp
    [fzu 2271]不改变任意两点最短路至多删的边数
    [bzoj 1143]最长反链二分图最大匹配
    [codeforces gym Matrix God]随机矩阵乘法
    [hdu 2298] 物理推导+二分答案
    url编码有个bug,不能直接用decodeURIComponent,如果遇到前面的$会报错。
    设置cookie的保存时间 下一篇
    js操作获取和设置cookie
    简单使用location.hash的方法 ,怎么做,有什么用? 简单的js路由页面方法。
    三个月之内开发项目最好用第三方库
  • 原文地址:https://www.cnblogs.com/zzy7372/p/10289887.html
Copyright © 2020-2023  润新知