Drop pyspy and use sessions for server player listing

This commit is contained in:
Trever Fischer
2012-04-16 17:37:41 -04:00
parent 9a6e98f988
commit b843140863
2 changed files with 4 additions and 19 deletions

View File

@@ -34,7 +34,6 @@ Finally, create a superuser account:
# Dependencies
* shortuuid
* pyspy
* PIL
* django-mptt
* django-messaging

View File

@@ -1,7 +1,6 @@
from django.db import models
from django.contrib.auth.models import User, Group
from django.db.models.signals import post_save
import pyspy
from django.core.cache import cache
from django.core.exceptions import ObjectDoesNotExist
import socket
@@ -41,23 +40,10 @@ class Server(models.Model):
)
def online_players(self):
players = cache.get('minecraftPlayerList-%s:%s'%(self.hostname, self.query_port))
if players is None:
players = []
try:
client = pyspy.GamespyClient(self.hostname, self.query_port)
# FIXME: pyspy sometimes hangs here
#client.update()
pList = client.players()
for p in pList:
try:
player = MinecraftProfile.objects.get(mc_username__exact = p)
except ObjectDoesNotExist, e:
player = MinecraftProfile()
player.mc_username = p
cache.set('minecraftPlayerList-%s:%s'%(self.hostname, self.query_port), players, 10)
except socket.error:
pass
activeSessions = PlayerSession.objects.all().filter(end=None)
players = []
for s in activeSessions:
players.append(s.player)
return players
def __unicode__(self):