PageSourceSearch

https://www.poggiotorselli.it/wp-content/plugins/duracelltomi-goog…/js/gtm4wp-soundcloud.js?ver=1.14.2

js poggiotorselli.it collected 2026-10-09 02:54:21 UTC 4,602 bytes, 139 lines download raw bytes

1let gtm4wp_soundclound_percentage_tracking = 10;
2let gtm4wp_soundclound_percentage_tracking_marks = {};
3
4window.addEventListener('DOMContentLoaded', function() {
5	const gtm4wp_soundcloud_frames = document.querySelectorAll( 'iframe[src*="soundcloud.com"]' );
6	if ( !gtm4wp_soundcloud_frames || gtm4wp_soundcloud_frames.length == 0 ) {
7		return;
8	}
9
10	gtm4wp_soundcloud_frames.forEach(function( soundcloud_frame ) {
11		let widget  = SC.Widget( soundcloud_frame );
12		let sound   = {};
13
14		widget.bind( SC.Widget.Events.READY, function() {
15			widget.getCurrentSound(function( soundData ) {
16
17				soundcloud_frame.setAttribute( "data-player_id", soundData.id );
18				soundcloud_frame.setAttribute( "data-player_author", soundData.user.username );
19				soundcloud_frame.setAttribute( "data-player_title", soundData.title );
20				soundcloud_frame.setAttribute( "data-player_url", soundData.permalink_url );
21				soundcloud_frame.setAttribute( "data-player_duration", soundData.duration );
22
23				sound = soundData;
24
25				window[ gtm4wp_datalayer_name ].push({
26					'event': 'gtm4wp.mediaPlayerReady',
27					'mediaType': 'soundcloud',
28					'mediaData': {
29						'id':     soundData.id,
30						'author': soundData.user.username,
31						'title':  soundData.title,
32						'url':    soundData.permalink_url,
33						'duration': soundData.duration
34					},
35					'mediaCurrentTime': 0
36				});
37			}); // end of api call getDuration
38
39			widget.bind( SC.Widget.Events.PLAY_PROGRESS, function( eventData ) {
40				gtm4wp_onSoundCloudPercentageChange( eventData );
41			});
42
43			widget.bind( SC.Widget.Events.PLAY, function( eventData ) {
44				gtm4wp_onSoundCloudPlayerStateChange( eventData, 'play' );
45			});
46
47			widget.bind( SC.Widget.Events.PAUSE, function( eventData ) {
48				gtm4wp_onSoundCloudPlayerStateChange( eventData, 'pause' );
49			});
50
51			widget.bind( SC.Widget.Events.FINISH, function( eventData ) {
52				gtm4wp_onSoundCloudPlayerStateChange( eventData, 'ended' );
53			});
54
55			widget.bind( SC.Widget.Events.SEEK, function( eventData ) {
56				gtm4wp_onSoundCloudPlayerStateChange( eventData, 'seeked' );
57			});
58
59			widget.bind( SC.Widget.Events.CLICK_DOWNLOAD, function() {
60				gtm4wp_onSoundCloudPlayerEvent( 'click-download' );
61			});
62
63			widget.bind( SC.Widget.Events.CLICK_BUY, function() {
64				gtm4wp_onSoundCloudPlayerEvent( 'click-buy' );
65			});
66
67			widget.bind( SC.Widget.Events.OPEN_SHARE_PANEL, function() {
68				gtm4wp_onSoundCloudPlayerEvent( 'open-share-panel' );
69			});
70
71			widget.bind( SC.Widget.Events.ERROR, function() {
72				gtm4wp_onSoundCloudPlayerEvent( 'error' );
73			});
74		});
75
76		const gtm4wp_onSoundCloudPlayerStateChange = function( eventData, playerState ) {
77			window[ gtm4wp_datalayer_name ].push({
78				'event': 'gtm4wp.mediaPlayerStateChange',
79				'mediaType': 'soundcloud',
80				'mediaData': {
81					'id':     sound.id,
82					'author': sound.user.username,
83					'title':  sound.title,
84					'url':    sound.permalink_url,
85					'duration': sound.duration
86				},
87				'mediaCurrentTime': eventData.currentPosition,
88				'mediaPlayerState': playerState
89			});
90		};
91
92		const gtm4wp_onSoundCloudPercentageChange = function( eventData ) {
93			const mediaPercentage  = Math.floor( eventData.currentPosition / sound.duration * 100 );
94
95			if ( typeof gtm4wp_soundclound_percentage_tracking_marks[ sound.id ] == "undefined" ) {
96				gtm4wp_soundclound_percentage_tracking_marks[ sound.id ] = [];
97			}
98
99			for( let i=0; i<100; i+=gtm4wp_soundclound_percentage_tracking ) {
100				if ( ( mediaPercentage > i ) && ( gtm4wp_soundclound_percentage_tracking_marks[ sound.id ].indexOf( i ) == -1 ) ) {
101					gtm4wp_soundclound_percentage_tracking_marks[ sound.id ].push( i );
102
103					window[ gtm4wp_datalayer_name ].push({
104						'event': 'gtm4wp.mediaPlaybackPercentage',
105						'mediaType': 'soundcloud',
106						'mediaData': {
107							'id':     sound.id,
108							'author': sound.user.username,
109							'title':  sound.title,
110							'url':    sound.permalink_url,
111							'duration': sound.duration
112						},
113						'mediaCurrentTime': eventData.currentPosition,
114						'mediaPercentage': i
115					});
116				}
117			}
118		};
119
120		const gtm4wp_onSoundCloudPlayerEvent = function( eventName ) {
121			widget.getPosition(function( currentPosition ) {
122				window[ gtm4wp_datalayer_name ].push({
123					'event': 'gtm4wp.mediaPlayerEvent',
124					'mediaType': 'soundcloud',
125					'mediaData': {
126						'id':     sound.id,
127						'author': sound.user.username,
128						'title':  sound.title,
129						'url':    sound.permalink_url,
130						'duration': soundData.duration
131					},
132					'mediaCurrentTime': currentPosition,
133					'mediaPlayerEvent': eventName
134				});
135			});
136		};
137
138	});
139});

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.