Professional Documents
Culture Documents
Date: / /2024
Head of Department
(Prof. Noopur Goel)
Internal Examiner External Examiner
ACKNOWLEDGEMENT
Gaurav Singh
BCA Vth semester
2158044
DECLARATION
I hereby declare that we have successfully designed and implemented the
project on "SPOTIFY-CLONE.
This project is under V.B.S.P.U, Jaunpur and in the guidance of PROF.
NOOPUR GOEL is partial fulfillment of the requirement for the award of the
degree of Bachelor of Computer Applications and submitted to the institution
is an authentic record of my own work carried out during the period 05 October
2023 to 04 January 2024. I also cited the reference about the text(s)
figures(s)/tables(s) from where they have been taken.
The matter presented in this project report has not been submitted
elsewhere for the award of any other degree or diploma from any institutions.
The Viva-voce examination of GAURAV SINGH (BCA) student has been held
on.............................
Signature of External Examiner Signature of Head of the Department
CONTENT:
➢ Abstract
➢ Introduction
➢ Analysis
➢ Hardware Requirments
➢ Objective
➢ System Requirment
➢ Code/Program
➢ Output
➢ Reference
➢ Conclusion
ABSTRACT
INTRODUCTION
Spotify –a peer-assisted music streaming service –has gained
world wide popularity in the past few years. Spotify provides
millions of users instant access to over 20 million tracks. Until
now, little has been published about the user behaviour in
Spotify., we conduct an empirical study of user behaviour in
1
Spotify by analyse a larger dataset. User behaviour can be
fundamentally different in music streaming and video
streaming services, because unlike watching videos, listening
to music usually does not require constant attention from
users. Such knowledge is crucial for improving the system
design and operation. In particular, the explosively increasing
adoption of smartphones and tablets urges the
understanding of the usage pattern of music streaming
services on mobile platforms. Our dataset was collected by
Spotify between 2010 and 2011, which covers users in
Sweden, UK, and Spain. We study both the system dynamics
and individual user behaviour in Spotify. For system
dynamics, we investigate the arrival patterns of user sessions,
playbacks, and daily variations of session length. For
individual users, we examine the session switching patterns
on multiple devices, temporal patterns of user appearances,
and correlations of successive sessions. Our findings are not
only key for improving system design and operation of
Spotify, but also provide valuable insights to understand user
behaviour in general music streaming systems.
ANALYSIS:-
4
OBJECTIVE:
Tools: MS Office
CODES OF PROJECT:
6
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible"
content="IE=edge">
<meta name="viewport"
content="width=device-width, initial-
scale=1.0">
<title>Spotify-Your favourite music
is here</title>
<link rel="stylesheet"
href="style.css">
</head>
<body>
<nav>
<ul>
<li class="brand"><img
src="newlogo.png" alt="Spotify"> Spotify</li>
<li>Home</li>
<li>About</li>
</ul>
</nav>
<div class="container">
<div class="songList">
<h1 style="text-decoration:
underline;">Top Rated Indian song-Devotional
and Bollywood... </h1>
<div class="songItemContainer">
<div class="songItem">
7
<img alt="1">
<span
class="songName">Mere ghar Ram aaye
hai</span>
<span
class="songlistplay"><span
class="timestamp">03:34 <i id="0" class="far
songItemPlay fa-play-circle"></i>
</span></span>
</div>
<div class="songItem">
<img alt="1">
<span
class="songName">Let me Love You</span>
<span
class="songlistplay"><span
class="timestamp">04:12 <i id="1" class="far
songItemPlay fa-play-circle"></i>
</span></span>
</div>
<div class="songItem">
<img alt="1">
<span
class="songName">Let me Love You</span>
<span
class="songlistplay"><span
class="timestamp">03:10 <i id="2" class="far
songItemPlay fa-play-circle"></i>
</span></span>
</div>
<div class="songItem">
<img alt="1">
<span
class="songName">Let me Love You</span>
8
<span
class="songlistplay"><span
class="timestamp">04:39 <i id="3" class="far
songItemPlay fa-play-circle"></i>
</span></span>
</div>
<div class="songItem">
<img alt="1">
<span
class="songName">Let me Love You</span>
<span
class="songlistplay"><span
class="timestamp">03:55 <i id="4" class="far
songItemPlay fa-play-circle"></i>
</span></span>
</div>
<div class="songItem">
<img alt="1">
<span
class="songName">Let me Love You</span>
<span
class="songlistplay"><span
class="timestamp">02:54 <i id="5" class="far
songItemPlay fa-play-circle"></i>
</span></span>
</div>
<div class="songItem">
<img alt="1">
<span
class="songName">Let me Love You</span>
<span
class="songlistplay"><span
class="timestamp">03:24 <i id="6" class="far
9
songItemPlay fa-play-circle"></i>
</span></span>
</div>
<div class="songItem">
<img alt="1">
<span
class="songName">Let me Love You</span>
<span
class="songlistplay"><span
class="timestamp">04:35 <i id="7" class="far
songItemPlay fa-play-circle"></i>
</span></span>
</div>
<div class="songItem">
<img alt="1">
<span
class="songName">Let me Love You</span>
<span
class="songlistplay"><span
class="timestamp">04:30 <i id="8" class="far
songItemPlay fa-play-circle"></i>
</span></span>
</div>
<div class="songItem">
<img alt="1">
<span
class="songName">Let me Love You</span>
<span
class="songlistplay"><span
class="timestamp">03:55 <i id="9" class="far
songItemPlay fa-play-circle"></i>
</span></span>
</div>
</div>
10
</div>
<div class="songBanner"></div>
</div>
<div class="bottom">
<input type="range" name="range"
id="myProgressBar" min="0" value="0"
max="100">
<div class="icons">
<!-- fontawesome icons -->
<i class="fas fa-3x fa-step-
backward" id="previous"></i>
<i class="far fa-3x fa-play-
circle" id="masterPlay"></i>
<i class="fas fa-3x fa-step-
forward" id="next"></i>
</div>
<div class="songInfo">
<img src="playing.gif"
width="42px" alt="" id="gif"> <span
id="masterSongName">Play your favourite-
music</span>
</div>
</div>
<script src="script.js"></script>
<script
src="https://kit.fontawesome.com/26504e4a1f.j
s" crossorigin="anonymous"></script>
</body>
</html>
//OUTPUT SAMPLE:
11
@import
url('https://fonts.googleapis.com/css2?family
=Ubuntu&display=swap');
@import
url('https://fonts.googleapis.com/css2?family
=Varela+Round&display=swap');
body{
background-color: antiquewhite;
}
12
*{
margin: 0;
padding: 0;
}
nav{
font-family: 'Ubuntu', sans-serif;
position: sticky;
top: 0px;
}
nav ul{
display: flex;
align-items: center;
list-style-type: none;
height: 65px;
background-color: black;
color: white;
font-weight: 700;
}
nav ul li{
padding: 0 12px;
}
.brand img{
width: 44px;
padding: 0 8px;
}
.brand {
display: flex;
align-items: center;
font-weight: bolder;
font-size: 1.3rem;
13
}
.container{
min-height: 72vh;
background-color: black;
color: white;
font-family: 'Varela Round', sans-serif;
display: flex;
margin: 23px auto;
width: 70%;
border-radius: 12px;
padding: 34px;
background-image: url('newbg.avif');
}
.bottom{
position: sticky;
bottom: 0;
height: 130px;
background-color: black;
color: white;
display: flex;
justify-content: center;
align-items: center;
flex-direction: column;
}
.icons{
margin-top: 14px;
}
.icons i{
cursor: pointer;
}
14
#myProgressBar{
width: 80vw;
cursor: pointer;
}
.songItemContainer{
margin-top: 74px;
}
.songItem{
height: 50px;
display: flex;
background-color: white;
color: black;
margin: 12px 0;
justify-content: space-between;
align-items: center;
border-radius: 34px;
font-style:inherit;
font-variant: unset;
}
.songItem img{
width: 43px;
margin: 0 23px;
border-radius: 34px;
}
.timestamp{
margin: 0 23px;
}
.timestamp i{
cursor: pointer;
15
}
.songInfo{
position: absolute;
left: 10vw;
font-family: 'Varela Round', sans-serif;
}
.songInfo img{
opacity: 0;
transition: opacity 0.4s ease-in;
}
// OUTPUT SAMPLE:
16
console.log("Welcome to Spotify");
17
let songItems =
Array.from(document.getElementsByClassName('s
ongItem'));
let songs = [
{songName: "Mere ghar Ram aaye hai by T-
series", filePath: "songs/1.mp3", coverPath:
"covers/meregharram.jpg"},
{songName: "Ram Siya Ram by Sachet
tandon.....", filePath: "songs/2.mp3",
coverPath: "covers/ramsiyaram.jpg"},
{songName: "Most listen of Jubin-
Nautiyal.....", filePath: "songs/3.mp3",
coverPath: "covers/nautiyal.jpg"},
{songName: "Most listen Song of Darshan-
Rawal.", filePath: "songs/4.mp3", coverPath:
"covers/darshanrawal.jpg"},
{songName: "Best Song of Hansharaj-
Raghuvanshi", filePath: "songs/5.mp3",
coverPath: "covers/hansaraj.jpg"},
{songName: "Most listen Song of Arijit-
Singh..", filePath: "songs/6.mp3", coverPath:
"covers/arijit.jpg"},
{songName: "Most listen Song of Tuksi-
Kumar...", filePath: "songs/7.mp3",
coverPath: "covers/tulsikr.jpg"},
{songName: "Best Song of Sachet-
Parampara.....", filePath: "songs/8.mp3",
coverPath: "covers/sachetparam.jpg"},
{songName: "Most listen Song of Honey-
Singh...", filePath: "songs/9.mp3",
coverPath: "covers/honey.jpg"},
18
{songName: "Most listen Song of Jass-
manak lofi", filePath: "songs/10.mp3",
coverPath: "covers/jass.jpg"},
]
songItems.forEach((element, i)=>{
element.getElementsByTagName("img")[0].sr
c = songs[i].coverPath;
element.getElementsByClassName("songName"
)[0].innerText = songs[i].songName;
})
myProgressBar.addEventListener('change',
()=>{
audioElement.currentTime =
myProgressBar.value *
audioElement.duration/100;
})
Array.from(document.getElementsByClassName('s
ongItemPlay')).forEach((element)=>{
element.addEventListener('click', (e)=>{
makeAllPlays();
songIndex = parseInt(e.target.id);
e.target.classList.remove('fa-play-
circle');
20
e.target.classList.add('fa-pause-
circle');
audioElement.src =
`songs/${songIndex+1}.mp3`;
masterSongName.innerText =
songs[songIndex].songName;
audioElement.currentTime = 0;
audioElement.play();
gif.style.opacity = 1;
masterPlay.classList.remove('fa-play-
circle');
masterPlay.classList.add('fa-pause-
circle');
})
})
document.getElementById('next').addEventListe
ner('click', ()=>{
if(songIndex>=9){
songIndex = 0
}
else{
songIndex += 1;
}
audioElement.src =
`songs/${songIndex+1}.mp3`;
masterSongName.innerText =
songs[songIndex].songName;
audioElement.currentTime = 0;
audioElement.play();
masterPlay.classList.remove('fa-play-
circle');
masterPlay.classList.add('fa-pause-
circle');
21
})
document.getElementById('previous').addEventL
istener('click', ()=>{
if(songIndex<=0){
songIndex = 0
}
else{
songIndex -= 1;
}
audioElement.src =
`songs/${songIndex+1}.mp3`;
masterSongName.innerText =
songs[songIndex].songName;
audioElement.currentTime = 0;
audioElement.play();
masterPlay.classList.remove('fa-play-
circle');
masterPlay.classList.add('fa-pause-
circle');
})
//OUTPUT SAMPLE:
22
CONCLUSION:
23
➢ This was achieved through a userfocused business model
that placed value on the attention of millions of users over
the economic value of the music it was providing, or the
monetary profits that might be gained. It was this shift away
from a profit driven business model that allowed Spotify to
grow a network economy and gain value as a business to
advertisers and music artists alike.
24
REFERENCES
• Class Lectures
• Project Supervisor
• Apna College on Youtube Channel
• Code with Harry Channel
• Scribd website for project notes
https://www.scribd.com/document/628041861/Sp
otify-clone
• Font
https://fontawesome.com/icons
25