thomaschampagne / elevate

A sport app to "Elevate" your training experience and goals! Track your fitness and progressions over time. Analyse deeper your activities. And more...
https://thomaschampagne.github.io/elevate-docs/
Mozilla Public License 2.0
1.26k stars 175 forks source link

Virtual group ride shows up (sponsored by zwift) #725

Closed soundZ80 closed 3 years ago

soundZ80 commented 5 years ago

ZWIFT group activites are shown even though "hide virtual rides" is on.

Steps to reproduce:

  1. Open Strava Stream
  2. Reload stream page serveral times
  3. group activity is still shown as "sponsored" post (see html-code attached)

screenshot virtual-group-ride-shows-up_files.zip

dlh3 commented 5 years ago

Confirmed, sort of... Looks like Strava (or the sponsored integrations) changed the default activityType for virtual rides so they are now reported as "ride" instead of "virtual ride".

When I change an activity to "virtual ride", Elevate hides it as expected (when I have enabled that setting).

@soundZ80 I know this isn't really a solution, since you can't change the type used for other people's activities. Perhaps contact Strava and/or Zwift and ask them to more accurately set the activity type as "virtual ride".

Here's a TrainerRoad activity set as type "ride". Quickly scanning through it, I can't find anything that definitively identifies it as a virtual ride.

<div class="activity feed-entry card" data-rank="1546747748.775142" data-updated-at="1546747717" id="Activity-2058654596" str-trackable-id="ChUIBTIRCISn0tUHGAEwlwo4AUACSAASBAoCCAI=">
<div class="entry-header">
<div class="media media-middle">
<div class="media-left avatar avatar-athlete avatar-md">
<a class="avatar-content" href="/athletes/2397877" str-on="click" str-trackable-id="ChUIBTIRCISn0tUHGAEwlwo4AUACSAASBAoCCAI=" str-type="avatar">
<div class="avatar-img-wrapper">
<img alt="First Last" class="avatar-img" src="https://dgalywyr863hv.cloudfront.net/pictures/athletes/2397877/1466753/4/medium.jpg">
</div>
</a>
</div>
<div class="media-body" str-click-type="name" str-on="click" str-trackable-id="ChUIBTIRCISn0tUHGAEwlwo4AUACSAASBAoCCAI=" str-type="anchor_container">
<a class="entry-owner" href="/athletes/2397877">First Last</a> rode on TrainerRoad
<time class="timestamp" datetime="2019-01-06 02:38:37 UTC">
<time class="timestamp" datetime="2019-01-06 02:38:37 UTC">
Yesterday at 6:38 PM
</time>

</time>
</div>
<div class="media-actions">
</div>
</div>
</div>
<div class="entry-body">
<div class="media">
<div class="entry-icon media-left">
<span class="app-icon-wrapper  "><span class="app-icon icon-ride icon-dark icon-lg"></span></span>
</div>
<div class="media-body">
<h3 class="title-text">
<a href="/activities/2058654596" str-on="click" str-trackable-id="ChUIBTIRCISn0tUHGAEwlwo4AUACSAASBAoCCAI=" str-type="self">
Phoenix
</a>
</h3>
<div class="media">
<div class="media-body">
<ul class="list-stats">
<li>
<div class="stat">
<div class="stat-subtext">Distance</div>
<b class="stat-text">50.83<abbr class="unit" title="kilometers"> km</abbr></b>
</div>
</li>
<li>
<div class="stat">
<div class="stat-subtext">Time</div>
<b class="stat-text">1<abbr class="unit" title="hour">h</abbr> 30<abbr class="unit" title="minute">m</abbr></b>
</div>
</li>
<li>
<div class="stat">
<div class="stat-subtext">Avg Power</div>
<b class="stat-text">174<abbr class="unit" title="watts"> W</abbr></b>
</div>
</li>
</ul>
</div>
</div>
<ul class="achievements-summary">
</ul>

</div>
</div>
</div>
<div class="entry-media">
<div class="entry-images images-1-up">
<div class="entry-photo entry-image">
<div class="entry-image-wrapper">
<div class="sponsor-tag">
<button class="btn btn-icon btn-xs btn-sponsor" str-on="click" str-trackable-id="ChUIBTIRCISn0tUHGAEwlwo4AUACSAASBAoCCAI=" str-type="partner_tag">
Sponsored
<span class="app-icon-wrapper  "><span class="app-icon icon-info-xsmall icon-xs"></span></span>
</button>
<div class="sponsor-tag-detail">
Enhanced with unique data or content by a partner.
<a class="btn-learn-more" href="https://support.strava.com/hc/en-us/articles/360015573312" str-on="click" str-target-url="https://support.strava.com/hc/en-us/articles/360015573312" str-trackable-id="ChUIBTIRCISn0tUHGAEwlwo4AUACSAASBAoCCAI=" str-type="partner_tag_expanded" target="_blank">
Learn more.
</a>
</div>
</div>

<img alt="" data-target="https://dgtzuqphqg23d.cloudfront.net/XR3zx4cXawKj8V3_KDX_llY5XBHjTYsl9tkVWFoAYJM-2048x1365.jpg" src="https://dgtzuqphqg23d.cloudfront.net/XR3zx4cXawKj8V3_KDX_llY5XBHjTYsl9tkVWFoAYJM-2048x1365.jpg" str-on="click" str-target-url="https://dgtzuqphqg23d.cloudfront.net/XR3zx4cXawKj8V3_KDX_llY5XBHjTYsl9tkVWFoAYJM-2048x1365.jpg" str-trackable-id="ChUIBTIRCISn0tUHGAEwlwo4AUACSAASBAoCCAI=" str-type="photo">
</div>
</div>
<script>
  jQuery.Strava.execute(function() {
    var gridPhotosJson = [{"photo_id":"7e21edb0-5451-4650-be63-f6a51e77308b","media_type":null,"activity_id":2058654596,"post_id":null,"activity_name_escaped":null,"caption_escaped":"","thumbnail":"https://dgtzuqphqg23d.cloudfront.net/XR3zx4cXawKj8V3_KDX_llY5XBHjTYsl9tkVWFoAYJM-128x85.jpg","large":"https://dgtzuqphqg23d.cloudfront.net/XR3zx4cXawKj8V3_KDX_llY5XBHjTYsl9tkVWFoAYJM-2048x1365.jpg","video":null,"lat":null,"lng":null,"native":true,"owner_id":2397877,"viewing_athlete_id":26398494,"editable":false,"activity":{},"dimensions":{"large":{"height":1365,"width":2048},"thumbnail":{"height":85,"width":128}},"is_sponsored_photo":true,"enhanced_photo":null,"parent_trackable_id":"ChUIBTIRCISn0tUHGAEwlwo4AUACSAASBAoCCAI="}];
    var gridPhotos = new Strava.Models.Photos(gridPhotosJson);
    Strava.ExternalPhotos.PhotoPageManager
      .getInstance()
      .renderGridImages(gridPhotos, "Activity-2058654596");
  });
</script>

</div>
<div class="sponsor">
<a href="https://www.trainerroad.com/strava?utm_source=strava&amp;utm_medium=app&amp;utm_campaign=activity" str-on="click" str-target-url="https://www.trainerroad.com/strava?utm_source=strava&amp;utm_medium=app&amp;utm_campaign=activity" str-trackable-id="ChUIBTIRCISn0tUHGAEwlwo4AUACSAASBAoCCAI=" str-type="partner_link" style="color: #e31d1a" target="_blank">
<img alt="Trainer Road logo" style="height: 12px" src="https://d3nn82uaxijpm6.cloudfront.net/assets/brands/tags/1303/logo@4x-f6da3a19f1f634e885bcbb69fedef4ca55154d3cf3cba5857c65d6b46991caf7.png">
<span>Start Training with TrainerRoad</span>
</a>
</div>

</div>
<div class="entry-footer">
<div class="kudos-comments media media-middle vx">
<div class="media-body media media-middle">
<div class="count-wrapper js-view-kudos kudos-count-wrapper">
<ol class="kudos-facepile">
<li class="avatar avatar-athlete avatar-xs">
<div class="avatar-content">
<img alt="Dave H." class="avatar-img" src="https://lh5.googleusercontent.com/-b1a0dgZ7HR8/AAAAAAAAAAI/AAAAAAAAbHY/ZsdekLsBfN8/photo.jpg" title="[Dave H.]">
</div>
</li>
<li class="avatar avatar-athlete avatar-xs">
<div class="avatar-content">
<img alt="Elbert E." class="avatar-img" src="https://lh3.googleusercontent.com/-KBLP5UcwL8U/AAAAAAAAAAI/AAAAAAAAAAA/AKxrwcZqNofw52V6oj0KKVsmSLtt_vpB0Q/mo/photo.jpg" title="[Elbert E.]">
</div>
</li>
<li class="avatar avatar-athlete avatar-xs">
<div class="avatar-content">
<img alt="Sanga T." class="avatar-img" src="https://dgalywyr863hv.cloudfront.net/pictures/athletes/9928059/7133826/2/medium.jpg" title="[Sanga T.]">
</div>
</li>
</ol>
<button class="btn btn-link btn-xs js-view-kudos">
<span class="count count-kudos" data-kudo-count="11">
11
</span>
<span class="count-label">
kudos
</span>
</button>
</div>
<div class="comments-count-wrapper count-wrapper empty">
<button class="btn btn-link btn-xs js-view-comments" str-on="click" str-trackable-id="ChUIBTIRCISn0tUHGAEwlwo4AUACSAASBAoCCAI=" str-type="comment_list">
<span class="count count-comments">
0
</span>
<span class="count-label">
comments
</span>
</button>
</div>
</div>
<div class="media-actions">
<button class="btn btn-icon btn-icon-only btn-kudo btn-xs js-view-kudos" data-entry="[&quot;Activity&quot;,2058654596]" str-on="click" str-trackable-id="ChUIBTIRCISn0tUHGAEwlwo4AUACSAASBAoCCAI=" str-type="kudos" title="View all kudos">
<span class="app-icon icon-color icon-kudo icon-sm">
kudos
</span>
</button>
<button class="btn btn-comment btn-icon btn-icon-only btn-xs empty" str-on="click" str-trackable-id="ChUIBTIRCISn0tUHGAEwlwo4AUACSAASBAoCCAI=" str-type="comment_list" title="Comment">
<span class="icon-comment app-icon icon-sm icon-dark">
Comments
</span>
</button>
</div>
</div>
<div class="entry-comments comments" data-entity-id="Activity-2058654596">
<ol class="thread" id="Activity-2058654596">
</ol>
<form action="/feed/Activity/2058654596/comment" autocomplete="off" class="media response" data-entry="[&quot;Activity&quot;,2058654596]" method="post" style="display: none;">
<input name="entity_type" type="hidden" value="Activity">
<input name="entity_id" type="hidden" value="2058654596">
<div class="media-left">
<div class="avatar avatar-athlete avatar-sm">
<div class="avatar-content"><div class="avatar-img-wrapper">
<img alt="Dave Hughes" class="avatar-img" src="https://lh5.googleusercontent.com/-b1a0dgZ7HR8/AAAAAAAAAAI/AAAAAAAAbHY/ZsdekLsBfN8/photo.jpg">
</div>
</div></div>

</div>
<div class="media-content">
<div class="media-body">
<textarea class="form-control autoresize" name="comment" placeholder="Add a comment..."></textarea>
</div>
<div class="media-right">
<input class="btn btn-default btn-sm" str-on="click" str-trackable-id="ChUIBTIRCISn0tUHGAEwlwo4AUACSAASBAoCCAI=" str-type="comment" type="submit" value="Post">
</div>
</div>
</form>
</div>

</div>
<script>
  jQuery.Strava.execute(function() {
    var data = {
      title: "Phoenix",
      athlete_avatar: "https://dgalywyr863hv.cloudfront.net/pictures/athletes/2397877/1466753/4/medium.jpg",
      athlete_name: "First Last",
      athlete_firstname: "First"
    };

    var entity = "Activity";
    var activity_athlete = {id: "2397877"};
    var entity_id = "2058654596";
    var selector = entity + '-' + entity_id;
    var has_achievements = false;

    jQuery("div#" + selector).on('click', '.js-view-comments', function(e) {
      Strava.Feed.PopoverBoxView.show(entity, entity_id, data, 'comments', has_achievements, false, activity_athlete);
      e.preventDefault();
    }).on('click', '.js-view-kudos', function(e) {
      Strava.Feed.PopoverBoxView.show(entity, entity_id, data, 'kudos', has_achievements, false, activity_athlete);
      e.preventDefault();
    }).on('click', 'li.count-achievements, a.show-achievements', function(e) {
      Strava.Feed.PopoverBoxView.show(entity, entity_id, data, 'achievements', has_achievements, false, activity_athlete)
      e.preventDefault();
    }).on('click', '.goal .popup', function(e){
      Strava.Feed.GoalTooltipView.show(data, this);
      e.preventDefault();
    }).on('click', '.btn-sponsor', function() {
      jQuery(this).hide();
      jQuery(this).parent().find('.sponsor-tag-detail').show();
    });
  });
</script>
</div>
soundZ commented 5 years ago

Hm. Maybe it's a solution to check for Parnter-URLs like "https://zwift.com/" or "https://www.trainerroad.com"? There's also a DIV with the class "sponsor" wich might work as a identifier for virtual rides?

dlh3 commented 5 years ago

Sure, we can identify if it is a sponsored activity, but I'm not sure that is sufficient. For example, the Aaptiv integration would probably track Aaptiv runs or weight training as sponsored activities.

Perhaps the Elevate setting should just be updated to hide sponsored, rather than hide virtual runs.

stale[bot] commented 3 years ago

This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Thank you for your contributions.

stale[bot] commented 3 years ago

This issue has been automatically closed because it didn't had recent activity.