+ private function purgeChannels(Episode $episode, $sgEntry) {
+ $ext_ids = [];
+ foreach ($sgEntry['channels'] as $sgChannel) {
+ $ext_ids[] = 'sg:'.$sgChannel['id'];
+ }
+ $episode->channels()
+ ->where('ext_id', 'LIKE', 'sg:%')
+ ->whereNotIn('ext_id', $ext_ids)
+ ->detach();
+ }
+
+ private function syncChannel(Episode $episode, $sgChannel) {
+ $ext_id = 'sg:'.$sgChannel['id'];
+ $channel = $this->org->channels()->firstWhere('ext_id', '=', $ext_id);
+ if (!$channel) {
+ $channel = new Channel();
+ $channel->ext_id = $ext_id;
+ $channel->organization()->associate($this->org);
+ }
+ $channel->short_name = $sgChannel['initials'];
+ $channel->title = $sgChannel['name'];
+ $channel->stream_link = 'https://twitch.tv/'.strtolower($sgChannel['name']);
+ $channel->languages = [$sgChannel['language']];
+ $channel->save();
+ return $channel;
+ }
+