webForumDet fria alternativet

fseek på http://

12 svar · 387 visningar · startad av Snakes

SnakesMedlem sedan okt. 2004392 inlägg
#1

Hur kan jag lösa detta?

	$mp3 = "http://www.site.com/songname.mp3";
	$file2 = "";
	$file2 = fopen($mp3,'r');
	fseek($file2, -128, SEEK_END);

	$tag = fread($file2, 3);

	if($tag == "TAG"){
		$songtitle = trim(fread($file2, 30));
		$artist = trim(fread($file2, 30));
		$album = trim(fread($file2, 30));
		$year = trim(fread($file2, 4));
		$comment = trim(fread($file2, 30));
		$genre = $genre_arr[ord(trim(fread($file2, 1)))];
	} else {
		echo"$mp3 does not contain an ID3v1 tag!";
	}

Notera att det finns med fseek där uppe och adressen till mp3 låten börjar på http:// (alltså en annan hemsida).

PHP-manualen skrev:

May not be used on file pointers returned by fopen() if they use the "http://" or "ftp://" formats.

Tackar i förhand!

spangoMedlem sedan juni 20008 205 inlägg
#2

Du får kopiera ner filen till det lokala filsystemet om du vill använda resten av koden omodifierad.

SnakesMedlem sedan okt. 2004392 inlägg
#3

Jag har inte "råd" med det.... det är inte den ända filen... det finns ett par 100 till!...

spangoMedlem sedan juni 20008 205 inlägg
#4

Jobbigt för dig. Då får du läsa in filen i en sträng, och sedan arbeta med den strängen. Kom ihåg bara att du antagligen inte vill hålla en hel MP3:a i arbetsminnet, men lite smart buffring borde kunna lösa det. Det är dock fortfarande ganska långsamt eftersom hela filen tankas ner via nätverket. Jag tror att det finns något i HTTP-protokollet som låter en tanka ner bara en bestämd del av en fil, men då får du börja använda sockets och göra egna HTTP-anrop etc.

SnakesMedlem sedan okt. 2004392 inlägg
#5

Och hur gör man det?

Tack för dem snabba svaren förresten!

spangoMedlem sedan juni 20008 205 inlägg
#6

Hur gör man vilket? Läsa in hela filen eller egna HTTP-anrop? För det förra är det bara att kolla på manualen under filhantering (fread är en bra funktion), för det senare, kolla socketsdelen. Båda kräver en del kodning. Ha det så kul! ;)

SnakesMedlem sedan okt. 2004392 inlägg
#7

Jag har aldrig jobbat med socket... vet inte hur dem fungerar...

Kan du infoga en kod snutte hur det kan se ut med socket...ett exempel...

Om det går bra alltså!

Tack!

spangoMedlem sedan juni 20008 205 inlägg
#8

Det finns en utmärkt manual att läsa...
http://se.php.net/manual/en/ref.sockets.php

SnakesMedlem sedan okt. 2004392 inlägg
#9

Haha... du har väl ingen aning om hur en kod snutte kan se ut?..

Jag har redan läst länken... men jag har fortfarande svårt att hitta hur det kan hjälpa mig.

SnakesMedlem sedan okt. 2004392 inlägg
#10

Om ingen vet nåt annat sätt... då kan jag hitta på ett själv... men för att göra det måste jag veta vad detta gör

fseek($file2, -128, SEEK_END);

Någon som har en aning om vad /\ det gör???

GunnarDMedlem sedan juni 20014 290 inlägg
#11

Flyttar filpekaren 128 bytes från filens slut.

SnakesMedlem sedan okt. 2004392 inlägg
#12

Finns det inte ett annat sätt och flytta filpekaren???... är fseek det ända sättet???

Ingen som vet nåt?

spangoMedlem sedan juni 20008 205 inlägg
#13

Eftersom det egentligen inte används en filpekare (utan i stället sockets, som är "enkelriktade") när man öppnar filer över http med fopen, så nej.

129 ms totalt · 3 externa anrop · v20260731065814-full.30151723
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
127 ms — hämta tråd, inlägg och bilagor (db)