Coverage for src/aggregator/stats_update.py: 100%

18 statements  

« prev     ^ index     » next       coverage.py v7.4.4, created at 2024-05-14 23:08 +0000

1"""Module for updating artists stats.""" 

2import datetime 

3import time 

4 

5import requests 

6 

7from src.aggregator.stats_utils import ( 

8 change_artist_data, 

9 change_track_data, 

10 get_artist_response_template, 

11 get_artist_albums_ids 

12) 

13 

14 

15def stats_update_main( 

16 artist_ids, timeout, request_count, file_path, 

17 headers, tracks_extensions, artist_extensions): 

18 """Main function for stats data updating.""" 

19 print(f'[T] Time: {datetime.datetime.now()}') 

20 

21 for artist_id in artist_ids: 

22 response, request_count = get_artist_response_template( 

23 artist_id=artist_id, 

24 timeout=timeout, 

25 request_count=request_count, 

26 headers=headers, 

27 extensions=artist_extensions 

28 ) 

29 print(f"Artist Stats {artist_id} - [*] [Request {request_count} - {response.status_code}]") 

30 

31 change_artist_data(response, artist_id, file_path) 

32 

33 albums_ids = get_artist_albums_ids(artist_id, file_path) 

34 

35 for album_id in albums_ids: 

36 get_album_params = { 

37 'operationName': 'getAlbum', 

38 'variables': '{"uri":"spotify:album:' + 

39 album_id + 

40 '","locale":"","offset":0,"limit":50,"enableAssociatedVideos":false}', 

41 'extensions': tracks_extensions, 

42 } 

43 

44 response = requests.get( 

45 'https://api-partner.spotify.com/pathfinder/v1/query', 

46 params=get_album_params, 

47 headers=headers, 

48 timeout=10 

49 ) 

50 time.sleep(timeout) 

51 request_count += 1 

52 print(f"Get Album {album_id}" 

53 f" - [*] [Request {request_count} - {response.status_code}]") 

54 

55 change_track_data(response.json(), artist_id, file_path) 

56 

57 

58# if __name__ == '__main__': 

59# stats_update_main( 

60# artist_ids=[ 

61# '0M2HHtY3OOQzIZxrHkbJLT', '4tZwfgrHOc3mvqYlEYSvVi', '00FQb4jTyendYWaN8pK0wa' 

62# ], 

63# timeout=1, 

64# request_count=0, 

65# file_path='src/aggregator/resources/artists', 

66# headers=client_headers, 

67# tracks_extensions=get_tracks_extensions, 

68# artist_extensions=get_artist_stats_extensions 

69# )