Git Product home page Git Product logo

ace.bundle's People

Contributors

syco avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar

ace.bundle's Issues

can't stream from lg webos plex app...

hi,
i managed and stream videos using your channel on the plex web application, but it does not work using the webos (2.0) app:
'There was a problem playing this item.
The video did not start playing in time.
Go back'

is there a way to make it work?
thanks!

Video Never starts to play

i execute

acestreamengine --log-stdout --client-console

on my ubuntu 16. machine,

then it says
acestream.SocketHandler.SocketHandler|bind: socket bound: host=127.0.0.1 port=62062

so i set 62062 to the port in the plugin config

I click in one stream but it never starts.
What am i missing?

Variable for acestream engine location

Instead of hard coding 127.0.0.1 please could we get an editable variable so we can run the engine elsewhere (my Plex runs on FreeBSD which has no Ace Engine at the moment so it cannot run on the localhost)
Would be good to have this under the cog for the plugin in the plex UI

Can't get it to work on Samsung TV

Hello,
can't get it to work on my Samsung UE40MU6405 TV. Video flux will not load.

Working perfectly using Plex application on my PC, but this is not what I was looking for.
There is a pop up when starting the stream on my Plex PC application and then it start working.

But there is no pop up when I start it from my TV and the flux will not load.

I hope it'll help you.

Any idea to get it working on the TV? Thanks

Edit : Not working using the "select reader" in the top right Plex PC application to send the video flux from the PC to the TV (see the screenshot) https://i.gyazo.com/ae0548d1937be8f264743a104d178bec.png

Adding LiveTVLinks

Reddit
Any chance you can add /r/livetvlinks ?

Also, adding the ability to add our own playlist of stream links would help futureproof this a bit.

No game appear in NFL

I dont know if the problem is "at" or @
Because sometime its at or @

Example:
Game Thread: Indianapolis Colts at Kansas City Chiefs (4:35PM ET)

Configurable Ace engine path

It seems that the ace engine path is hard coded at the moment, with only the host and port configurable. It would be nice to be able to configure the entire path.

Currently the path is:

url = 'http://{}:{}/ace/manifest.m3u8?id={}'.format(Prefs['ace_host'], Prefs['ace_port'], phpscraper['link']),

I am using https://github.com/ikatson/docker-acestream-proxy, which requires paths to be in the form
http://[SERVER_IP]:8000/pid/{channel_id}/stream.mp4

(alternatively, I'd love to be pointed in the direction of a different acestream proxy that runs in docker)

Scrape usernames

Please could you add the usernames to the scraped list?
This would help with choosing a more reliable stream from more reliable posters.
Would be good to have this under the cog for the plugin in the plex UI, option for on/off.

Adding boxing

Let me know if this works. I am not a python developer but I think it works. I like boxing so...

`from datetime import datetime, timedelta
import json
import re

def Start():
ObjectContainer.title1 = 'ACE'
HTTP.Headers['User-Agent'] = 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.85 Safari/537.36'
HTTP.CacheTime = 0
Log('Ace host: {}, Ace port: {}'.format(Prefs['ace_host'], Prefs['ace_port']))

@handler('/video/ace', 'ACE', thumb = 'logo.png', art = 'logo.png')
def MainMenu():
oc = ObjectContainer(title2 = 'ACE')
if (Prefs['show_arenavision']):
oc.add(
DirectoryObject(
key = Callback(ArenavisionList, title = 'Arenavision'),
title = 'Arenavision'
)
)
if (Prefs['show_reddit_nba']):
oc.add(
DirectoryObject(
key = Callback(RedditNBAList, title = 'Reddit/NBA'),
title = 'Reddit/NBA'
)
)
if (Prefs['show_reddit_nfl']):
oc.add(
DirectoryObject(
key = Callback(RedditNFLList, title = 'Reddit/NFL'),
title = 'Reddit/NFL'
)
)
if (Prefs['show_reddit_mma']):
oc.add(
DirectoryObject(
key = Callback(RedditMMAList, title = 'Reddit/MMA'),
title = 'Reddit/MMA'
)
)
if (Prefs['show_reddit_motorsports']):
oc.add(
DirectoryObject(
key = Callback(RedditMotorSportsList, title = 'Reddit/MotorSports'),
title = 'Reddit/MotorSports'
)
)
if (Prefs['show_reddit_soccer']):
oc.add(
DirectoryObject(
key = Callback(RedditSoccerList, title = 'Reddit/Soccer'),
title = 'Reddit/Soccer'
)
)
if (Prefs['show_reddit_boxing']):
oc.add(
DirectoryObject(
key = Callback(RedditNFLList, title = 'Reddit/Boxing'),
title = 'Reddit/Boxing'
)
)
return oc

@route('/video/ace/arenavisionlist')
def ArenavisionList(title):
oc = ObjectContainer(title2 = title)
oc.add(
DirectoryObject(
key = Callback(ArenavisionList, title = title),
title = 'Refresh'
)
)
today = '{:%d/%m/%Y}'.format(datetime.utcnow())
tomorrow = '{:%d/%m/%Y}'.format(datetime.utcnow() + timedelta(days=1))
html = HTML.ElementFromURL('http://arenavision.in/guide', '', {'Cookie': 'beget=begetok; expires=' + ('{:%a, %d %b %Y %H:%M:%S GMT}'.format(datetime.utcnow() + timedelta(seconds=19360000))) + '; path=/'})
for item in html.xpath('//tr[count(./td)>=6]'):
av_date = item.xpath('./td[1]/text()')[0].decode('UTF-8')
if today != av_date and tomorrow !=av_date:
continue
av_time = item.xpath('./td[2]/text()')[0].decode('UTF-8')
av_sport = item.xpath('./td[3]/text()')[0].decode('UTF-8')
av_tournament = item.xpath('./td[4]/text()')[0].decode('UTF-8')
av_match = item.xpath('./td[5]/text()')[0].decode('UTF-8')
av_langs = ''
urls = []
for t1 in item.xpath('./td[6]/text()'):
tokens = t1.split(' ')
av_langs = av_langs + ' ' + tokens[1]
for c in tokens[0].split('-'):
c = c.strip()
if c[0] == 'W':
urls.append(tokens[1] + ' ' + c + '!' + (html.xpath('//a[text()="World Cup ' + c[1:] + '"]')[0]).get('href'))
else:
urls.append(tokens[1] + ' ' + c + '!' + (html.xpath('//a[text()="ArenaVision ' + c + '"]')[0]).get('href'))
title = av_date + ' ' + av_time + ' | ' + av_sport + ' | ' + av_tournament + ' | ' + av_match + ' |' + av_langs
oc.add(
DirectoryObject(
key = Callback(ArenavisionSubList, title = title, url = '|'.join(urls)),
title = title
)
)
return oc

@route('/video/ace/arenavisionsublist')
def ArenavisionSubList(title, url):
oc = ObjectContainer(title2 = title)
oc.add(
DirectoryObject(
key = Callback(ArenavisionSubList, title = title, url = url),
title = 'Refresh'
)
)
pattern = re.compile(r'acestream://([0-z]{40})', re.IGNORECASE)
for r in url.split('|'):
t = r.split('!')
html = HTTP.Request(t[1], '', {'Cookie': 'beget=begetok; expires=' + ('{:%a, %d %b %Y %H:%M:%S GMT}'.format(datetime.utcnow() + timedelta(seconds=19360000))) + '; path=/'}).content
for m in re.finditer(pattern, html):
aurl = 'http://{}:{}/ace/manifest.m3u8?id={}'.format(Prefs['ace_host'], Prefs['ace_port'], m.group(1))
Log(aurl)
oc.add(
Show(
url = aurl,
title = t[0]
)
)
return oc

def getRedditLinks(oc, url, selector):
plus = ""
while True:
html = HTTP.Request(url + plus).content
js = json.loads(html)
for t3 in js["data"]["children"]:
title = t3["data"]["title"]
if title.lower().find(selector) != -1:
title2 = "{}, by {}".format(title, t3["data"]["author"]).decode('UTF-8')
url2 = t3["data"]["url"].decode('UTF-8')
oc.add(
DirectoryObject(
key = Callback(RedditSubList, title = title2, url = url2),
title = title2
)
)
after = js["data"]["after"]
if after is None:
break
else:
plus = "?after=" + after

def findAllData(js, ks):
arr = []
if isinstance(js, dict):
for k in js:
if k == ks and "body" in js[k]:
arr.append(js[k])
arr.extend(findAllData(js[k], ks))
elif isinstance(js, list):
for sjs in js:
arr.extend(findAllData(sjs, ks))
return arr

@route('/video/ace/redditsublist')
def RedditSubList(title, url):
oc = ObjectContainer(title2 = title)
oc.add(
DirectoryObject(
key = Callback(RedditSubList, title = title, url = url),
title = 'Refresh'
)
)
pattern = re.compile(r'((?:[[^\[\]]+]\s+))acestream://([0-z]{40})((?:\s+[[^\[\]]+]))', re.IGNORECASE)
lang_0 = []
lang_1 = []
plus = ""
while True:
html = HTTP.Request(url[:-1] + ".json" + plus).content
js = json.loads(html)
arr = findAllData(js, "data")
for t3 in arr:
for m in re.finditer(pattern, t3["body"]):
aceid = m.group(2)
acedesc = "{}{} [{}] by {}".format(m.group(1), m.group(3), aceid, t3["author"])
aurl = 'http://{}:{}/ace/manifest.m3u8?id={}'.format(Prefs['ace_host'], Prefs['ace_port'], aceid)
Log(aurl)
if re.search('[(ar|croatian|es|esp|ger|german|kazakh|pl|portugal|pt|ru|spanish|ukrainian)]', acedesc, re.IGNORECASE) == None:
lang_1.append(
Show(
url = aurl,
title = acedesc.decode('UTF-8')
)
)
else:
lang_0.append(
Show(
url = aurl,
title = acedesc.decode('UTF-8')
)
)
after = js[0]["data"]["after"]
if after is None:
break
else:
plus = "?after=" + after
for e in lang_0:
oc.add(e)
for e in lang_1:
oc.add(e)
return oc

@route('/video/ace/redditnbalist')
def RedditNBAList(title):
oc = ObjectContainer(title2 = title)
oc.add(
DirectoryObject(
key = Callback(RedditNBAList, title = title),
title = 'Refresh'
)
)
getRedditLinks(oc, 'https://www.reddit.com/r/nbastreams.json', ' @')
return oc

@route('/video/ace/redditnfllist')
def RedditNFLList(title):
oc = ObjectContainer(title2 = title)
oc.add(
DirectoryObject(
key = Callback(RedditNFLList, title = title),
title = 'Refresh'
)
)
getRedditLinks(oc, 'https://www.reddit.com/r/nflstreams.json', ' @')
return oc

@route('/video/ace/redditmmalist')
def RedditMMAList(title):
oc = ObjectContainer(title2 = title)
oc.add(
DirectoryObject(
key = Callback(RedditMMAList, title = title),
title = 'Refresh'
)
)
getRedditLinks(oc, 'https://www.reddit.com/r/MMAStreams.json', ' vs')
return oc

@route('/video/ace/redditmotorsportslist')
def RedditMotorSportsList(title):
oc = ObjectContainer(title2 = title)
oc.add(
DirectoryObject(
key = Callback(RedditMotorSportsList, title = title),
title = 'Refresh'
)
)
getRedditLinks(oc, 'https://www.reddit.com/r/motorsportsstreams.json', ' utc')
return oc

@route('/video/ace/redditsoccerlist')
def RedditSoccerList(title):
oc = ObjectContainer(title2 = title)
oc.add(
DirectoryObject(
key = Callback(RedditSoccerList, title = title),
title = 'Refresh'
)
)
getRedditLinks(oc, 'https://www.reddit.com/r/soccerstreams.json', ' vs')
return oc

@route('/video/ace/redditboxinglist')
def RedditBoxingList(title):
oc = ObjectContainer(title2 = title)
oc.add(
DirectoryObject(
key = Callback(RedditBoxingList, title = title),
title = 'Refresh'
)
)
getRedditLinks(oc, 'https://www.reddit.com/r/boxingstreams.json', ' vs')
return oc

@route('/video/ace/show', include_container = bool)
def Show(url, title, include_container = False, **kwargs):
vco = VideoClipObject(
key = Callback(Show, url = url, title = title, include_container = True),
rating_key = url,
title = title,
items = [
MediaObject(
protocol = Protocol.HLS,
container = Container.MP4,
video_codec = VideoCodec.H264,
audio_codec = AudioCodec.AAC,
audio_channels = 2,
optimized_for_streaming = True,
parts = [
PartObject(
key = HTTPLiveStreamURL(Callback(Play, url = url))
)
],
)
]
)
if include_container:
return ObjectContainer(objects = [vco])
else:
return vco

@indirect
@route('/video/ace/play.m3u8')
def Play(url, **kwargs):
Log(' --> Final stream url: %s' % (url))
return IndirectResponse(VideoClipObject, key = url)
`

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.