diff options
Diffstat (limited to 'server/media.erl')
-rw-r--r-- | server/media.erl | 23 |
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). |