aboutsummaryrefslogtreecommitdiffstats
path: root/server/media.erl
diff options
context:
space:
mode:
Diffstat (limited to 'server/media.erl')
-rw-r--r--server/media.erl23
1 files changed, 9 insertions, 14 deletions
diff --git a/server/media.erl b/server/media.erl
index b3b8e0f..10fed99 100644
--- a/server/media.erl
+++ b/server/media.erl
@@ -43,7 +43,7 @@ read_files([],Total,Fail) -> io:format("Total: ~w, Failed: ~w~n", [Total, Fail])
start_playing() ->
{Artist, Title} = search_best(media:all(), 0,0),
- play(Artist, Title, "muh").
+ play(Artist, Title).
% Basic insertion of entrys into the database. Some entries are left out because they are 0 or false.
@@ -87,18 +87,13 @@ all() ->
% In practice we are going to set their locked variable to true and spawn a process which will unlock them after a certain time.
% Well this could be considered abuse.
-play(Artist, Title, Callback) ->
+play(Artist, Title) ->
[Head|_] = ask(Artist, Title),
{_, Title, Artist, _, _, Fp} = Head,
Port = erlang:open_port({spawn_executable, "/usr/bin/mplayer"}, [{args, [Fp]}, exit_status]),
-
- % lock the song
- F = fun() ->
- New = Head#track{locked = 1},
- mnesia:write(New)
- end,
- mnesia:transaction(F),
-
+ reset_votes(Artist, Title),
+ lock_process(Artist, Title),
+
io:format("playing: ~s, Artist: ~s~n", [Title, Artist]),
receive
{Port, {exit_status, 0}} -> start_playing();
@@ -140,8 +135,8 @@ reset_votes(Artist, Title) ->
lock(Artist, Title) ->
F = fun() ->
[Head|_] = ask(Artist, Title),
- Votes = Head#track.votes - 1,
- New = Head#track{votes = Votes},
+ Votes = Head#track.lock = true,
+ New = Head#track{lock = Votes},
mnesia:write(New)
end,
mnesia:transaction(F).
@@ -149,8 +144,8 @@ lock(Artist, Title) ->
unlock(Artist, Title) ->
F = fun() ->
[Head|_] = ask(Artist, Title),
- Votes = Head#track.votes -1,
- New = Head#track{votes = Votes},
+ Votes = Head#track.lock = false,
+ New = Head#track{lock = Votes},
mnesia:write(New)
end,
mnesia:transaction(F).