forum

Question pour un projet

posted
Total Posts
5
Topic Starter
Arnold0
Salut,
Voila j'ai commencé un petit projet en rapport avec osu!, et j'aimerais savoir si il y'a un moyen simple de remplir une BDD avec les données de toutes les maps du jeu?
En effet, je ne vais pas vous spoiler, car je ne suis pas sur de réussir mais a un moment mon projet devra proposer une map automatiquement. Je pensait donc avoir une BDD avec les maps, et avec un nombre choisis aléatoirement, tester si ce nombre existe comme ID de map dans la BDD et si c'est le cas la choisir.
Mais bon j'ai pas envie de me taper des heures a copier une par une toutes les maps dans la BDD...
Une idée SVP ? :P
Sushi
2 choix :
1 - tu demandes à peppy comment il construit sa base de donnée de map en local (j'imagine qu'il y en a une vu le temps de chargement)
2 - Tu fais un scan manuel des dossiers (tu peux récupérer un des .osu qui sont dans la map pour avoir les infos). Ce serait un truc a faire genre la 1ere fois, puis tu pourrais faire un genre de tri par date pour voir les dernieres modifs (pour éviter le rechargement intempestifs)
Topic Starter
Arnold0
Je pense réussir a m'en sortir, en chargent toutes les pages des maps du site de la map 0 a 100000, en en vérifiant si la map existe et si elle est ranked ou pas? J'ai déjà sa me reste plus qu'a extraire le titre et faire la commande mysql pour ajouter dans la bdd.

EDIT :
Yes j'ai réussi :P
Bon c'est un peu lent comme sa prend sur le site mais sa marche :)


V'la le code si sa en interesse, et j'ai contré un bug en trichant pour que ça marche lool
<html>
<head>
</head>
<body>
<?php
include 'config.php';
$numeromap=2;
//echo $html;
$noexist="The beatmap you are looking for was not found!";
$noranked="Not yet played!";
$bml="Beatmap Listing";
$trouve='</h1>';
while($numeromap<100000)
{
$html=file_get_contents("http://osu.ppy.sh/s/$numeromap");
if(strstr($html, $noexist))
{
echo "Beatmap qui existe pas<br>";
}
else
{
echo "Beatmap qui existe<br>";
if (strstr($html, $noranked))
{
echo "Beatmap pas ranked<br>";
}
else
{
echo "Beatmap ranked<br>";
$map = stristr($html, $bml);
$pos = strpos($map, $trouve);
$pos=$pos-28;
$map=substr($map,28,$pos);
echo "$map<br>";
set_time_limit(1000);
mysql_connect($bddhost,$bdduser,$bddpassword) or die("Database not available. Please contact me if you see this. Mysql error : " . mysql_error());
mysql_select_db($bddname) or die ("The database couldn't be selected. Please contact me if you see this. Mysql error : " . mysql_error());
$req="INSERT INTO osu.maps (ID,URL,Nom) values ($numeromap,".'"'."http://osu.ppy.sh/s/$numeromap".'"'.",".'"'.$map.'"'.");";
echo $req;
mysql_query($req) or die ("Erreur while writing in the database. " . mysql_error());
}
}
$numeromap=$numeromap+1;
}
?>
</body>
</html>

Les messages en anglaise please contact me dans les commandes de BDD c'est car j'ai juste copié du projet les lignes plutôt que de les refaire X)
Le set time limit c'est juste pour que le php ne se stop pas car sinon au bout de 30 sec il s'arrête, et c'est bien plus long que sa a se faire.
Sushi
Oh c'est dans ce sens la que tu voulais le dire, je vois =w= Au départ je pensais que c'était en local sur le PC, d'où ma confusion...
Topic Starter
Arnold0
Pas grave ;)
En fait je voulais l'URL et le nom de la map, pour pouvoir proposer aléatoirement une map a ceux qui utiliseront le projet et pouvoir leur donner le nom de la map et le lien pour la télécharger :)
(Vous comprendrez si j'arrive a le finir :P)

EDIT :
Fumie Kumatani - Theme of "E-102y"
INSERT INTO osu.maps (ID,URL,Nom) values (3110,"http://osu.ppy.sh/s/3110","Fumie Kumatani - Theme of "E-102y"");Erreur while writing in the database. You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'E-102y"")' at line 1
Lol le nom de la map avec des guillemets dedans qui me plante mon truc ^^"
Please sign in to reply.

New reply