While loop stopt ander draaiend script met while loop.
Ik ben een beetje aan het klooien met spotify en php, ik gebruik bewust hun api niet dus die onduidelijkheid haal ik meteen even weg, als jullie mijn script zien. Ik wou proberen om een eigen muziekspeler te maken die helaas alleen maar kan afspelen en niet stoppen of pauzeren(kan dus alleen met api, of je moet een zeer goede hacker zijn ofzoiets). Nu wil ik in de toekomst van een database nummers halen(ik kan bijvoorbeeld de playist webpagina doorscannen voor die informatie van de nummers(naam van het liedje en de tijd van het nummer, die wordt zelfs in milliseconde gegeven)) en die achterelkaar laten aanspelen. Daarvoor moet ik een timer maken, en een script die checkt of het nummer speelt of niet. Dat is me op een zeer omslachtige manier gelukt.
Nu wil ik op mijn player script eerst het nummer openen/starten, en dan direct daarna een whileloop starten. Dat werkt ook, maar, omdat ik dus moet checken of het nummer speelt of niet heb ik een andere script draaien die door een debug log van chrome spit naar urls die aantonen of er een pauzeer of speel actie plaatsvind.
Deze script moet nattuurlijk blijven draaien. Helaas vind mijn player script dat niet. Deze pauzeerd alle activiteit op de scan(chrmdeb) script, en laat het pas verder draaien als de while loop op de player script geeindigd is :? ... Oh om informatie over te brengen van de ene naar het andere script gebruik ik sessions, nu denk ik dat daar ergens het probleem zit, maar ik zou niet weten hoe ik dat zou kunnen oplossen :X...
Nu is mijn code een beetje zeer rommelig, dus gelieve daar doorheen kijken.
Spotiplayer.php :
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
<?php
session_start();
set_time_limit(0);
$song1 = '0Dzwok10UWrx7038TkpduM';
$song2 = '7BfWETbNfPXqUOKf7jH5yk';
$song3 = '3CtzieC6Z6X30dhuTENQQf';
$_SESSION['link'] = "https://embed.spotify.com/?uri=spotify:track:" . $song1;
$x = 0;
echo '<!DOCTYPE html><html><body> <script>
var myWindow;
var myWindow2;
function openWin() {
myWindow = window.open("spotify:track:' . $song1 . '", "myWindow");
myWindow2 = window.open("https://embed.spotify.com/?uri=spotify:track:' . $song1 . '", "myWindow2");
}
function closeWin() {
myWindow.close();
}
openWin();
var x;
x=0;
while(x < 60){
x++;
if(x == 58){
closeWin();
}}
</script></body></html>';
echo 'player loaded';
$songtime1 = 93226;
$songtime2 = 77600;
$songtime3 = 110626;
while($x != $songtime1){
$x++;
echo $x . '<br>';
usleep(1000);
}
?>
session_start();
set_time_limit(0);
$song1 = '0Dzwok10UWrx7038TkpduM';
$song2 = '7BfWETbNfPXqUOKf7jH5yk';
$song3 = '3CtzieC6Z6X30dhuTENQQf';
$_SESSION['link'] = "https://embed.spotify.com/?uri=spotify:track:" . $song1;
$x = 0;
echo '<!DOCTYPE html><html><body> <script>
var myWindow;
var myWindow2;
function openWin() {
myWindow = window.open("spotify:track:' . $song1 . '", "myWindow");
myWindow2 = window.open("https://embed.spotify.com/?uri=spotify:track:' . $song1 . '", "myWindow2");
}
function closeWin() {
myWindow.close();
}
openWin();
var x;
x=0;
while(x < 60){
x++;
if(x == 58){
closeWin();
}}
</script></body></html>';
echo 'player loaded';
$songtime1 = 93226;
$songtime2 = 77600;
$songtime3 = 110626;
while($x != $songtime1){
$x++;
echo $x . '<br>';
usleep(1000);
}
?>
Zoals jullie zien is het zeer basisch allemaal, misschien maak ik er ooit nog een web gui bij, maar eerst maar eens dit probleem zien te vinden en op te lossen.
chrmdeb.php(chrome debug scanner)
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
<?php
session_start();
$file = 'C:\Users\XXX\AppData\Local\Google\Chrome\User Data\chrome_debug.log';
$searchtag = '/remote/pause.json?pause=true';
$searchtag2 = '/remote/pause.json?pause=false';
if(isset($_SESSION['link'])){
$searchtag3 = $_SESSION['link'];
} else {
$searchtag3 = 'url=spotify:track:';
}
if(!isset($_SESSION['pause'])){
$pause = 0;
echo 'session not set <br>';
} else {
$pause = $_SESSION['pause'];
}
$file_content = file_get_contents($file, NULL, NULL, $pause);
$file_content_play = $file_content;
$file_content_nsong = $file_content;
$x = 1;
$count = 0;
$playcounter = 0;
while($x != 0){
if($play === false){
if($nsong !== false){
$check = 'playing<br>';
$_SESSION['playing'] = 1;
$_SESSION['paused'] = 0;
} else {
$check = 'pauzed<br>';
$_SESSION['playing'] = 0;
$_SESSION['paused'] = 1;
}
} else {
$check = 'playing<br>';
};
if($pauze === false){
break;
};
$x++;
$count++;
$pauze = strpos($file_content, $searchtag);
$file_content2 = substr($file_content, $pauze+50);
$file_content = $file_content2;
echo '[' .$pauze . '] [pauze][' . $x . ']<br>';
$play = strpos($file_content_play, $searchtag2);
$file_content2_play = substr($file_content_play, $play+50);
$file_content_play = $file_content2_play;
echo '[' . $play . '] [play][' . $x . ']<br>';
$nsong= strpos($file_content_nsong, $searchtag3);
$file_content2_nsong = substr($file_content_nsong, $nsong+50);
$file_content_nsong = $file_content2_nsong;
echo $nsong . ' [newsong][' . $x . ']<br>';
echo 'XXXX---' . $pause . '----XXXX<br>';
if($nsong === false){
$_SESSION['pause'] = $pauze + $_SESSION['pause'];
} else {
$_SESSION['pause'] = $pauze + $_SESSION['pause'] + $nsong;
}
};
echo 'Music is: ' . $check . '<br>total found: ' . $count . ' <br> total play found: ' . $playcounter . '<meta http-equiv="refresh" content="1">';
?>
session_start();
$file = 'C:\Users\XXX\AppData\Local\Google\Chrome\User Data\chrome_debug.log';
$searchtag = '/remote/pause.json?pause=true';
$searchtag2 = '/remote/pause.json?pause=false';
if(isset($_SESSION['link'])){
$searchtag3 = $_SESSION['link'];
} else {
$searchtag3 = 'url=spotify:track:';
}
if(!isset($_SESSION['pause'])){
$pause = 0;
echo 'session not set <br>';
} else {
$pause = $_SESSION['pause'];
}
$file_content = file_get_contents($file, NULL, NULL, $pause);
$file_content_play = $file_content;
$file_content_nsong = $file_content;
$x = 1;
$count = 0;
$playcounter = 0;
while($x != 0){
if($play === false){
if($nsong !== false){
$check = 'playing<br>';
$_SESSION['playing'] = 1;
$_SESSION['paused'] = 0;
} else {
$check = 'pauzed<br>';
$_SESSION['playing'] = 0;
$_SESSION['paused'] = 1;
}
} else {
$check = 'playing<br>';
};
if($pauze === false){
break;
};
$x++;
$count++;
$pauze = strpos($file_content, $searchtag);
$file_content2 = substr($file_content, $pauze+50);
$file_content = $file_content2;
echo '[' .$pauze . '] [pauze][' . $x . ']<br>';
$play = strpos($file_content_play, $searchtag2);
$file_content2_play = substr($file_content_play, $play+50);
$file_content_play = $file_content2_play;
echo '[' . $play . '] [play][' . $x . ']<br>';
$nsong= strpos($file_content_nsong, $searchtag3);
$file_content2_nsong = substr($file_content_nsong, $nsong+50);
$file_content_nsong = $file_content2_nsong;
echo $nsong . ' [newsong][' . $x . ']<br>';
echo 'XXXX---' . $pause . '----XXXX<br>';
if($nsong === false){
$_SESSION['pause'] = $pauze + $_SESSION['pause'];
} else {
$_SESSION['pause'] = $pauze + $_SESSION['pause'] + $nsong;
}
};
echo 'Music is: ' . $check . '<br>total found: ' . $count . ' <br> total play found: ' . $playcounter . '<meta http-equiv="refresh" content="1">';
?>
Door je sessie handmatig te sluiten met session_write_close kunnen de andere requests behandeld worden. Alleen, dat betekent dus wel dat je GEEN acties meer kunt doen op de SESSION array. In je tweede script staan een aantal schrijf acties in de sessie, dat kan dan dus niet.
oftewel, nog omslagtiger te werk gaan, let the fun begin
Edit, een beetje omslachtig, maar het werkt wel, COOKIES FTW!
Gewijzigd op 20/06/2014 15:25:28 door RareAMV Unknown
Wat wellicht beter is is om de data niet in een sessie te stoppen, maar in een database. Daar heb je dat probleem niet. Dan heb je alleen de sessie nodig om een uniek id op te vragen waaronder je het kan vinden in de database, maar dat is dan openen, lezen, sluiten.
In iedergeval bedankt voor de suggestie en de hulp!
Toevoeging op 20/06/2014 15:27:22:
RareAMV Unknown op 20/06/2014 15:26:20:
Oh, had ook gekund, ik heb nu wat geprobeerd met cookies, werkt in iedergeval nu wel.
In iedergeval bedankt voor de suggestie en de hulp!
In iedergeval bedankt voor de suggestie en de hulp!
Gewijzigd op 20/06/2014 15:26:53 door RareAMV Unknown