• 前端


    错误1 发送没有反应,觉得是地址不对,老师上课有改,但是找不到。

    查了以前的是mui.post处,但是是window.serv,本以为是系统自动检测,

    但是也不可能是监测到9527吧,

    从网上https://www.cnblogs.com/wen-kang/p/10778812.html博客里找到:

    为了避免hbuilder中的js频繁的给后端发送AJAX,更换ip,可以将ip设置为全部变量,在引用文件的js文件添加代码如下:

    window.serv="http://192.168.1.114:9527";
    
    extras:{
          .....//自定义扩展参数,可以用来处理页面间传值
        },
    

    前端的音乐播放的哪里的资源?

    数据库里没有给传过去MP3!

    <button type="button" class="mui-btn mui-btn-green mui-btn-block" id="resume">继续</button>
    var Sdata = null;					#通过plus.webview可获取应用界面管理对象。
    Sdata = plus.webview.currentWebview();	#获取当前窗口的WebviewObject对象
     
    document.getElementById("title").innerText = "正在播放       " + Sdata.title;
    ap = plus.audio.createPlayer(window.music_serv + Sdata.music);	# 括号里的‘xx.MP3’从哪里来	‘http://192.168.12.70:9527/get_music/’
    ap.play();
    
    document.getElementById('resume').addEventListener('tap', function() {
    				ap.resume();	
    			});
    

    mui.js 里有配置参数

    window.serv = "http://192.168.12.70:9527";
    window.ws_serv = "ws://192.168.12.70:9527/app/";
    window.image_serv = window.serv + "/get_cover/";
    window.music_serv = window.serv + "/get_music/";	
    

    播放的是 这里的 send_file

    @content_bp.route('/get_music/<filename>',methods=['GET'])
    def get_music(filename):
    
        music_path = os.path.join(MUSIC_PATH, filename)
        return send_file(music_path)	
    

    数据如下:应该是data.DATA data是 auto.login 传过来的数据 fuc(data)

     [{"_id":"5d32b0839c057a77211fad55","cover":"c6b68f04-9a4c-46b6-9560-0bb31c38c7b7.jpg","music":"c6b68f04-9a4c-46b6-9560-0bb31c38c7b7.mp3","title":"新年恰恰","zhuanji":"【一千零一夜】经典儿歌"},..........{"_id":"5d32b0839c057a77211fad68","cover":"17e969d0-6e37-4438-a877-e2240e191984.jpg","music":"17e969d0-6e37-4438-a877-e2240e191984.
    

    stada.music : "music":"c6b68f04-9a4c-46b6-9560-0bb31c38c7b7.mp3"

    sdata的值 plus.webview.currentWebview();?不是等于创建一个窗口吗?

    {"__view_array__":[],"__IDENTITY__":"NWindow","__uuid__":"NWindow91563607904411","__callbacks__":{"back":[null],"menu":[null]},"__callback_id__":"plus41563607905521","id":"player.html","music":"c6b68f04-9a4c-46b6-9560-0bb31c38c7b7.mp3","title":"新年恰恰","cover":"c6b68f04-9a4c-46b6-9560-0bb31c38c7b7.jpg","zhuanji":"【一千零一夜】经典儿歌","_id":"5d32b0839c057a77211fad55"} at player.html:58
    

    访问这个网址,就可以播放音乐,后端开启的状态下。这里面存了send_file的MP3

    http://192.168.12.70:9527/get_music/e87e08f5-28e9-493f-8f5a-15ef02d3abc6.mp3

    所以

    ap = plus.audio.createPlayer(window.music_serv + Sdata.music); 'h://..xx.mp3'

    就可以播放了(没有点击事件,只不过是后端传到网络上的资源

    Sdata 
    console.log('sdata:', Sdata)--->  sdata: at player.html:49  是这个? 
    

    注册

    @user_bp.route("/reg", methods=["POST"])
    def reg():
        user_info = request.form.to_dict()
        print('注册')
        print(user_info)
        user_info["avatar"] = "baba.jpg" if user_info.get("gender") == "2" else "mama.jpg"
        user_info["bind_toys"] = []
        user_info["friend_list"] = []
    
        MDB.Users.insert_one(user_info)
        return jsonify({"CODE":0,"MSG":"注册成功","DATA":{}})
    

    登录

    @user_bp.route("/login", methods=["POST"])
    def login():
        print('登录')
        print(request.form, type(request.form))
        user_info = request.form.to_dict()
        print(user_info.get('_id'))
        print(user_info, type(user_info))
        user_info_dict = MDB.Users.find_one(user_info)
    
        user_info_dict["_id"] = str(user_info_dict.get("_id"))
        print('登录')
    
        RET["CODE"] = 0
        RET["MSG"] = f"欢迎{user_info_dict.get('nickname')}登录"
        RET["DATA"] = user_info_dict
    
        return jsonify(RET)
    

    自动登录

    @user_bp.route("/auto_login",methods=["POST"])
    def auto_login():
        print('自动登录')
        user_info = request.form.to_dict()
        print('原来', user_info.get('_id'), type(user_info.get('_id')))  # 原来 5d32b21dbd7107c6ea54c890 <class 'str'>
        user_info["_id"] = ObjectId(user_info.get("_id"))
        print('之后', user_info['_id'], type(user_info['_id']))   # 之后 5d32b21dbd7107c6ea54c890 <class 'bson.objectid.ObjectId'>
        user_info_dict = MDB.Users.find_one(user_info)  # 字符串怎么不行呢?  因为是_id ,之前的是自动生成的,这一次是给他值 
                                                # 默认格式是 '_id' : ObjectId('5d32b21dbd7107c6ea54c890') 而不是 5d32b21dbd7107c6ea54c890 的格式
        print('自动登录')
    
        user_info_dict["_id"] = str(user_info_dict.get("_id"))
    
        RET["CODE"] = 0
        RET["MSG"] = f"欢迎{user_info_dict.get('nickname')}登录"
        RET["DATA"] = user_info_dict
        print(RET)
        return jsonify(RET)
    

    Barcode : 如果存在多个相同标识的扫码识别控件对象,则返回第一个查找到的扫码识别控件对象。 如果不存在指定标识的扫码识别控件对象,则返回null。

    content的内容

    import os
    
    from flask import Blueprint, jsonify ,send_file
    from setting import MDB,COVER_PATH,MUSIC_PATH
    
    content_bp = Blueprint('content_bp', __name__)
    
    @content_bp.route('/content_list', methods= ['POST', 'GET'])
    def content_list():
        content = list(MDB.Content.find({}))
    
        # 代码簇  一个逻辑一个簇  方便阅读  代码簇放的越合理 越专业
        for index, item in enumerate(content):
            content[index]['_id'] = str(item.get('_id'))
    
        return jsonify(content)
    
    @content_bp.route('/get_cover/<filename>',methods=['GET'])
    def get_cover(filename):
    
        cover_path = os.path.join(COVER_PATH,filename)
        return send_file(cover_path)
    
    @content_bp.route('/get_music/<filename>',methods=['GET'])
    def get_music(filename):
    
        music_path = os.path.join(MUSIC_PATH, filename)
        return send_file(music_path)
    
    

    createqr

    import os
    import requests
    
    from setting import LT_URL, MDB, QRCODE_PATH
    # res = requests.get(LT_URL%('xiao'))
    #
    # with open('aaa.jpg', 'wb') as f :
    #     f.write(res.content)
    
    
    # 创建二维码的条码
    from uuid import uuid4
    import time, hashlib
    device_list = []
    for i in range(5):
        qr_str = hashlib.md5(f'{uuid4()}{time.time()}{uuid4()}'.encode('utf-8')).hexdigest()    # haslib之后短
        print(qr_str)
    
        device_info = {'device_key':qr_str}
        device_list.append(device_info)
    
        res = requests.get(LT_URL%(qr_str))
    
        qrfile_path = os.path.join(QRCODE_PATH, f'{qr_str}.jpg')
    
        with open(qrfile_path, 'wb') as f:
            f.write(res.content)
    
    MDB.Devices.insert_many(device_list)
    
    

    pahcogn

    # import requests
    # res = requests.get('http://www.baidu.com')
    # # res1 = requests.get('http://192.168.16.90:9527/content_list') #如果开着
    # print(res.content)
    # print(res.text)
    # print(res.json()) # 请求的数据必须是json格式的
    
    # 流的话可以 open
    # requests 方法 get post
    
    # data =  "{"ret":200,"msg":"成功","data":{"isSelfAlbum":false,"currentUid":0,"albumId":424529,"mainInfo":{"albumStatus":1,"showApplyFinishBtn":false,"showEditBtn":false,"showTrackManagerBtn":false,"showInformB
    # 恰","playCount":1818160,"showLikeBtn":true,"isLike":false,"showShareBtn":true,"showCommentBtn":true,"showForwardBtn":true,"createDateFormat":"4年前","url":"/ertong/424529/7713678","duration":92},{"index":107,"trackId":7713564,"isPaid":false,"tag":0,"title":"我的快乐"
    # 数据请求那个爬虫的
    import json
    import os
    import time
    import requests
    from setting import COVER_PATH, MUSIC_PATH, MDB
    from uuid import uuid4
    music_list = []
     print(json.loads(data))
    my_data = json.loads(data)
    
    data_list = my_data.get('data').get('tracksAudioPlay')
    for audio in data_list:
        # print(audio)    # {'index': 30, 'trackId': 7713678, 'trackName': '新年恰恰', 'trackUrl': '/ertong/424529/7713678', 'trackCoverPath'
        title = audio.get('trackName')
        zhuanji = audio.get('albumName')
        # print(title, zhuanji)    # 新年恰恰 【一千零一夜】经典儿歌
        cover_url = f"http:{audio.get('trackCoverPath')}"  # 封面 #  'trackCoverPath': '//imagev2.xmcdn.com/group9/M04/3B/E1/wKgDZlWcvRKwSOIMAAD3201gPxc590.jpg'
        music_url = audio.get('src')    #  'src': 'https://fdfs.xmcdn.com/group11/M07/3C/12/wKgDa1WcxH-yUx0yAA4jOCnkzoo604.m4a',
        # print(music_url)    # https://fdfs.xmcdn.com/group12/M00/3B/B2/wKgDXFWcw12y8TanAAtkIsI9320251.m4a
        cover = requests.get(cover_url)
        # print(cover)    # <Response [200]>
        # print(cover.content)    # 流  可以写成文件 # b'xffxd8xffxe0x00x10JFIFx00x01x01x01x00Hx00Hx00
    
        all_name = uuid4() # 音乐文件和封面文件同名
        # 获取封面
        cover_name = f'{all_name}.jpg'
        cover_path = os.path.join(COVER_PATH, cover_name)
        # print('嗯', cover_name)  # 344457a1-0562-4be3-9c0d-a5304f02f7cd.jpg
        # print('怕', cover_path)  # Cover344457a1-0562-4be3-9c0d-a5304f02f7cd.jpg
        with open(cover_path, 'wb') as fcover:
            fcover.write(cover.content) # 写入流
        # print(cover.text)
    
        # 获取音乐文件
        music_name = f'{all_name}.mp3'
        music_path = os.path.join(MUSIC_PATH, music_name)
        music = requests.get(music_url)
        with open(music_path, 'wb') as fmusic:
            fmusic.write(music.content)
    
        # print(cover.json())
        time.sleep(0.5)  # 防止qps(每秒访问)限制反爬
    
        music_info = {
            'music': music_name,
            'cover': cover_name,
            'title': title,
            'zhuanji': zhuanji
        }
        music_list.append(music_info) # 加入数据库的是名字,而不是真正的文件
        # 所有的都加完之后,在加入数据库,而不是每一次都要加进去,浪费性能
        # MDB.Content.insert_one(music_info)
    
    
    MDB.Content.insert_many(music_list)
    # 小写的 many  我的Tina  TypeError: 'Collection' object is not callable. If you meant to call the 'insert_Many' method on a 'Collection' object it is failing because no such method exists.
    
    
  • 相关阅读:
    Algorithms, Part I by Kevin Wayne, Robert Sedgewick
    C-线性顺序表的增删改查
    EXCEL中汉字转大写拼音
    java-解决业务操可能数据冲突问题
    【翻译二十三】java-并发程序之随机数和参考资料与问题(本系列完)
    [leetcode]Inorder Successor in BST
    [leetcode]Kth Largest Element in an Array
    [leetcode]Strobogrammatic Number II
    [leetcode]Move Zeroes
    [leetcode]Max Consecutive Ones II
  • 原文地址:https://www.cnblogs.com/Doner/p/11219267.html
Copyright © 2020-2023  润新知