pars-hitmotop 0.0.8__tar.gz → 0.0.9__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {pars_hitmotop-0.0.8 → pars_hitmotop-0.0.9}/PKG-INFO +67 -64
- {pars_hitmotop-0.0.8 → pars_hitmotop-0.0.9}/README.md +9 -8
- {pars_hitmotop-0.0.8 → pars_hitmotop-0.0.9}/pars_hitmotop/entered_tracks.py +28 -15
- pars_hitmotop-0.0.9/pars_hitmotop/excepts.py +67 -0
- {pars_hitmotop-0.0.8 → pars_hitmotop-0.0.9}/pars_hitmotop/rating_tracks_count.py +14 -4
- {pars_hitmotop-0.0.8 → pars_hitmotop-0.0.9}/pars_hitmotop/rating_tracks_page.py +12 -4
- {pars_hitmotop-0.0.8 → pars_hitmotop-0.0.9}/pars_hitmotop.egg-info/PKG-INFO +67 -64
- {pars_hitmotop-0.0.8 → pars_hitmotop-0.0.9}/pars_hitmotop.egg-info/SOURCES.txt +0 -1
- {pars_hitmotop-0.0.8 → pars_hitmotop-0.0.9}/setup.cfg +4 -4
- {pars_hitmotop-0.0.8 → pars_hitmotop-0.0.9}/setup.py +3 -1
- pars_hitmotop-0.0.8/pars_hitmotop/excepts.py +0 -24
- {pars_hitmotop-0.0.8 → pars_hitmotop-0.0.9}/pars_hitmotop/__init__.py +0 -0
- {pars_hitmotop-0.0.8 → pars_hitmotop-0.0.9}/pars_hitmotop/how_to_use.py +0 -0
- {pars_hitmotop-0.0.8 → pars_hitmotop-0.0.9}/pars_hitmotop.egg-info/dependency_links.txt +0 -0
- {pars_hitmotop-0.0.8 → pars_hitmotop-0.0.9}/pars_hitmotop.egg-info/requires.txt +0 -0
- {pars_hitmotop-0.0.8 → pars_hitmotop-0.0.9}/pars_hitmotop.egg-info/top_level.txt +0 -0
@@ -1,64 +1,67 @@
|
|
1
|
-
Metadata-Version: 2.1
|
2
|
-
Name: pars_hitmotop
|
3
|
-
Version: 0.0.
|
4
|
-
Home-page: https://github.com/PY079/pars_hitmotop
|
5
|
-
Download-URL: https://github.com/PY079/pars_hitmotop/arhive/v0.0.
|
6
|
-
Author: Joy_079
|
7
|
-
Author-email: Prufu@yandex.ru
|
8
|
-
Classifier: Programming Language :: Python
|
9
|
-
Classifier: Programming Language :: Python :: 3.7
|
10
|
-
Classifier: Programming Language :: Python :: 3.8
|
11
|
-
Classifier: Programming Language :: Python :: 3.9
|
12
|
-
Classifier: Programming Language :: Python ::
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
____
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
|
56
|
-
|
57
|
-
|result.
|
58
|
-
|result.
|
59
|
-
|result.
|
60
|
-
|result.
|
61
|
-
|result.
|
62
|
-
|result.
|
63
|
-
|
64
|
-
|
1
|
+
Metadata-Version: 2.1
|
2
|
+
Name: pars_hitmotop
|
3
|
+
Version: 0.0.9
|
4
|
+
Home-page: https://github.com/PY079/pars_hitmotop
|
5
|
+
Download-URL: https://github.com/PY079/pars_hitmotop/arhive/v0.0.9.zip
|
6
|
+
Author: Joy_079
|
7
|
+
Author-email: Prufu@yandex.ru
|
8
|
+
Classifier: Programming Language :: Python
|
9
|
+
Classifier: Programming Language :: Python :: 3.7
|
10
|
+
Classifier: Programming Language :: Python :: 3.8
|
11
|
+
Classifier: Programming Language :: Python :: 3.9
|
12
|
+
Classifier: Programming Language :: Python :: 3.10
|
13
|
+
Classifier: Programming Language :: Python :: 3.11
|
14
|
+
Classifier: Programming Language :: Python :: Implementation :: PyPy
|
15
|
+
Description-Content-Type: text/markdown
|
16
|
+
|
17
|
+
# Оглавление
|
18
|
+
0. [Оглавление](https://github.com/PY079/pars_hitmotop#оглавление)
|
19
|
+
1. [Что именно парсит?](https://github.com/PY079/pars_hitmotop/blob/main/README.md#что-именно-парсит)
|
20
|
+
2. [Как использовать модуль entered_tracks](https://github.com/PY079/pars_hitmotop/blob/main/README.md#как-использовать-модуль-entered_tracks)
|
21
|
+
3. [Как использовать модуль rating_tracks_count](https://github.com/PY079/pars_hitmotop/blob/main/README.md#как-использовать-модуль-rating_tracks_count)
|
22
|
+
4. [Как использовать модуль rating_tracks_page](https://github.com/PY079/pars_hitmotop/blob/main/README.md#как-использовать-модуль-rating_tracks_page)
|
23
|
+
5. [Что можно достать при запросе?](https://github.com/PY079/pars_hitmotop/blob/main/README.md#что-можно-достать-при-запросе)
|
24
|
+
____
|
25
|
+
Этот проект парсит [музыкальный сайт](https://hitmos.me/)
|
26
|
+
____
|
27
|
+
# Что именно парсит?
|
28
|
+
1. [Рейтинговые треки](https://hitmos.me/songs/top-rated) от 1 до 48;
|
29
|
+
2. Тоже [рейтинговые треки](https://hitmos.me/songs/top-rated) но можно выбрать количество страниц, с которых будет произведен парсинг;
|
30
|
+
3. Треки введенные пользователем. Парсит от 1 трека до конечной страницы (на одной странице 48 треков)
|
31
|
+
____
|
32
|
+
## Как использовать модуль *entered_tracks*
|
33
|
+
```
|
34
|
+
from pars_hitmotop.entered_tracks import EnteredTrack
|
35
|
+
result=EnteredTrack('linkin park',10)
|
36
|
+
```
|
37
|
+
1 аргументом (music_name) передается название песни или автора. 2 Аргументом (count) передается количество треков
|
38
|
+
____
|
39
|
+
## Как использовать модуль *rating_tracks_count*
|
40
|
+
```
|
41
|
+
from pars_hitmotop.rating_tracks_count import RatingCount
|
42
|
+
result=RatingCount(10)
|
43
|
+
```
|
44
|
+
1 аргументом (count) передается количество песен
|
45
|
+
____
|
46
|
+
## Как использовать модуль *rating_tracks_page*
|
47
|
+
```
|
48
|
+
from pars_hitmotop.rating_tracks_page import RatingPage
|
49
|
+
result=RatingPage(10)
|
50
|
+
```
|
51
|
+
1 аргументом (count) передается количество страниц (max 11)
|
52
|
+
____
|
53
|
+
# Что можно достать при запросе?
|
54
|
+
Все возвращается в виде list
|
55
|
+
| Метод | Описание |
|
56
|
+
|----------------|:---------|
|
57
|
+
| result.get_author | Получить автора трека|
|
58
|
+
|result.get_title| Получить название трека|
|
59
|
+
|result.get_url_down|Получить ссылку на скачивание трека|
|
60
|
+
|result.direct_download_link|Получить прямую ссылку на скачивание трека|
|
61
|
+
|result.get_duration|Получить продолжительность трека|
|
62
|
+
|result.get_picture_url|Получить ссылку на обложку трека|
|
63
|
+
|result.get_url_track|Получить ссылку трек|
|
64
|
+
|result.get_all|Получить все данные в виде словаря|
|
65
|
+
|result.get_author_title|Получить лист в виде автор - название|
|
66
|
+
|
67
|
+
____
|
@@ -6,19 +6,19 @@
|
|
6
6
|
4. [Как использовать модуль rating_tracks_page](https://github.com/PY079/pars_hitmotop/blob/main/README.md#как-использовать-модуль-rating_tracks_page)
|
7
7
|
5. [Что можно достать при запросе?](https://github.com/PY079/pars_hitmotop/blob/main/README.md#что-можно-достать-при-запросе)
|
8
8
|
____
|
9
|
-
Этот проект парсит [музыкальный сайт](https://
|
9
|
+
Этот проект парсит [музыкальный сайт](https://hitmos.me/)
|
10
10
|
____
|
11
11
|
# Что именно парсит?
|
12
|
-
1. [Рейтинговые треки](https://
|
13
|
-
2. Тоже [
|
14
|
-
3. Треки
|
12
|
+
1. [Рейтинговые треки](https://hitmos.me/songs/top-rated) от 1 до 48;
|
13
|
+
2. Тоже [рейтинговые треки](https://hitmos.me/songs/top-rated) но можно выбрать количество страниц, с которых будет произведен парсинг;
|
14
|
+
3. Треки введенные пользователем. Парсит от 1 трека до конечной страницы (на одной странице 48 треков)
|
15
15
|
____
|
16
16
|
## Как использовать модуль *entered_tracks*
|
17
17
|
```
|
18
18
|
from pars_hitmotop.entered_tracks import EnteredTrack
|
19
19
|
result=EnteredTrack('linkin park',10)
|
20
20
|
```
|
21
|
-
1 аргументом (
|
21
|
+
1 аргументом (music_name) передается название песни или автора. 2 Аргументом (count) передается количество треков
|
22
22
|
____
|
23
23
|
## Как использовать модуль *rating_tracks_count*
|
24
24
|
```
|
@@ -35,16 +35,17 @@ result=RatingPage(10)
|
|
35
35
|
1 аргументом (count) передается количество страниц (max 11)
|
36
36
|
____
|
37
37
|
# Что можно достать при запросе?
|
38
|
-
Все
|
38
|
+
Все возвращается в виде list
|
39
39
|
| Метод | Описание |
|
40
40
|
|----------------|:---------|
|
41
41
|
| result.get_author | Получить автора трека|
|
42
42
|
|result.get_title| Получить название трека|
|
43
43
|
|result.get_url_down|Получить ссылку на скачивание трека|
|
44
|
-
|result.direct_download_link
|
45
|
-
|result.
|
44
|
+
|result.direct_download_link|Получить прямую ссылку на скачивание трека|
|
45
|
+
|result.get_duration|Получить продолжительность трека|
|
46
46
|
|result.get_picture_url|Получить ссылку на обложку трека|
|
47
47
|
|result.get_url_track|Получить ссылку трек|
|
48
48
|
|result.get_all|Получить все данные в виде словаря|
|
49
|
+
|result.get_author_title|Получить лист в виде автор - название|
|
49
50
|
|
50
51
|
____
|
@@ -1,27 +1,32 @@
|
|
1
1
|
import fake_useragent, requests
|
2
2
|
from bs4 import BeautifulSoup
|
3
|
-
from .excepts import NoFoundTrack, MaxTrack
|
3
|
+
from .excepts import NoFoundTrack, MaxTrack, MusicName, AmountErr, RedirectErr
|
4
4
|
|
5
5
|
class EnteredTrack:
|
6
6
|
"""
|
7
|
-
Треки из
|
7
|
+
Треки из запроса\n
|
8
8
|
:param music_name: Название и автор трека в одной строке. - str
|
9
9
|
:param amount: Количество треков, которое нужно вывести. Max 48. - int
|
10
|
-
:param get_redirect_url: bool тип, True-получить прямую ссылку на скачивание трека, но увеличивает время
|
10
|
+
:param get_redirect_url: bool тип, True-получить прямую ссылку на скачивание трека, но увеличивает время выполнения\n
|
11
11
|
Для получения информации доступны след.функции:
|
12
12
|
- get_author: list, автор трека;
|
13
13
|
- get_title: list, название трека;
|
14
14
|
- get_url_down: list, ссылка на скачивание трека;
|
15
15
|
- direct_download_link: list прямая ссылка на скачивание трека;
|
16
|
-
-
|
16
|
+
- get_duration: list, длительность трека;
|
17
17
|
- get_picture_url: list, ссылка на обложку трека;
|
18
18
|
- get_url_track: list, ссылка на трек.
|
19
19
|
|
20
20
|
"""
|
21
21
|
|
22
|
-
|
22
|
+
|
23
|
+
def __init__(self, music_name:str, amount: int, get_redirect_url=False):
|
24
|
+
if isinstance(music_name, str) is False: raise MusicName
|
25
|
+
if isinstance(amount, int) is False: raise AmountErr
|
26
|
+
if isinstance(get_redirect_url, bool) is False: raise RedirectErr
|
27
|
+
|
23
28
|
self.music_name = music_name
|
24
|
-
self.amount = amount
|
29
|
+
self.amount = int(amount)
|
25
30
|
self.get_redirect_url = get_redirect_url
|
26
31
|
self.get_info
|
27
32
|
|
@@ -57,10 +62,9 @@ class EnteredTrack:
|
|
57
62
|
_track_url = [f"{__url1}{tra_url.get('href')}" for tra_url in _soup.find_all('a', class_='track__info-l')]
|
58
63
|
|
59
64
|
_items = []
|
60
|
-
for idx in range(
|
65
|
+
for idx in range(len(_track_titles)):
|
61
66
|
if self.get_redirect_url and len(_track_urls_dow[idx])>0:
|
62
67
|
direct_download_link = requests.get(_track_urls_dow[idx],headers=__headers,allow_redirects=True).url
|
63
|
-
print(f'Получил прямую ссылку: {direct_download_link}')
|
64
68
|
else: direct_download_link = None
|
65
69
|
|
66
70
|
item = {
|
@@ -79,30 +83,39 @@ class EnteredTrack:
|
|
79
83
|
return self.data
|
80
84
|
|
81
85
|
@property
|
82
|
-
def get_author(self):
|
86
|
+
def get_author(self) -> list[str]:
|
83
87
|
return [item['author'] for item in self.data['items']]
|
84
88
|
|
85
89
|
@property
|
86
|
-
def get_title(self):
|
90
|
+
def get_title(self) -> list[str]:
|
87
91
|
return [item['title'] for item in self.data['items']]
|
88
92
|
|
89
93
|
@property
|
90
|
-
def get_url_down(self):
|
94
|
+
def get_url_down(self) -> list[str]:
|
91
95
|
return [item['url_down'] for item in self.data['items']]
|
92
96
|
|
93
97
|
@property
|
94
|
-
def direct_download_link(self):
|
98
|
+
def direct_download_link(self) -> list[str]:
|
95
99
|
return [item['direct_download_link'] for item in self.data['items']]
|
96
100
|
|
97
101
|
@property
|
98
|
-
def
|
102
|
+
def get_duration(self) -> list[str]:
|
99
103
|
return [item['duration_track'] for item in self.data['items']]
|
100
104
|
|
101
105
|
@property
|
102
|
-
def get_picture_url(self):
|
106
|
+
def get_picture_url(self) -> list[str]:
|
103
107
|
return [item['picture_url'] for item in self.data['items']]
|
104
108
|
|
105
109
|
@property
|
106
|
-
def get_url_track(self):
|
110
|
+
def get_url_track(self) -> list[str]:
|
107
111
|
return [item['url_track'] for item in self.data['items']]
|
112
|
+
|
113
|
+
@property
|
114
|
+
def get_author_title(self) -> list[str]:
|
115
|
+
__author = self.get_author
|
116
|
+
__title = self.get_title
|
117
|
+
return [f'{__author[i]} - {__title[i]}' for i in range(self.count_tracks)]
|
118
|
+
|
119
|
+
|
120
|
+
|
108
121
|
|
@@ -0,0 +1,67 @@
|
|
1
|
+
class NoFoundTrack(Exception):
|
2
|
+
|
3
|
+
def __init__(self):
|
4
|
+
self.err = 'Nothing was found for your query'
|
5
|
+
|
6
|
+
def __str__(self):
|
7
|
+
return self.err
|
8
|
+
|
9
|
+
class MaxTrack(Exception):
|
10
|
+
|
11
|
+
def __init__(self):
|
12
|
+
self.err = 'The number of tracks should not exceed 48'
|
13
|
+
|
14
|
+
def __str__(self):
|
15
|
+
return self.err
|
16
|
+
|
17
|
+
|
18
|
+
class PageError(Exception):
|
19
|
+
|
20
|
+
def __init__(self):
|
21
|
+
self.err = 'Only <= 11'
|
22
|
+
|
23
|
+
def __str__(self):
|
24
|
+
return self.err
|
25
|
+
|
26
|
+
|
27
|
+
|
28
|
+
class MusicName(Exception):
|
29
|
+
|
30
|
+
def __init__(self):
|
31
|
+
self.err = 'The name of the music should only be str'
|
32
|
+
|
33
|
+
def __str__(self):
|
34
|
+
return self.err
|
35
|
+
|
36
|
+
class AmountErr(Exception):
|
37
|
+
|
38
|
+
def __init__(self):
|
39
|
+
self.err = 'The amount should only be int'
|
40
|
+
|
41
|
+
def __str__(self):
|
42
|
+
return self.err
|
43
|
+
|
44
|
+
class PageCount(Exception):
|
45
|
+
|
46
|
+
def __init__(self):
|
47
|
+
self.err = 'Page count only int'
|
48
|
+
|
49
|
+
def __str__(self):
|
50
|
+
return self.err
|
51
|
+
|
52
|
+
|
53
|
+
class CountTracksErr(Exception):
|
54
|
+
|
55
|
+
def __init__(self):
|
56
|
+
self.err = 'The count tracks should only be int'
|
57
|
+
|
58
|
+
def __str__(self):
|
59
|
+
return self.err
|
60
|
+
|
61
|
+
class RedirectErr(Exception):
|
62
|
+
|
63
|
+
def __init__(self):
|
64
|
+
self.err = 'Accepts only the bool type'
|
65
|
+
|
66
|
+
def __str__(self):
|
67
|
+
return self.err
|
@@ -1,23 +1,27 @@
|
|
1
1
|
'''Рейтинговые треки'''
|
2
2
|
import fake_useragent, requests
|
3
3
|
from bs4 import BeautifulSoup
|
4
|
+
from .excepts import CountTracksErr, RedirectErr
|
4
5
|
|
5
6
|
class RatingCount:
|
6
7
|
'''
|
7
|
-
Функция для получения списка рейтинговых треков с сайта
|
8
|
+
Функция для получения списка рейтинговых треков с сайта hitmos.me.
|
8
9
|
param: count - число от 1 до 48, кол-во треков
|
9
10
|
\nДля получения информации доступны след.функции:
|
10
11
|
- get_author: list, автор трека;
|
11
12
|
- get_title: list, название трека;
|
12
13
|
- get_url_down: list, ссылка на скачивание трека;
|
13
14
|
- direct_download_link: list прямая ссылка на скачивание трека;
|
14
|
-
-
|
15
|
+
- get_duration: list, длительность трека;
|
15
16
|
- get_picture_url: list, ссылка на обложку трека;
|
16
17
|
- get_url_track: list, ссылка на трек.
|
17
18
|
|
18
19
|
'''
|
19
20
|
|
20
21
|
def __init__(self, count_tracks, get_redirect_url=False):
|
22
|
+
if isinstance(count_tracks, int) is False: raise CountTracksErr
|
23
|
+
if isinstance(get_redirect_url, bool) is False: raise RedirectErr
|
24
|
+
|
21
25
|
self.count_tracks = count_tracks
|
22
26
|
self.get_redirect_url = get_redirect_url
|
23
27
|
self.count_selection
|
@@ -48,7 +52,7 @@ param: count - число от 1 до 48, кол-во треков
|
|
48
52
|
|
49
53
|
_items = []
|
50
54
|
|
51
|
-
for idx in range(
|
55
|
+
for idx in range(len(_track_titles)):
|
52
56
|
if self.get_redirect_url and len(_track_urls_dow[idx])>0:
|
53
57
|
direct_download_link = requests.get(_track_urls_dow[idx],headers=__headers,allow_redirects=True).url
|
54
58
|
else: direct_download_link = None
|
@@ -82,7 +86,7 @@ param: count - число от 1 до 48, кол-во треков
|
|
82
86
|
return [item['direct_download_link'] for item in self.data['items']]
|
83
87
|
|
84
88
|
@property
|
85
|
-
def
|
89
|
+
def get_duration(self):
|
86
90
|
return [item['duration_track'] for item in self.data['items']]
|
87
91
|
|
88
92
|
@property
|
@@ -92,3 +96,9 @@ param: count - число от 1 до 48, кол-во треков
|
|
92
96
|
@property
|
93
97
|
def get_url_track(self):
|
94
98
|
return [item['url_track'] for item in self.data['items']]
|
99
|
+
|
100
|
+
@property
|
101
|
+
def get_author_title(self) -> list[str]:
|
102
|
+
__author = self.get_author
|
103
|
+
__title = self.get_title
|
104
|
+
return [f'{__author[i]} - {__title[i]}' for i in range(self.count_tracks)]
|
@@ -1,7 +1,8 @@
|
|
1
1
|
'''Рейтинговые треки'''
|
2
2
|
import fake_useragent, requests
|
3
3
|
from bs4 import BeautifulSoup
|
4
|
-
from
|
4
|
+
from typing import Union
|
5
|
+
from .excepts import PageError, RedirectErr, PageCount
|
5
6
|
|
6
7
|
class RatingPage:
|
7
8
|
'''
|
@@ -12,12 +13,14 @@ class RatingPage:
|
|
12
13
|
- get_title: list, название трека;
|
13
14
|
- get_url_down: list, ссылка на скачивание трека;
|
14
15
|
- direct_download_link: list прямая ссылка на скачивание трека;
|
15
|
-
-
|
16
|
+
- get_duration: list, длительность трека;
|
16
17
|
- get_picture_url: list, ссылка на обложку трека;
|
17
18
|
- get_url_track: list, ссылка на трек.
|
18
19
|
'''
|
19
20
|
def __init__(self, page_count:int, get_redirect_url=False):
|
20
|
-
|
21
|
+
if isinstance(page_count, int) is False: raise PageCount
|
22
|
+
if isinstance(get_redirect_url, bool) is False: raise RedirectErr
|
23
|
+
self.page_count = int(page_count)
|
21
24
|
self.get_redirect_url = get_redirect_url
|
22
25
|
self.page_selection
|
23
26
|
|
@@ -125,7 +128,7 @@ class RatingPage:
|
|
125
128
|
return [item['direct_download_link'] for item in self.data['items']]
|
126
129
|
|
127
130
|
@property
|
128
|
-
def
|
131
|
+
def get_duration(self):
|
129
132
|
return [item['duration_track'] for item in self.data['items']]
|
130
133
|
|
131
134
|
@property
|
@@ -139,5 +142,10 @@ class RatingPage:
|
|
139
142
|
@property
|
140
143
|
def get_all(self): return self.data
|
141
144
|
|
145
|
+
@property
|
146
|
+
def get_author_title(self) -> list[str]:
|
147
|
+
__author = self.get_author
|
148
|
+
__title = self.get_title
|
149
|
+
return [f'{__author[i]} - {__title[i]}' for i in range(self.count_tracks)]
|
142
150
|
|
143
151
|
|
@@ -1,64 +1,67 @@
|
|
1
|
-
Metadata-Version: 2.1
|
2
|
-
Name: pars-hitmotop
|
3
|
-
Version: 0.0.
|
4
|
-
Home-page: https://github.com/PY079/pars_hitmotop
|
5
|
-
Download-URL: https://github.com/PY079/pars_hitmotop/arhive/v0.0.
|
6
|
-
Author: Joy_079
|
7
|
-
Author-email: Prufu@yandex.ru
|
8
|
-
Classifier: Programming Language :: Python
|
9
|
-
Classifier: Programming Language :: Python :: 3.7
|
10
|
-
Classifier: Programming Language :: Python :: 3.8
|
11
|
-
Classifier: Programming Language :: Python :: 3.9
|
12
|
-
Classifier: Programming Language :: Python ::
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
____
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
|
56
|
-
|
57
|
-
|result.
|
58
|
-
|result.
|
59
|
-
|result.
|
60
|
-
|result.
|
61
|
-
|result.
|
62
|
-
|result.
|
63
|
-
|
64
|
-
|
1
|
+
Metadata-Version: 2.1
|
2
|
+
Name: pars-hitmotop
|
3
|
+
Version: 0.0.9
|
4
|
+
Home-page: https://github.com/PY079/pars_hitmotop
|
5
|
+
Download-URL: https://github.com/PY079/pars_hitmotop/arhive/v0.0.9.zip
|
6
|
+
Author: Joy_079
|
7
|
+
Author-email: Prufu@yandex.ru
|
8
|
+
Classifier: Programming Language :: Python
|
9
|
+
Classifier: Programming Language :: Python :: 3.7
|
10
|
+
Classifier: Programming Language :: Python :: 3.8
|
11
|
+
Classifier: Programming Language :: Python :: 3.9
|
12
|
+
Classifier: Programming Language :: Python :: 3.10
|
13
|
+
Classifier: Programming Language :: Python :: 3.11
|
14
|
+
Classifier: Programming Language :: Python :: Implementation :: PyPy
|
15
|
+
Description-Content-Type: text/markdown
|
16
|
+
|
17
|
+
# Оглавление
|
18
|
+
0. [Оглавление](https://github.com/PY079/pars_hitmotop#оглавление)
|
19
|
+
1. [Что именно парсит?](https://github.com/PY079/pars_hitmotop/blob/main/README.md#что-именно-парсит)
|
20
|
+
2. [Как использовать модуль entered_tracks](https://github.com/PY079/pars_hitmotop/blob/main/README.md#как-использовать-модуль-entered_tracks)
|
21
|
+
3. [Как использовать модуль rating_tracks_count](https://github.com/PY079/pars_hitmotop/blob/main/README.md#как-использовать-модуль-rating_tracks_count)
|
22
|
+
4. [Как использовать модуль rating_tracks_page](https://github.com/PY079/pars_hitmotop/blob/main/README.md#как-использовать-модуль-rating_tracks_page)
|
23
|
+
5. [Что можно достать при запросе?](https://github.com/PY079/pars_hitmotop/blob/main/README.md#что-можно-достать-при-запросе)
|
24
|
+
____
|
25
|
+
Этот проект парсит [музыкальный сайт](https://hitmos.me/)
|
26
|
+
____
|
27
|
+
# Что именно парсит?
|
28
|
+
1. [Рейтинговые треки](https://hitmos.me/songs/top-rated) от 1 до 48;
|
29
|
+
2. Тоже [рейтинговые треки](https://hitmos.me/songs/top-rated) но можно выбрать количество страниц, с которых будет произведен парсинг;
|
30
|
+
3. Треки введенные пользователем. Парсит от 1 трека до конечной страницы (на одной странице 48 треков)
|
31
|
+
____
|
32
|
+
## Как использовать модуль *entered_tracks*
|
33
|
+
```
|
34
|
+
from pars_hitmotop.entered_tracks import EnteredTrack
|
35
|
+
result=EnteredTrack('linkin park',10)
|
36
|
+
```
|
37
|
+
1 аргументом (music_name) передается название песни или автора. 2 Аргументом (count) передается количество треков
|
38
|
+
____
|
39
|
+
## Как использовать модуль *rating_tracks_count*
|
40
|
+
```
|
41
|
+
from pars_hitmotop.rating_tracks_count import RatingCount
|
42
|
+
result=RatingCount(10)
|
43
|
+
```
|
44
|
+
1 аргументом (count) передается количество песен
|
45
|
+
____
|
46
|
+
## Как использовать модуль *rating_tracks_page*
|
47
|
+
```
|
48
|
+
from pars_hitmotop.rating_tracks_page import RatingPage
|
49
|
+
result=RatingPage(10)
|
50
|
+
```
|
51
|
+
1 аргументом (count) передается количество страниц (max 11)
|
52
|
+
____
|
53
|
+
# Что можно достать при запросе?
|
54
|
+
Все возвращается в виде list
|
55
|
+
| Метод | Описание |
|
56
|
+
|----------------|:---------|
|
57
|
+
| result.get_author | Получить автора трека|
|
58
|
+
|result.get_title| Получить название трека|
|
59
|
+
|result.get_url_down|Получить ссылку на скачивание трека|
|
60
|
+
|result.direct_download_link|Получить прямую ссылку на скачивание трека|
|
61
|
+
|result.get_duration|Получить продолжительность трека|
|
62
|
+
|result.get_picture_url|Получить ссылку на обложку трека|
|
63
|
+
|result.get_url_track|Получить ссылку трек|
|
64
|
+
|result.get_all|Получить все данные в виде словаря|
|
65
|
+
|result.get_author_title|Получить лист в виде автор - название|
|
66
|
+
|
67
|
+
____
|
@@ -1,4 +1,4 @@
|
|
1
|
-
[egg_info]
|
2
|
-
tag_build =
|
3
|
-
tag_date = 0
|
4
|
-
|
1
|
+
[egg_info]
|
2
|
+
tag_build =
|
3
|
+
tag_date = 0
|
4
|
+
|
@@ -1,6 +1,6 @@
|
|
1
1
|
from setuptools import setup
|
2
2
|
|
3
|
-
version='0.0.
|
3
|
+
version='0.0.9'
|
4
4
|
with open('README.md', encoding='utf-8') as f:
|
5
5
|
long_description=f.read()
|
6
6
|
|
@@ -22,6 +22,8 @@ setup(
|
|
22
22
|
'Programming Language :: Python :: 3.7',
|
23
23
|
'Programming Language :: Python :: 3.8',
|
24
24
|
'Programming Language :: Python :: 3.9',
|
25
|
+
'Programming Language :: Python :: 3.10',
|
26
|
+
'Programming Language :: Python :: 3.11',
|
25
27
|
'Programming Language :: Python :: Implementation :: PyPy'
|
26
28
|
]
|
27
29
|
)
|
@@ -1,24 +0,0 @@
|
|
1
|
-
class NoFoundTrack(Exception):
|
2
|
-
|
3
|
-
def __init__(self):
|
4
|
-
self.err = 'Nothing was found for your query'
|
5
|
-
|
6
|
-
def __str__(self):
|
7
|
-
return self.err
|
8
|
-
|
9
|
-
class MaxTrack(Exception):
|
10
|
-
|
11
|
-
def __init__(self):
|
12
|
-
self.err = 'The number of tracks should not exceed 48'
|
13
|
-
|
14
|
-
def __str__(self):
|
15
|
-
return self.err
|
16
|
-
|
17
|
-
|
18
|
-
class PageError(Exception):
|
19
|
-
|
20
|
-
def __init__(self):
|
21
|
-
self.err = 'Only <= 11'
|
22
|
-
|
23
|
-
def __str__(self):
|
24
|
-
return self.err
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|