Skip to content
Permalink
Browse files
Playlist added but error with audio file
  • Loading branch information
nellurib committed Jul 29, 2020
1 parent ef54849 commit 4db3e5365e0412dbad41d74573f0a3d428ab85e6
Show file tree
Hide file tree
Showing 12 changed files with 61 additions and 157 deletions.
@@ -1,18 +1,10 @@
[
{
"Song_id":"s10002",
"Singer_Name": "John",
"image-url":"",
"Singer-details":"",
"Description":"",
"Track":"BlackOut"
},

{
"Singer_Name": "Justin-Bieber",
"Song_id":"s10001",
"image-url":"data:image/jpeg;base64,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",
"Singer-details":"Justin Drew Bieber (/ˈbiːbər/; born March 1, 1994) is a Canadian singer, songwriter, and actor. Discovered at 13 years old by talent manager Scooter Braun after he had watched his YouTube cover song videos, Bieber was signed to RBMG Records in 2008. With Bieber's debut EP My World, released in late 2009, Bieber became the first artist to have seven songs from a debut record chart on the Billboard Hot 100.",
"Description":"Baby is a song by Canadian recording artist Justin Bieber, alongside rapper Ludacris. It was released as the lead single on Bieber's debut album, My World 2.0. The track was written by Bieber with Christina Milian, Christopher Tricky Stewart who worked with Bieber on a previous single One Time, and R&B singer The-Dream, and produced by the latter two.",
"Singer_details":"Justin Drew Bieber (/ˈbiːbər/; born March 1, 1994) is a Canadian singer, songwriter, and actor. Discovered at 13 years old by talent manager Scooter Braun after he had watched his YouTube cover song videos, Bieber was signed to RBMG Records in 2008.",
"description":"Baby is a song by Canadian recording artist Justin Bieber, alongside rapper Ludacris. It was released as the lead single on Bieber's debut album, My World 2.0. The track was written by Bieber with Christina Milian, Christopher Tricky Stewart who worked with Bieber on a previous single One Time, and R&B singer The-Dream, and produced by the latter two.",
"Track":"Baby"

},
@@ -22,48 +14,32 @@
"image-url":"",
"Singer-details":"",
"Description":"It was launched in 2002. At that Justin bieber age was 12 years.",


"Track":"Loser"
},
{
"Singer_Name": "JohnCena",
"Song_id":"s10004",
"image-url":"",
"Singer-details":"",
"Description":"It was launched in 2002. At that Justin bieber age was 12 years.",


"Track":"You-can-see-me"
},

{
"Singer_Name": "Akon",
"Song_id":"s10005",
"image-url":"",
"Singer-details":"",
"Description":"It was launched in 2002. At that Justin bieber age was 12 years.",


"trackSource":"https://pwdown.com/112531/01. Chammak Challo.mp3",
"Track":"Chammak-Challo"
},
{
"Singer_Name": "A.R-Rehman",
"Song_id":"s10006",
"image-url":"",
"Singer-details":"",
"Description":"It was launched in 2002. At that Justin bieber age was 12 years.",

"Track":"Oscar"
},
{
"Singer_Name": "Pritam",
"Song_id":"s10007",
},
{
"Singer_Name": "A.R. Rehman",
"Song_id":"s10011",
"image-url":"",
"Singer-details":"",
"Description":"It was launched in 2002. At that Justin bieber age was 12 years.",

"Track":"Black"
"trackSource":"songs/Dil-Bechara.mp3",
"Track":"Dil Bechara"
},

{
"Singer_Name": "AlanWalker",
"Song_id":"s10008",
@@ -75,7 +51,7 @@
"Track":"Fade"
},
{
"Singer_Name": "EDSheeran",
"Singer_Name": "CharliePuth",
"Song_id":"s10009",
"image-url":"",
"Singer-details":"",
@@ -20,7 +20,8 @@ app.use( async(ctx, next) => {
console.log(`${ctx.method} ${ctx.path}`)
ctx.hbs = {
authorised: ctx.session.authorised,
host: `https://${ctx.host}`
host: `https://${ctx.host}`,
username:ctx.session.user
}
for(const key in ctx.query) ctx.hbs[key] = ctx.query[key]
await next()

This file was deleted.

@@ -8,23 +8,25 @@ constructor(dbName = ':memory:') {
console.log("constructor")
return (async() => {
this.db = await sqlite.open(dbName)
const sql = 'CREATE TABLE IF NOT EXISTS uploadTrack\
(id TEXT, singer_name TEXT, singer_details TEXT, description TEXT,image_url TEXT, Track_name TEXT);'
const sql = 'CREATE TABLE IF NOT EXISTS uplorac\
(id TEXT PRIMARY KEY , singer_name TEXT, singer_details TEXT, description TEXT,image_url TEXT, Track_name TEXT, trackSource TEXT);'
await this.db.run(sql)
return this
})()
}

async insert(id, singer_name, singer_details,description,track,image_url) {
sql = `INSERT INTO uploadTrack(id, singer_name, singer_details,description,image_url,Track_name) VALUES("${id}", "${singer_name}", "${singer_details}", "${description}", "${image_url}", "${track}")`
async insert(id, singer_name, singer_details,description,track,image_url,src) {
const sql = `INSERT INTO uplorac(id, singer_name, singer_details,description,image_url,Track_name,trackSource) VALUES("${id}", "${singer_name}", "${singer_details}", "${description}", "${image_url}", "${track}","${src}")`
await this.db.run(sql)
console.log("Done")
return true
}

async getAll() {
sql = `SELECT * FROM uploadTrack`
const record = await this.db.get(sql)

const sql = `SELECT * FROM uplorac;`
const record = await this.db.all(sql)
console.log(record)
return record


@@ -51,10 +51,11 @@ module.exports = class User {
const records = await this.db.get(sql)
if(!records.count) throw new Error(`username "${username}" not found`)
sql = `SELECT pass FROM artist WHERE user = "${username}";`

const record = await this.db.get(sql)
const valid = await bcrypt.compare(password, record.pass)
if(valid === false) throw new Error(`invalid password for account "${username}"`)
return true
return username
}

async tearDown() {
@@ -97,8 +97,10 @@ router.post('/login', koaBody, async ctx => {
const res= await user.login(body.user, body.pass)

ctx.session.authorised = true

return ctx.redirect('/secure?msg=you are now logged in...')
console.log(res)
ctx.session.user=res

return ctx.redirect('/secure?msg=you are now logged in...',ctx)
} catch (err) {
ctx.hbs.msg = err.message
await ctx.render('login', ctx.hbs)
@@ -126,7 +128,7 @@ await ctx.render('listTrack', ctx.hbs) }
console.log(ctx.hbs)
}
})
router.get("/trackDetails/:track",koaBody,async ctx=>{
router.get('/trackDetails/:track',koaBody,async ctx=>{
try
{
const value=ctx.params.track;
@@ -142,7 +144,7 @@ router.get("/trackDetails/:track",koaBody,async ctx=>{
console.log(ctx.hbs)}

})
router.get("/uploadTrack/:id",koaBody,async ctx=>{
router.get('/uploadTrack/:id',koaBody,async ctx=>{
console.log("enter")
const value=ctx.params.id;
console.log(value)
@@ -154,7 +156,7 @@ router.get("/uploadTrack/:id",koaBody,async ctx=>{
return item.Song_id == value;
});
console.log(arrFound[0])
const res= await upload.insert(arrFound[0].Song_id,arrFound[0].Singer_Name , arrFound[0].Singer_Details,arrFound[0].Description,arrFound[0].Track,arrFound[0].image_url)
const res= await upload.insert(arrFound[0].Song_id,arrFound[0].Singer_Name , arrFound[0].Singer_details,arrFound[0].description,arrFound[0].Track,arrFound[0].image_url,arrFound[0].trackSource)
console.log('record inserted')
return ctx.redirect('/playlist')

@@ -166,12 +168,16 @@ router.get("/uploadTrack/:id",koaBody,async ctx=>{
console.log(ctx.hbs)}

})
router.get('/songs/:id',koaBody,async ctx=>{
console.log("play")
await ctx.redirect('playlist',ctx.hbs)
})
router.get('/playlist',koaBody,async ctx=>{
const upload= await new UploadTrack(dbName)
try{
const records= await upload.getAll()
console.log(records)
ctx.hbs.record=records
ctx.hbs.playlist=records
await ctx.render('playlist',ctx.hbs)
}
catch (err) {
@@ -11,7 +11,7 @@
</head>
<body>
<header>
<h1>Home</h1>
<h1>HomePage</h1>
</header>
{{#if msg}}
<p class="msg">{{msg}}</p>

This file was deleted.

@@ -13,6 +13,10 @@
</head>
<body>
<header>
<br>
<br>

<b>Username is</b> :{{username}}
<h1>List of Tracks</h1>
</header>
{{#if msg}}
@@ -31,9 +35,10 @@
{{#each record}}

<tr>

<td><a href="/singerDetails/{{Singer_Name}}">{{Singer_Name}}</a></td> <td><a href="/trackDetails/{{Track}}">{{Track}}</a></td>
<td><a href="/uploadTrack/{{Song_id}}"><input type="button" value="Upload Track"></input></a></td>
</tr>
<td><a href= "/uploadTrack/{{Song_id}}"><input type="submit" value="Upload Track"></input></a></td>
</tr>
{{/each}}
</table>
<br>
@@ -13,6 +13,10 @@
</head>
<body>
<header>
<br>
<br>

<b>Username is</b> :{{username}}
<h1>PlayList</h1>
</header>
{{#if msg}}
@@ -23,16 +27,19 @@
<br>
<table border="1" align="center" cellspacing="20">
<tr>
<th>Singer-Name</th>
<th>SingerName</th>
<th>Track</th>
<th>Action</th>
<th>Play/Pause</th>

</tr>
{{#each record}}
{{#each playlist}}

<tr>
<td><a href="/singerDetails/{{Singer_Name}}">{{Singer_Name}}</a></td> <td><a href="/trackDetails/{{Track_Name}}">{{Track_Name}}</a></td>
</tr>
<td><a href="/singerDetails/{{singer_name}}">{{singer_name}}</a></td> <td><a href="/trackDetails/{{Track_name}}">{{Track_name}}</a></td>
<td><audio controls preload="none">
<source src='{{trackSource}}' type="audio/mpeg">
</audio></td>
</tr>
{{/each}}
</table>
<br>
@@ -11,7 +11,9 @@
</head>
<body>
<header>

<br>
<br>
<b>Username is</b> :{{username}}
</header>
{{#if msg}}
<p class="msg">{{msg}}</p>
Binary file not shown.

0 comments on commit 4db3e53

Please sign in to comment.