• 1
  • 16
  • 17
  • 18(current)
  • 19
  • 20
Begging scripters for internet-TV "links" script...
mby2j Wrote:Hi, just a quick question, some of the links open using the dvd player rather than mplayer and therefore crash (you can tell its using dvd player because there is no buffer and the streams crashes within 3-5 seconds). When you manually change it so it that particular link then opens in mplayer it works fine. Is there any way you can set it so that all links automatically open using mplayer?

Is this the TV Links script? I never knew any use the dvd player... But the other script (Cant remember the long name) Does use DVD player on some videos...

It would be much betetr having mplayer used as default. If a coder could change this it would be great
Reply
Unbehagen Wrote:change the www2.tv-links.co.uk to http://www.tv-links.co.uk and it works again

thanks for the heads up on changing the script....it works again Big Grin
Reply
dafunks Wrote:Is this the TV Links script? I never knew any use the dvd player... But the other script (Cant remember the long name) Does use DVD player on some videos...

It would be much betetr having mplayer used as default. If a coder could change this it would be great

Sorry, I should have made myself a bit clearer. I am using the 'new' plugin of tv links where you see the links in the video folder rather than using the script.
Reply
mby2j Wrote:Sorry, I should have made myself a bit clearer. I am using the 'new' plugin of tv links where you see the links in the video folder rather than using the script.

Sorry, there doesn't seem to be any way to change the default player yet. This would be an important feature for me as well.
Reply
kpatm Wrote:I take it you mean in the default.py file hagen?

Yes, the default.py. Here is a new one.
Code:
import os,sys,urllib,time,re,socket,string,traceback,xbmcplugin,xbmcgui



ROOT_DIR = os.getcwd()[:-1]+'\\'



dialogProgress = xbmcgui.DialogProgress()



class TVLink:

    def __init__(self):

        try:

            self.Cats = ["Shows", "Cartoons", "Documentaries", "Anime", "Movies", "Music Videos"]

            self.Links = ["http://www.tv-links.co.uk/index.do/1", "http://www.tv-links.co.uk/index.do/2", "http://www.tv-links.co.uk/index.do/9", "http://www.tv-links.co.uk/index.do/3", "http://www.tv-links.co.uk/index.do/4", "http://www.tv-links.co.uk/index.do/5",]

        except Exception, e:

            traceback.print_exc(file=sys.stdout)

            dialog = xbmcgui.Dialog()

            dialog.ok("Error", "Error initializing script.\n\nReason:\n"+str(e))



    def get_list(self, url):

        try:

            self.list = {}

            sock = urllib.urlopen(url)

            htmlSource = sock.read()

            sock.close()

            reCAT = re.compile('<div class="ctr"><em id="letter">(.+?)</em></div>\n\s+</div>\n\s+</div>\n\s+</div>\n\s+<ul>(.+?)</ul>', re.DOTALL)

            reLIST = re.compile('<a href="/listings/(.+?)">(.+?)</a>', re.DOTALL)

            list = {}

            for i in reCAT.finditer(htmlSource):

                links = {}

                for x in reLIST.finditer(i.group(2)):

                    links[x.group(2)] = 'http://www.tv-links.co.uk/listings/' + x.group(1)

                list[i.group(1)] = links

            return list

        except Exception, e:

            traceback.print_exc(file=sys.stdout)

            dialog = xbmcgui.Dialog()

            dialog.ok("Error", "Playlist could not be opened.\n\nReason:\n"+str(e))



    

    def get_eps(self, url):

        try:

            self.list = {}

            self.morder = {}

            sock = urllib.urlopen(url)

            htmlSource = sock.read()

            sock.close()

            reEP = re.compile('<h4>(.+?)</h4>\n\s+<table cellspacing="0" cellpadding="2" border="0">(.+?)</table>', re.DOTALL)

            reSINGEP = re.compile('<tr>\n\s+<td>\n\s+(.+?)\s\n\s+</td>\n\s+<td>(.+?)</td>.+?</tr>', re.DOTALL)

            reSINGEPNAME = re.compile('<a target="_blank" href="(.+?)" onclick=".+?">(.+?)</a>', re.DOTALL)

            rePART = re.compile('^Part \d', re.DOTALL)

            last = "";

            for i in reEP.finditer(htmlSource):

                links = {}

                a = 0

                order = {}

                for x in reSINGEP.finditer(i.group(2)):

                    for y in reSINGEPNAME.finditer(x.group(2)):

                        name = y.group(2)

                        if rePART.search(name):

                            name = last+" "+name

                        else:

                            last = y.group(2)

                        order[a] = x.group(1)+" "+name

                        a = a+1

                        links[x.group(1)+" "+name] = 'http://www.tv-links.co.uk'+y.group(1)

                self.list[i.group(1)] = links

                self.morder[i.group(1)] = order

        except Exception, e:

                traceback.print_exc(file=sys.stdout)

                dialog = xbmcgui.Dialog()

                dialog.ok("Error", "Unable to look up episodes.\n\nReason:\n"+str(e))



    def addLink(self,name,url):

        listitem=xbmcgui.ListItem( name )

        if len(name)<20:

                name=name+"                           "

        liz=xbmcgui.ListItem(name)

        ok=xbmcplugin.addDirectoryItem(handle=self.handle,url=url,listitem=liz)

    

    def addDir(self,name,url,code,letter=" "):

        #url = "%s?genre=%d&title=%s&mode=%d&quality=%d" % ( sys.argv[ 0 ], genre[ 0 ], genre[ 1 ], 0, 2, )

        u=sys.argv[0]+"?code="+str(code)+"&url="+urllib.quote(url)+"&letter="+letter+"/"

        if len(name)<20:

                name=name+"                           "

        liz=xbmcgui.ListItem(name)

        xbmcplugin.addDirectoryItem(handle=self.handle,url=u,listitem=liz,isFolder=True)

        

    def get_link(self, url):

        link = ""

        try:

            sock = urllib.urlopen(url)

            htmlSource = sock.read()

            sock.close()

            reDIVX = re.compile('http://www([0-9]?)\.tv-links\.co\.uk/video/(.+?)\.divx', re.DOTALL)

            reFLV = re.compile('videoFile: \'(.+?)\'', re.DOTALL)

            reSWF = re.compile('<embed type="application/x-shockwave-flash" src="(.+?)"', re.DOTALL)

            divx = reDIVX.search(htmlSource)

            flv = reFLV.search(htmlSource)

            swf = reSWF.search(htmlSource)

            if divx:

                link = "http://www2.tv-links.co.uk/video/"+divx.group(2)+".divx"

            elif flv:

                link = flv.group(1)

            elif swf:

                link = swf.group(1)

            mySocket = socket.socket ( socket.AF_INET, socket.SOCK_STREAM )

            mySocket.connect ( ( 'www2.tv-links.co.uk', 80 ) )

            mySocket.send ( "GET "+link+" HTTP/1.1\r\nHost: www2.tv-links.co.uk\r\nUser-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.4) Gecko/20070515 Firefox/2.0.0.4\r\nAccept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5\r\nAccept-Language: en-us,en;q=0.5\r\nAccept-Encoding: gzip,deflate\r\nAccept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7\r\nKeep-Alive: 300\r\nConnection: keep-alive\r\n\r\n" )

            htmlSource = mySocket.recv ( 1000 )

            mySocket.close()

            reLOC = re.compile("Location: (.+?)\r\n", re.DOTALL)

            LOC = reLOC.search(htmlSource)

            if LOC:

                link = LOC.group(1)

            if swf:

                reGUBA = re.compile('http://www\.guba\.com/f/root\.swf\?isEmbeddedPlayer=false&bid=(.+?)$', re.DOTALL)

                reDM = re.compile('http%3A%2F%2Fwww\.dailymotion\.com%2Fget%2F14%2F320x240%2Fflv%2F(.+?)%3Fkey%3D(.+?)&prev', re.DOTALL)

                reGOOGLE = re.compile('http://video\.google\.com/googleplayer\.swf\?.+?%3Fversion%3D(.+?)%26secureurl%3D(.+?)%26', re.DOTALL)

                GUBA = reGUBA.search(link)

                DM = reDM.search(link)

                GOOGLE = reGOOGLE.search(link)

                if GUBA:

                    resubGUBA = re.compile('^(\d).+?$', re.DOTALL)

                    subGUBA = resubGUBA.search(GUBA.group(1))

                    num = int(subGUBA.group(1)) - 1

                    link = "http://free.guba.com/download/flash/1/"+str(num)+"/"+GUBA.group(1)+"/"

                elif DM:

                    link = "http://www.dailymotion.com/get/14/320x240/flv/"+DM.group(1)+"?key="+DM.group(2)+""

                elif GOOGLE:

                    link = "http://vp.video.google.com/videodownload?version="+GOOGLE.group(1)+"&secureurl="+GOOGLE.group(2)

        except Exception, e:

                dialog = xbmcgui.Dialog()

                dialog.ok("Error", "Playlist could not be opened.\n\nReason:\n"+str(e))

        return link



    def onControl(self, code, url,letter=''):

        try:

            if code == -1:

                for i in range(len(self.Cats)):

                    self.addDir(self.Cats[i],self.Links[i],0)

            if code == 0:

                list=self.get_list(url)

                for x in sorted(list):

                        if (len(x)>0):

                            for y in list[x]:

                                self.addDir(y,list[x][y],1)

            if code == 1:

                self.get_eps(url)

                for y in sorted(self.list):

                    self.addDir(y,url,2,y)

            if code == 2:

                self.get_eps(url)

                for z in self.morder[letter]:

                    name=self.morder[letter][z]

                    link=self.get_link(self.list[letter][self.morder[letter][z]])

                    self.addLink(name,link)

                    #self.addDir(name,link,4,name)

        except Exception, e:

                traceback.print_exc(file=sys.stdout)

                dialog = xbmcgui.Dialog()

                dialog.ok("Error", "Error in onControl.\n\nReason:\n"+str(e))



    def run(self):

        try:

            self.handle=int(sys.argv[1])

            paramstring=sys.argv[2]

            if len(paramstring)<=2:

                self.onControl(-1,"")

            else:

                params=sys.argv[2]

                cleanedparams=params.replace('?','')

                if (params[len(params)-1]=='/'):

                    params=params[0:len(params)-2]

                pairsofparams=cleanedparams.split('&')

                param={}

                for i in range(len(pairsofparams)):

                    splitparams={}

                    splitparams=pairsofparams[i].split('=')

                    if (len(splitparams))==2:

                        param[splitparams[0]]=splitparams[1]

                code=int(param['code'])

                url=urllib.unquote_plus(param['url'])

                letter=param['letter']

                self.onControl(code,url,letter)

        except Exception, e:

                traceback.print_exc(file=sys.stdout)

                dialog = xbmcgui.Dialog()

                dialog.ok("Error", "Error running script.\n\nReason:\n"+str(e))



tvl=TVLink()

tvl.run()

xbmcplugin.endOfDirectory(int(sys.argv[1]))
Reply
Unbehagen Wrote:Yes, the default.py. Here is a new one.
sorry for the newlines...no possibility to edit posts.
Code:
import os,sys,urllib,time,re,socket,string,traceback
import xbmcplugin,xbmcgui

ROOT_DIR = os.getcwd()[:-1]+'\\'
dialogProgress = xbmcgui.DialogProgress()
class TVLink:
    def __init__(self):
        try:
            self.Cats = ["Shows", "Cartoons", "Documentaries", "Anime", "Movies", "Music Videos"]
            self.Links = ["http://www.tv-links.co.uk/index.do/1", "http://www.tv-links.co.uk/index.do/2", "http://www.tv-links.co.uk/index.do/9", "http://www.tv-links.co.uk/index.do/3", "http://www.tv-links.co.uk/index.do/4", "http://www.tv-links.co.uk/index.do/5",]
        except Exception, e:
            traceback.print_exc(file=sys.stdout)
            dialog = xbmcgui.Dialog()
            dialog.ok("Error", "Error initializing script.\n\nReason:\n"+str(e))
    def get_list(self, url):
        try:
            self.list = {}
            sock = urllib.urlopen(url)
            htmlSource = sock.read()
            sock.close()
            reCAT = re.compile('<div class="ctr"><em id="letter">(.+?)</em></div>\n\s+</div>\n\s+</div>\n\s+</div>\n\s+<ul>(.+?)</ul>', re.DOTALL)
            reLIST = re.compile('<a href="/listings/(.+?)">(.+?)</a>', re.DOTALL)
            list = {}
            for i in reCAT.finditer(htmlSource):
                links = {}
                for x in reLIST.finditer(i.group(2)):
                    links[x.group(2)] = 'http://www.tv-links.co.uk/listings/' + x.group(1)
                list[i.group(1)] = links
            return list
        except Exception, e:
            traceback.print_exc(file=sys.stdout)
            dialog = xbmcgui.Dialog()
            dialog.ok("Error", "Playlist could not be opened.\n\nReason:\n"+str(e))

    def get_eps(self, url):
        try:
            self.list = {}
            self.morder = {}
            sock = urllib.urlopen(url)
            htmlSource = sock.read()
            sock.close()
            reEP = re.compile('<h4>(.+?)</h4>\n\s+<table cellspacing="0" cellpadding="2" border="0">(.+?)</table>', re.DOTALL)
            reSINGEP = re.compile('<tr>\n\s+<td>\n\s+(.+?)\s\n\s+</td>\n\s+<td>(.+?)</td>.+?</tr>', re.DOTALL)
            reSINGEPNAME = re.compile('<a target="_blank" href="(.+?)" onclick=".+?">(.+?)</a>', re.DOTALL)
            rePART = re.compile('^Part \d', re.DOTALL)
            last = "";
            for i in reEP.finditer(htmlSource):
                links = {}
                a = 0
                order = {}
                for x in reSINGEP.finditer(i.group(2)):
                    for y in reSINGEPNAME.finditer(x.group(2)):
                        name = y.group(2)
                        if rePART.search(name):
                            name = last+" "+name
                        else:
                            last = y.group(2)
                        order[a] = x.group(1)+" "+name
                        a = a+1
                        links[x.group(1)+" "+name] = 'http://www.tv-links.co.uk'+y.group(1)
                self.list[i.group(1)] = links
                self.morder[i.group(1)] = order
        except Exception, e:
                traceback.print_exc(file=sys.stdout)
                dialog = xbmcgui.Dialog()
                dialog.ok("Error", "Unable to look up episodes.\n\nReason:\n"+str(e))

    def addLink(self,name,url):
        listitem=xbmcgui.ListItem( name )
        if len(name)<20:
                name=name+"                           "
        liz=xbmcgui.ListItem(name)
        ok=xbmcplugin.addDirectoryItem(handle=self.handle,url=url,listitem=liz)

    def addDir(self,name,url,code,letter=" "):
        #url = "%s?genre=%d&title=%s&mode=%d&quality=%d" % ( sys.argv[ 0 ], genre[ 0 ], genre[ 1 ], 0, 2, )
        u=sys.argv[0]+"?code="+str(code)+"&url="+urllib.quote(url)+"&letter="+letter+"/"
        if len(name)<20:
                name=name+"                           "
        liz=xbmcgui.ListItem(name)
        xbmcplugin.addDirectoryItem(handle=self.handle,url=u,listitem=liz,isFolder=True)
        
    def get_link(self, url):
        link = ""
        try:
            sock = urllib.urlopen(url)
            htmlSource = sock.read()
            sock.close()
            reDIVX = re.compile('http://www([0-9]?)\.tv-links\.co\.uk/video/(.+?)\.divx', re.DOTALL)
            reFLV = re.compile('videoFile: \'(.+?)\'', re.DOTALL)
            reSWF = re.compile('<embed type="application/x-shockwave-flash" src="(.+?)"', re.DOTALL)
            divx = reDIVX.search(htmlSource)
            flv = reFLV.search(htmlSource)
            swf = reSWF.search(htmlSource)
            if divx:
                link = "http://www2.tv-links.co.uk/video/"+divx.group(2)+".divx"
            elif flv:
                link = flv.group(1)
            elif swf:
                link = swf.group(1)
            mySocket = socket.socket ( socket.AF_INET, socket.SOCK_STREAM )
            mySocket.connect ( ( 'www2.tv-links.co.uk', 80 ) )
            mySocket.send ( "GET "+link+" HTTP/1.1\r\nHost: www2.tv-links.co.uk\r\nUser-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.4) Gecko/20070515 Firefox/2.0.0.4\r\nAccept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5\r\nAccept-Language: en-us,en;q=0.5\r\nAccept-Encoding: gzip,deflate\r\nAccept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7\r\nKeep-Alive: 300\r\nConnection: keep-alive\r\n\r\n" )
            htmlSource = mySocket.recv ( 1000 )
            mySocket.close()
            reLOC = re.compile("Location: (.+?)\r\n", re.DOTALL)
            LOC = reLOC.search(htmlSource)
            if LOC:
                link = LOC.group(1)
            if swf:
                reGUBA = re.compile('http://www\.guba\.com/f/root\.swf\?isEmbeddedPlayer=false&bid=(.+?)$', re.DOTALL)
                reDM = re.compile('http%3A%2F%2Fwww\.dailymotion\.com%2Fget%2F14%2F320x240%2Fflv%2F(.+?)%3Fkey%3D(.+?)&prev', re.DOTALL)
                reGOOGLE = re.compile('http://video\.google\.com/googleplayer\.swf\?.+?%3Fversion%3D(.+?)%26secureurl%3D(.+?)%26', re.DOTALL)
                GUBA = reGUBA.search(link)
                DM = reDM.search(link)
                GOOGLE = reGOOGLE.search(link)
                if GUBA:
                    resubGUBA = re.compile('^(\d).+?$', re.DOTALL)
                    subGUBA = resubGUBA.search(GUBA.group(1))
                    num = int(subGUBA.group(1)) - 1
                    link = "http://free.guba.com/download/flash/1/"+str(num)+"/"+GUBA.group(1)+"/"
                elif DM:
                    link = "http://www.dailymotion.com/get/14/320x240/flv/"+DM.group(1)+"?key="+DM.group(2)+""
                elif GOOGLE:
                    link = "http://vp.video.google.com/videodownload?version="+GOOGLE.group(1)+"&secureurl="+GOOGLE.group(2)
        except Exception, e:
                dialog = xbmcgui.Dialog()
                dialog.ok("Error", "Playlist could not be opened.\n\nReason:\n"+str(e))
        return link

    def onControl(self, code, url,letter=''):
        try:
            if code == -1:
                for i in range(len(self.Cats)):
                    self.addDir(self.Cats[i],self.Links[i],0)
            if code == 0:
                list=self.get_list(url)
                for x in sorted(list):
                        if (len(x)>0):
                            for y in list[x]:
                                self.addDir(y,list[x][y],1)
            if code == 1:
                self.get_eps(url)
                for y in sorted(self.list):
                    self.addDir(y,url,2,y)
            if code == 2:
                self.get_eps(url)
                for z in self.morder[letter]:
                    name=self.morder[letter][z]
                    link=self.get_link(self.list[letter][self.morder[letter][z]])
                    self.addLink(name,link)
                    #self.addDir(name,link,4,name)
        except Exception, e:
                traceback.print_exc(file=sys.stdout)
                dialog = xbmcgui.Dialog()
                dialog.ok("Error", "Error in onControl.\n\nReason:\n"+str(e))

    def run(self):
        try:
            self.handle=int(sys.argv[1])
            paramstring=sys.argv[2]
            if len(paramstring)<=2:
                self.onControl(-1,"")
            else:
                params=sys.argv[2]
                cleanedparams=params.replace('?','')
                if (params[len(params)-1]=='/'):
                    params=params[0:len(params)-2]
                pairsofparams=cleanedparams.split('&')
                param={}
                for i in range(len(pairsofparams)):
                    splitparams={}
                    splitparams=pairsofparams[i].split('=')
                    if (len(splitparams))==2:
                        param[splitparams[0]]=splitparams[1]
                code=int(param['code'])
                url=urllib.unquote_plus(param['url'])
                letter=param['letter']
                self.onControl(code,url,letter)
        except Exception, e:
                traceback.print_exc(file=sys.stdout)
                dialog = xbmcgui.Dialog()
                dialog.ok("Error", "Error running script.\n\nReason:\n"+str(e))

tvl=TVLink()
tvl.run()
xbmcplugin.endOfDirectory(int(sys.argv[1]))
Reply
I am currently having a slight problem with the TV-links script on my XBOX. It seems to be working fine, however it seems to cut out after say 3 or 4 minutes of a program. Was wondering if anyone knew how to rectify this problem.
Reply
dan_f14 Wrote:I am currently having a slight problem with the TV-links script on my XBOX. It seems to be working fine, however it seems to cut out after say 3 or 4 minutes of a program. Was wondering if anyone knew how to rectify this problem.

If it's Veoh then there's nothing you can do about it.. Veoh has these 5 minutes preview links. But maybe it's a cache problem. DVDPlayer doesn't seem to use the cache, so try to play it via white button->play using...->mplayer.
Reply
Unbehagen Wrote:If it's Veoh then there's nothing you can do about it.. Veoh has these 5 minutes preview links. But maybe it's a cache problem. DVDPlayer doesn't seem to use the cache, so try to play it via white button->play using...->mplayer.
I presume by using the white button I would need to use the plugin as I cannot use the white button on the script.
Reply
dan_f14 Wrote:I presume by using the white button I would need to use the plugin as I cannot use the white button on the script.
Ah, sorry, didn't read carefully enough. The script should already be using Mplayer. Maybe you can try messing with the XBMC cache settings then. Are these veoh links you're talking about?
Reply
No problem, I didn't exactly explain myself very clearly. I have put the cache settings on full for the Video Cache - Internet (16384kb) and Audio Cache - Internet (4096kb) as well as the Unknown type Cache - Internet (16384kb). Do I need to alter any of the other Cache settings? I am not sure what veoh links are. I have basically tried to watch the pilot episode of Prison Break. There are two providers I have used, 56.com and Stage6. Both of these have just cut out back to the menu after around 5 minutes. I have also tried an episode of Family Guy to see if it was either the Prison Break links or the length which caused it to cut out. However the Family Guy episode also cut out around that time.
Reply
dan_f14 Wrote:No problem, I didn't exactly explain myself very clearly. I have put the cache settings on full for the Video Cache - Internet (16384kb) and Audio Cache - Internet (4096kb) as well as the Unknown type Cache - Internet (16384kb). Do I need to alter any of the other Cache settings? I am not sure what veoh links are. I have basically tried to watch the pilot episode of Prison Break. There are two providers I have used, 56.com and Stage6. Both of these have just cut out back to the menu after around 5 minutes. I have also tried an episode of Family Guy to see if it was either the Prison Break links or the length which caused it to cut out. However the Family Guy episode also cut out around that time.
I have managed to find a semi solution to the problem by increasing the cache on everything to the maximum. It still cuts out occasionally but much further through. I think that might be more to do with my internet connection then anything else as it is not the best. However I am slightly confused as I thought it would pause and start buffering (which it does occasionally) rather than cut out completely. Unless the cutting out part way through is another problem (which I don't think it is as the increase in the cache seemed to partly solve this problem). I was therefore wondering if it was possible to increase the cache over the 16384kb limit and if so how?
Reply
Rainbow 
I'm thinking of attempting a personal project to edit this script for use on Pocket PC's with python.

Are there any other python coders out there who have a pocket PC and could help with the work/mentor me in doing this?

I'm basically thinking of stripping out everything from the script that isn't actually condensing the link or processing the website layout.

Putting a new frontend on it that works for PPC...

and then passing the links to TCPMP (http://tcpmp-plugin-for-flash-video.en.s...com/pocket)

which should handle flv's mpegs divx and hopfully most of the other main formats we encounter......If not it's a case of find a program that will work and pass to that.

This would be extremely useful for those of us with internet on our pdaphones (like t-mobile w'n'w in the uk) :-D
Reply
TheBoxMan Wrote:I'm basically thinking of stripping out everything from the script that isn't actually condensing the link or processing the website layout.

Then you should use the plugins as a start rather than the scripts. The plugins don't contain any GUI stuff.
Reply
Rainbow 
Thanks for the tip. That's a very good point Wink

I've never looked at the plugin scripts because I havn't yet updated my XBMC to the latest SVN (it's the one from just before you guys implemented it).

Actually it will probably be quite a simple project from that startpoint.

I'm currently looking into whether TCPMP will play all of the required formats and if not which ones I will need to find other players for :-D
Reply
  • 1
  • 16
  • 17
  • 18(current)
  • 19
  • 20

Logout Mark Read Team Forum Stats Members Help
Begging scripters for internet-TV "links" script...2