Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Update stripchat_vr.py #107

Closed
wants to merge 1 commit into from
Closed
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
47 changes: 29 additions & 18 deletions streamonitor/sites/stripchat_vr.py
Original file line number Diff line number Diff line change
@@ -1,31 +1,42 @@
from streamonitor.sites.stripchat import StripChat
import requests
from streamonitor.bot import Bot
from streamonitor.downloaders.fmp4s_wss import getVideoWSSVR


class StripChatVR(StripChat):
class StripChatVR(Bot):
site = 'StripChatVR'
siteslug = 'SCVR'

def __init__(self, username):
super().__init__(username)
self.getVideo = getVideoWSSVR
self.stopDownloadFlag = False

def getVideoUrl(self):
return "wss://s-{server}.{host}/{id}_vr_webxr?".format(
server=self.lastInfo["broadcastSettings"]["vrBroadcastServer"],
host='stripcdn.com',
id=self.lastInfo["cam"]["streamName"]
) + '&'.join([k + '=' + v for k, v in self.lastInfo['broadcastSettings']['vrCameraSettings'].items()])
return self.getWantedResolutionPlaylist(None)

def getPlaylistVariants(self, url):
def formatUrl(auto):
return "https://edge-hls.{host}/hls/{id}_vr/master/{id}_vr{auto}.m3u8".format(
server=self.lastInfo["cam"]["viewServers"]["flashphoner-vr"],
host='doppiocdn.com',
id=self.lastInfo["cam"]["streamName"],
auto='_auto' if auto else '')

variants = []
variants.extend(super().getPlaylistVariants(formatUrl(False)))
variants.extend(super().getPlaylistVariants(formatUrl(True)))
return variants

def getStatus(self):
status = super(StripChatVR, self).getStatus()
if status == Bot.Status.PUBLIC:
if self.lastInfo['model']['isVr'] and type(self.lastInfo['broadcastSettings']['vrCameraSettings']) is dict:
return Bot.Status.PUBLIC
r = requests.get('https://stripchat.com/api/vr/v2/models/username/' + self.username, headers=self.headers)
if r.status_code != 200:
return Bot.Status.UNKNOWN

self.lastInfo = r.json()

if self.lastInfo["model"]["status"] == "public" and self.lastInfo["isCamAvailable"] and self.lastInfo['cam']["isCamActive"]:
return Bot.Status.PUBLIC
if self.lastInfo["model"]["status"] in ["private", "groupShow", "p2p", "virtualPrivate", "p2pVoice"]:
return Bot.Status.PRIVATE
if self.lastInfo["model"]["status"] in ["off", "idle"]:
return Bot.Status.OFFLINE
return status
self.logger.warn(f'Got unknown status: {self.lastInfo["model"]["status"]}')
return Bot.Status.UNKNOWN


Bot.loaded_sites.add(StripChatVR)