コード例 #1
0
ファイル: serializers.py プロジェクト: J88G/MusicAPI
    def create(self, validated_data):

        music = Music(
            name=validated_data['name'],
            genre=validated_data['genre'],
        )
        music.save()
        return music
コード例 #2
0
def post_music():
    session = create_session()
    user_id = g.current_user['sub']
    music = Music(user_id=user_id)
    music.content = request.data
    session.add(music)
    session.commit()
    music = music.to_json()
    session.close()
    return jsonify(music)
コード例 #3
0
ファイル: music_handler.py プロジェクト: theratlesnake/pyblog
def post_music_callback_handler(app):
    m = Music()
    m.uid = 1
    m.upload_at = str(time.time())
    m.type_id = 1
    m.belong_id = 1
    m.music_name = 'CountingStar'
    m.music_url = 'http://7xs7oc.com1.z0.glb.clouddn.com/music%2FJason%20Chen%20-%20Counting%20Stars.mp3'
    ret = (yield from m.save())
    if ret:
        return {'code': 200, 'msg': 'ok'}
    return {'code': 300, 'msg': "bad"}
コード例 #4
0
    def post(self, request):
        title = request.POST['title']
        genre = request.POST['genre']
        rating = request.POST['rating']

        Music(title=title, genres_id=genre, rating=rating).save()
        return HttpResponseRedirect(reverse('music_show'))
コード例 #5
0
ファイル: music_handler.py プロジェクト: theratlesnake/pyblog
def get_music_handler(app):
    max_id_arr = (yield from Music().max('id'))
    if len(max_id_arr) == 0:
        max_id = 8
    else:
        max_id = max_id_arr[0].get('id')
    if not max_id or max_id < 7:
        max_id = 8
    rand_id = random.randrange(1, max_id - 6)
    data = (yield from Music().fields({
        'music_name': 'title',
        'music_url': 'url'
    }).where('id', '>=', rand_id).limit(6).findall())
    ret = dict()
    ret['code'] = 200
    ret['msg'] = 'ok'
    ret['type'] = 3
    ret['data'] = data
    return ret
コード例 #6
0
def musics_update_page():
    form = MusicUpdateForm(request.form)
    if request.method == 'POST' and form.validate():
        music = Music(form.name.data, form.genre.data,
                      form.duration_in_seconds.data, form.singer.data,
                      form.year.data)
        music_id = form.id.data  # which music to update
        update_music(music_id, music)
        return redirect('/mylists/musics')
    return render_template("update_musics.html", form=form)
コード例 #7
0
def musics_add_page():
    form = MusicAddForm(request.form)
    if request.method == 'POST' and form.validate():
        music = Music(form.name.data, form.genre.data,
                      form.duration_in_seconds.data, form.singer.data,
                      form.year.data)
        insert_music(music)
        return redirect('/mylists/musics')

    return render_template("add_musics.html", form=form)
コード例 #8
0
def add():
    if request.method == 'POST':
        yt_regex = re.compile(
            "https?://(?:www\.|m\.)?youtu(?:be\.com/watch\?v=|\.be/)([\w\-_]*)"
        )
        url = request.values.get('url', '')
        yt_match = yt_regex.match(url)
        bc_match = None
        if not yt_match:
            bc_match = get_info(url)

        if not (yt_match or bc_match):
            return Response(url + " is not a valid url",
                            mimetype='text/plain',
                            status=400)
        else:
            if yt_match:
                link = yt_match.group(1)
                valid = urlfetch.fetch(
                    'https://www.youtube.com/oembed?url=https://www.youtube.com/watch?v='
                    '{vid}&format=json'.format(vid=link),
                    validate_certificate=True)

                if valid.status_code != 200:
                    return Response(url + " is not a valid youtube video",
                                    mimetype="text/plain",
                                    status=400)

                decoded = valid.content.decode('utf-8')
                title = json.loads(decoded).get('title', '')
            else:
                link = url
                title = bc_match.get('title', '')

            ip = request.remote_addr
            time = datetime.datetime.utcnow()

            m = Music(
                link=link,
                date_added=time,
                title_cache_time=time,
                added_by=request.values.get('name', ''),
                ip=ip,
                position=Music.query().count() + 1,  # not saved yet
                title=title,
                type='youtube' if yt_match else 'bandcamp')

            data = {
                'id': Music.query().count(),
                'url': url,
                'link': url_for('get', musicid=Music.query().count() + 1),
                'type': m.type
            }
            m.put()
            return jsonify(data)
    else:
        return render_template('add.html')
コード例 #9
0
def main():
    session = create_session()
    user = User()
    session.add(user)
    session.commit()
    musics = [Music(user_id=user.id, name="music") for _ in range(5)]
    session.add_all(musics)
    session.commit()
    folder = Folder(name="フォルダ1", user_id=user.id)

    session.add(folder)
    session.commit()
コード例 #10
0
    def add_new_musique(self, title, source, loop, style_tags, scene_tags,
                        genre):
        duration = pafy.new(source).length
        music = Music(title=title,
                      source=source,
                      duration=duration,
                      loop=loop,
                      genre=genre,
                      vote=0)
        for style in style_tags:
            music.style_tags.append(Style.query.filter_by(id=style).first())
        for scene in scene_tags:
            music.scene_tags.append(Scene.query.filter_by(id=scene).first())

        try:
            music.sound_url = pafy.new(source).getbestaudio().url
            database.session.add(music)
            database.session.commit()
        except OSError as e:
            print(title, "source is unavailable (see:", source, ")")
            print(e)
コード例 #11
0
ファイル: apis.py プロジェクト: D-Cup/study
 def post(self):
     name = request.form['name']
     singer = request.form['singer']
     brand = request.form['brand']
     mp3_url = request.form['mp3_url']
     music = Music()
     music.name = name
     music.singer = singer
     music.brand = brand
     music.mp3_url = mp3_url
     add(music)
     return {'state': 'ok', 'msg': '{}添加成功'.format(name)}
コード例 #12
0
ファイル: app.py プロジェクト: danrneal/fyyur
def create_music(artist_id):
    """Creates a new featured song/album for the artist from form submission.

    Returns:
        The detail view for the artist
    """
    form = MusicForm()
    if not form.validate():
        flash(
            list(form.errors.values())[0][0],
            "error",
        )
        return redirect(url_for("show_artist", artist_id=artist_id))

    error = False

    try:
        music_type = request.form.get("type_")
        music_title = request.form.get("title")
        music = Music(artist_id=artist_id, type_=music_type, title=music_title)
        db.session.add(music)
        db.session.commit()
    except Exception:  # pylint: disable=broad-except
        error = True
        db.session.rollback()
        print(sys.exc_info())
    finally:
        db.session.close()

    if error:
        flash(f"{music_type} {music_title} could not be added!", "error")
        abort(500)

    flash(f"{music_type} {music_title} was successfully added!")

    return redirect(url_for("show_artist", artist_id=artist_id))
コード例 #13
0
def latest_music_num():
    """Return the number of the latest valid music."""
    return Music.query().count()
コード例 #14
0
def renumber():
    music = Music.query().order(Music.date_added)
    for i, m in enumerate(music):
        m.position = i + 1
        m.put()
    return Response(status=204)
コード例 #15
0
def getitem(num):
    return Music.query(Music.position == num).get()
コード例 #16
0
 def get_musics():
     return jsonify(Music.all().serialize())
コード例 #17
0
def random_music_num():
    """Return a random number from the set of valid music numbers."""
    import random
    return random.randint(1, Music.query().count())
コード例 #18
0
def all():
    entries = Music.query().order(Music.position)
    for entry in entries:
        if not entry.title:
            entry.update_title(force=True)
    return render_template('all.html', entries=list(entries))