StreamingCommunity 3.0.9__tar.gz → 3.1.0__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.
Files changed (103) hide show
  1. {streamingcommunity-3.0.9/StreamingCommunity.egg-info → streamingcommunity-3.1.0}/PKG-INFO +43 -58
  2. {streamingcommunity-3.0.9 → streamingcommunity-3.1.0}/README.md +40 -57
  3. {streamingcommunity-3.0.9 → streamingcommunity-3.1.0}/StreamingCommunity/Api/Player/supervideo.py +5 -4
  4. {streamingcommunity-3.0.9 → streamingcommunity-3.1.0}/StreamingCommunity/Api/Player/vixcloud.py +14 -9
  5. {streamingcommunity-3.0.9 → streamingcommunity-3.1.0}/StreamingCommunity/Api/Site/altadefinizione/film.py +9 -1
  6. {streamingcommunity-3.0.9 → streamingcommunity-3.1.0}/StreamingCommunity/Api/Site/altadefinizione/util/ScrapeSerie.py +35 -21
  7. {streamingcommunity-3.0.9 → streamingcommunity-3.1.0}/StreamingCommunity/Api/Site/animeunity/site.py +43 -71
  8. {streamingcommunity-3.0.9 → streamingcommunity-3.1.0}/StreamingCommunity/Api/Site/streamingcommunity/film.py +4 -0
  9. {streamingcommunity-3.0.9 → streamingcommunity-3.1.0}/StreamingCommunity/Lib/Downloader/HLS/downloader.py +17 -8
  10. {streamingcommunity-3.0.9 → streamingcommunity-3.1.0}/StreamingCommunity/Upload/update.py +7 -2
  11. {streamingcommunity-3.0.9 → streamingcommunity-3.1.0}/StreamingCommunity/Upload/version.py +2 -2
  12. {streamingcommunity-3.0.9 → streamingcommunity-3.1.0}/StreamingCommunity/Util/config_json.py +1 -1
  13. {streamingcommunity-3.0.9 → streamingcommunity-3.1.0}/StreamingCommunity/Util/message.py +1 -3
  14. {streamingcommunity-3.0.9 → streamingcommunity-3.1.0}/StreamingCommunity/Util/os.py +5 -2
  15. {streamingcommunity-3.0.9 → streamingcommunity-3.1.0}/StreamingCommunity/global_search.py +2 -2
  16. {streamingcommunity-3.0.9 → streamingcommunity-3.1.0}/StreamingCommunity/run.py +71 -36
  17. {streamingcommunity-3.0.9 → streamingcommunity-3.1.0/StreamingCommunity.egg-info}/PKG-INFO +43 -58
  18. {streamingcommunity-3.0.9 → streamingcommunity-3.1.0}/StreamingCommunity.egg-info/requires.txt +2 -0
  19. {streamingcommunity-3.0.9 → streamingcommunity-3.1.0}/requirements.txt +2 -0
  20. {streamingcommunity-3.0.9 → streamingcommunity-3.1.0}/setup.py +15 -2
  21. {streamingcommunity-3.0.9 → streamingcommunity-3.1.0}/LICENSE +0 -0
  22. {streamingcommunity-3.0.9 → streamingcommunity-3.1.0}/MANIFEST.in +0 -0
  23. {streamingcommunity-3.0.9 → streamingcommunity-3.1.0}/StreamingCommunity/Api/Player/Helper/Vixcloud/js_parser.py +0 -0
  24. {streamingcommunity-3.0.9 → streamingcommunity-3.1.0}/StreamingCommunity/Api/Player/Helper/Vixcloud/util.py +0 -0
  25. {streamingcommunity-3.0.9 → streamingcommunity-3.1.0}/StreamingCommunity/Api/Player/ddl.py +0 -0
  26. {streamingcommunity-3.0.9 → streamingcommunity-3.1.0}/StreamingCommunity/Api/Player/hdplayer.py +0 -0
  27. {streamingcommunity-3.0.9 → streamingcommunity-3.1.0}/StreamingCommunity/Api/Player/maxstream.py +0 -0
  28. {streamingcommunity-3.0.9 → streamingcommunity-3.1.0}/StreamingCommunity/Api/Player/mediapolisvod.py +0 -0
  29. {streamingcommunity-3.0.9 → streamingcommunity-3.1.0}/StreamingCommunity/Api/Player/mixdrop.py +0 -0
  30. {streamingcommunity-3.0.9 → streamingcommunity-3.1.0}/StreamingCommunity/Api/Player/sweetpixel.py +0 -0
  31. {streamingcommunity-3.0.9 → streamingcommunity-3.1.0}/StreamingCommunity/Api/Site/1337xx/__init__.py +0 -0
  32. {streamingcommunity-3.0.9 → streamingcommunity-3.1.0}/StreamingCommunity/Api/Site/1337xx/site.py +0 -0
  33. {streamingcommunity-3.0.9 → streamingcommunity-3.1.0}/StreamingCommunity/Api/Site/1337xx/title.py +0 -0
  34. {streamingcommunity-3.0.9 → streamingcommunity-3.1.0}/StreamingCommunity/Api/Site/altadefinizione/__init__.py +0 -0
  35. {streamingcommunity-3.0.9 → streamingcommunity-3.1.0}/StreamingCommunity/Api/Site/altadefinizione/series.py +0 -0
  36. {streamingcommunity-3.0.9 → streamingcommunity-3.1.0}/StreamingCommunity/Api/Site/altadefinizione/site.py +0 -0
  37. {streamingcommunity-3.0.9 → streamingcommunity-3.1.0}/StreamingCommunity/Api/Site/animeunity/__init__.py +0 -0
  38. {streamingcommunity-3.0.9 → streamingcommunity-3.1.0}/StreamingCommunity/Api/Site/animeunity/film.py +0 -0
  39. {streamingcommunity-3.0.9 → streamingcommunity-3.1.0}/StreamingCommunity/Api/Site/animeunity/serie.py +0 -0
  40. {streamingcommunity-3.0.9 → streamingcommunity-3.1.0}/StreamingCommunity/Api/Site/animeunity/util/ScrapeSerie.py +0 -0
  41. {streamingcommunity-3.0.9 → streamingcommunity-3.1.0}/StreamingCommunity/Api/Site/animeworld/__init__.py +0 -0
  42. {streamingcommunity-3.0.9 → streamingcommunity-3.1.0}/StreamingCommunity/Api/Site/animeworld/film.py +0 -0
  43. {streamingcommunity-3.0.9 → streamingcommunity-3.1.0}/StreamingCommunity/Api/Site/animeworld/serie.py +0 -0
  44. {streamingcommunity-3.0.9 → streamingcommunity-3.1.0}/StreamingCommunity/Api/Site/animeworld/site.py +0 -0
  45. {streamingcommunity-3.0.9 → streamingcommunity-3.1.0}/StreamingCommunity/Api/Site/animeworld/util/ScrapeSerie.py +0 -0
  46. {streamingcommunity-3.0.9 → streamingcommunity-3.1.0}/StreamingCommunity/Api/Site/cb01new/__init__.py +0 -0
  47. {streamingcommunity-3.0.9 → streamingcommunity-3.1.0}/StreamingCommunity/Api/Site/cb01new/film.py +0 -0
  48. {streamingcommunity-3.0.9 → streamingcommunity-3.1.0}/StreamingCommunity/Api/Site/cb01new/site.py +0 -0
  49. {streamingcommunity-3.0.9 → streamingcommunity-3.1.0}/StreamingCommunity/Api/Site/guardaserie/__init__.py +0 -0
  50. {streamingcommunity-3.0.9 → streamingcommunity-3.1.0}/StreamingCommunity/Api/Site/guardaserie/series.py +0 -0
  51. {streamingcommunity-3.0.9 → streamingcommunity-3.1.0}/StreamingCommunity/Api/Site/guardaserie/site.py +0 -0
  52. {streamingcommunity-3.0.9 → streamingcommunity-3.1.0}/StreamingCommunity/Api/Site/guardaserie/util/ScrapeSerie.py +0 -0
  53. {streamingcommunity-3.0.9 → streamingcommunity-3.1.0}/StreamingCommunity/Api/Site/raiplay/__init__.py +0 -0
  54. {streamingcommunity-3.0.9 → streamingcommunity-3.1.0}/StreamingCommunity/Api/Site/raiplay/film.py +0 -0
  55. {streamingcommunity-3.0.9 → streamingcommunity-3.1.0}/StreamingCommunity/Api/Site/raiplay/series.py +0 -0
  56. {streamingcommunity-3.0.9 → streamingcommunity-3.1.0}/StreamingCommunity/Api/Site/raiplay/site.py +0 -0
  57. {streamingcommunity-3.0.9 → streamingcommunity-3.1.0}/StreamingCommunity/Api/Site/raiplay/util/ScrapeSerie.py +0 -0
  58. {streamingcommunity-3.0.9 → streamingcommunity-3.1.0}/StreamingCommunity/Api/Site/streamingcommunity/__init__.py +0 -0
  59. {streamingcommunity-3.0.9 → streamingcommunity-3.1.0}/StreamingCommunity/Api/Site/streamingcommunity/series.py +0 -0
  60. {streamingcommunity-3.0.9 → streamingcommunity-3.1.0}/StreamingCommunity/Api/Site/streamingcommunity/site.py +0 -0
  61. {streamingcommunity-3.0.9 → streamingcommunity-3.1.0}/StreamingCommunity/Api/Site/streamingcommunity/util/ScrapeSerie.py +0 -0
  62. {streamingcommunity-3.0.9 → streamingcommunity-3.1.0}/StreamingCommunity/Api/Site/streamingwatch/__init__.py +0 -0
  63. {streamingcommunity-3.0.9 → streamingcommunity-3.1.0}/StreamingCommunity/Api/Site/streamingwatch/film.py +0 -0
  64. {streamingcommunity-3.0.9 → streamingcommunity-3.1.0}/StreamingCommunity/Api/Site/streamingwatch/series.py +0 -0
  65. {streamingcommunity-3.0.9 → streamingcommunity-3.1.0}/StreamingCommunity/Api/Site/streamingwatch/site.py +0 -0
  66. {streamingcommunity-3.0.9 → streamingcommunity-3.1.0}/StreamingCommunity/Api/Site/streamingwatch/util/ScrapeSerie.py +0 -0
  67. {streamingcommunity-3.0.9 → streamingcommunity-3.1.0}/StreamingCommunity/Api/Template/Class/SearchType.py +0 -0
  68. {streamingcommunity-3.0.9 → streamingcommunity-3.1.0}/StreamingCommunity/Api/Template/Util/__init__.py +0 -0
  69. {streamingcommunity-3.0.9 → streamingcommunity-3.1.0}/StreamingCommunity/Api/Template/Util/manage_ep.py +0 -0
  70. {streamingcommunity-3.0.9 → streamingcommunity-3.1.0}/StreamingCommunity/Api/Template/__init__.py +0 -0
  71. {streamingcommunity-3.0.9 → streamingcommunity-3.1.0}/StreamingCommunity/Api/Template/config_loader.py +0 -0
  72. {streamingcommunity-3.0.9 → streamingcommunity-3.1.0}/StreamingCommunity/Api/Template/site.py +0 -0
  73. {streamingcommunity-3.0.9 → streamingcommunity-3.1.0}/StreamingCommunity/Lib/Downloader/HLS/segments.py +0 -0
  74. {streamingcommunity-3.0.9 → streamingcommunity-3.1.0}/StreamingCommunity/Lib/Downloader/MP4/downloader.py +0 -0
  75. {streamingcommunity-3.0.9 → streamingcommunity-3.1.0}/StreamingCommunity/Lib/Downloader/TOR/downloader.py +0 -0
  76. {streamingcommunity-3.0.9 → streamingcommunity-3.1.0}/StreamingCommunity/Lib/Downloader/__init__.py +0 -0
  77. {streamingcommunity-3.0.9 → streamingcommunity-3.1.0}/StreamingCommunity/Lib/FFmpeg/__init__.py +0 -0
  78. {streamingcommunity-3.0.9 → streamingcommunity-3.1.0}/StreamingCommunity/Lib/FFmpeg/capture.py +0 -0
  79. {streamingcommunity-3.0.9 → streamingcommunity-3.1.0}/StreamingCommunity/Lib/FFmpeg/command.py +0 -0
  80. {streamingcommunity-3.0.9 → streamingcommunity-3.1.0}/StreamingCommunity/Lib/FFmpeg/util.py +0 -0
  81. {streamingcommunity-3.0.9 → streamingcommunity-3.1.0}/StreamingCommunity/Lib/M3U8/__init__.py +0 -0
  82. {streamingcommunity-3.0.9 → streamingcommunity-3.1.0}/StreamingCommunity/Lib/M3U8/decryptor.py +0 -0
  83. {streamingcommunity-3.0.9 → streamingcommunity-3.1.0}/StreamingCommunity/Lib/M3U8/estimator.py +0 -0
  84. {streamingcommunity-3.0.9 → streamingcommunity-3.1.0}/StreamingCommunity/Lib/M3U8/parser.py +0 -0
  85. {streamingcommunity-3.0.9 → streamingcommunity-3.1.0}/StreamingCommunity/Lib/M3U8/url_fixer.py +0 -0
  86. {streamingcommunity-3.0.9 → streamingcommunity-3.1.0}/StreamingCommunity/Lib/Proxies/proxy.py +0 -0
  87. {streamingcommunity-3.0.9 → streamingcommunity-3.1.0}/StreamingCommunity/Lib/TMBD/__init__.py +0 -0
  88. {streamingcommunity-3.0.9 → streamingcommunity-3.1.0}/StreamingCommunity/Lib/TMBD/obj_tmbd.py +0 -0
  89. {streamingcommunity-3.0.9 → streamingcommunity-3.1.0}/StreamingCommunity/Lib/TMBD/tmdb.py +0 -0
  90. {streamingcommunity-3.0.9 → streamingcommunity-3.1.0}/StreamingCommunity/TelegramHelp/__init__.py +0 -0
  91. {streamingcommunity-3.0.9 → streamingcommunity-3.1.0}/StreamingCommunity/TelegramHelp/config.json +0 -0
  92. {streamingcommunity-3.0.9 → streamingcommunity-3.1.0}/StreamingCommunity/TelegramHelp/telegram_bot.py +0 -0
  93. {streamingcommunity-3.0.9 → streamingcommunity-3.1.0}/StreamingCommunity/Util/color.py +0 -0
  94. {streamingcommunity-3.0.9 → streamingcommunity-3.1.0}/StreamingCommunity/Util/ffmpeg_installer.py +0 -0
  95. {streamingcommunity-3.0.9 → streamingcommunity-3.1.0}/StreamingCommunity/Util/headers.py +0 -0
  96. {streamingcommunity-3.0.9 → streamingcommunity-3.1.0}/StreamingCommunity/Util/logger.py +0 -0
  97. {streamingcommunity-3.0.9 → streamingcommunity-3.1.0}/StreamingCommunity/Util/table.py +0 -0
  98. {streamingcommunity-3.0.9 → streamingcommunity-3.1.0}/StreamingCommunity/__init__.py +0 -0
  99. {streamingcommunity-3.0.9 → streamingcommunity-3.1.0}/StreamingCommunity.egg-info/SOURCES.txt +0 -0
  100. {streamingcommunity-3.0.9 → streamingcommunity-3.1.0}/StreamingCommunity.egg-info/dependency_links.txt +0 -0
  101. {streamingcommunity-3.0.9 → streamingcommunity-3.1.0}/StreamingCommunity.egg-info/entry_points.txt +0 -0
  102. {streamingcommunity-3.0.9 → streamingcommunity-3.1.0}/StreamingCommunity.egg-info/top_level.txt +0 -0
  103. {streamingcommunity-3.0.9 → streamingcommunity-3.1.0}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: StreamingCommunity
3
- Version: 3.0.9
3
+ Version: 3.1.0
4
4
  Home-page: https://github.com/Lovi-0/StreamingCommunity
5
5
  Author: Lovi-0
6
6
  Project-URL: Bug Reports, https://github.com/Lovi-0/StreamingCommunity/issues
@@ -17,6 +17,7 @@ Requires-Dist: m3u8
17
17
  Requires-Dist: certifi
18
18
  Requires-Dist: psutil
19
19
  Requires-Dist: unidecode
20
+ Requires-Dist: curl_cffi
20
21
  Requires-Dist: dnspython
21
22
  Requires-Dist: jsbeautifier
22
23
  Requires-Dist: pathvalidate
@@ -24,6 +25,7 @@ Requires-Dist: pycryptodomex
24
25
  Requires-Dist: ua-generator
25
26
  Requires-Dist: qbittorrent-api
26
27
  Requires-Dist: pyTelegramBotAPI
28
+ Requires-Dist: beautifulsoup4
27
29
  Dynamic: author
28
30
  Dynamic: description
29
31
  Dynamic: description-content-type
@@ -34,36 +36,32 @@ Dynamic: project-url
34
36
  Dynamic: requires-dist
35
37
  Dynamic: requires-python
36
38
 
37
- <p align="center">
38
- <img src="https://i.ibb.co/v6RnT0wY/s2.jpg" alt="Project Logo" width="450"/>
39
- </p>
40
-
41
- <p align="center">
42
- <a href="https://pypi.org/project/streamingcommunity">
43
- <img src="https://img.shields.io/pypi/v/streamingcommunity?logo=pypi&labelColor=555555&style=for-the-badge" alt="PyPI"/>
44
- </a>
45
- <a href="https://www.paypal.com/donate/?hosted_button_id=UXTWMT8P6HE2C">
46
- <img src="https://img.shields.io/badge/_-Donate-red.svg?logo=githubsponsors&labelColor=555555&style=for-the-badge" alt="Donate"/>
47
- </a>
48
- <a href="https://github.com/Arrowar/StreamingCommunity/commits">
49
- <img src="https://img.shields.io/github/commit-activity/m/Arrowar/StreamingCommunity?label=commits&style=for-the-badge" alt="Commits"/>
50
- </a>
51
- <a href="https://github.com/Arrowar/StreamingCommunity/commits">
52
- <img src="https://img.shields.io/github/last-commit/Arrowar/StreamingCommunity/main?label=&style=for-the-badge&display_timestamp=committer" alt="Last Commit"/>
53
- </a>
54
- </p>
55
-
56
- <p align="center">
57
- <a href="https://github.com/Arrowar/StreamingCommunity/blob/main/LICENSE">
58
- <img src="https://img.shields.io/badge/License-GPL_3.0-blue.svg?style=for-the-badge" alt="License"/>
59
- </a>
60
- <a href="https://pypi.org/project/streamingcommunity">
61
- <img src="https://img.shields.io/pypi/dm/streamingcommunity?style=for-the-badge" alt="PyPI Downloads"/>
62
- </a>
63
- <a href="https://github.com/Arrowar/StreamingCommunity">
64
- <img src="https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/Arrowar/StreamingCommunity/main/.github/media/loc-badge.json&style=for-the-badge" alt="Lines of Code"/>
65
- </a>
66
- </p>
39
+ <div align="center">
40
+
41
+ ## 📊 Project Status & Info
42
+
43
+ [![PyPI Version](https://img.shields.io/pypi/v/streamingcommunity?logo=pypi&logoColor=white&labelColor=2d3748&color=3182ce&style=for-the-badge)](https://pypi.org/project/streamingcommunity)
44
+ [![Downloads](https://img.shields.io/pypi/dm/streamingcommunity?logo=pypi&logoColor=white&labelColor=2d3748&color=38a169&style=for-the-badge)](https://pypi.org/project/streamingcommunity)
45
+ [![License](https://img.shields.io/github/license/Arrowar/StreamingCommunity?logo=gnu&logoColor=white&labelColor=2d3748&color=e53e3e&style=for-the-badge)](https://github.com/Arrowar/StreamingCommunity/blob/main/LICENSE)
46
+
47
+ [![Code Lines](https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/Arrowar/StreamingCommunity/main/.github/.domain/loc-badge.json&style=for-the-badge&labelColor=2d3748)](https://github.com/Arrowar/StreamingCommunity)
48
+ [![Last Commit](https://img.shields.io/github/last-commit/Arrowar/StreamingCommunity?logo=git&logoColor=white&labelColor=2d3748&color=805ad5&style=for-the-badge)](https://github.com/Arrowar/StreamingCommunity/commits)
49
+ [![Issues](https://img.shields.io/github/issues/Arrowar/StreamingCommunity?logo=github&logoColor=white&labelColor=2d3748&color=ed8936&style=for-the-badge)](https://github.com/Arrowar/StreamingCommunity/issues)
50
+
51
+ ## 💝 Support the Project
52
+
53
+ [![Donate PayPal](https://img.shields.io/badge/💳_Donate-PayPal-00457C?style=for-the-badge&logo=paypal&logoColor=white&labelColor=2d3748)](https://www.paypal.com/donate/?hosted_button_id=UXTWMT8P6HE2C)
54
+ ## 🚀 Download & Install
55
+
56
+ [![Windows](https://img.shields.io/badge/🪟_Windows-0078D4?style=for-the-badge&logo=windows&logoColor=white&labelColor=2d3748)](https://github.com/Arrowar/StreamingCommunity/releases/latest/download/StreamingCommunity_win.exe)
57
+ [![macOS](https://img.shields.io/badge/🍎_macOS-000000?style=for-the-badge&logo=apple&logoColor=white&labelColor=2d3748)](https://github.com/Arrowar/StreamingCommunity/releases/latest/download/StreamingCommunity_mac)
58
+ [![Linux latest](https://img.shields.io/badge/🐧_Linux_latest-FCC624?style=for-the-badge&logo=linux&logoColor=black&labelColor=2d3748)](https://github.com/Arrowar/StreamingCommunity/releases/latest/download/StreamingCommunity_linux_latest)
59
+ [![Linux 22.04](https://img.shields.io/badge/🐧_Linux_22.04-FCC624?style=for-the-badge&logo=linux&logoColor=black&labelColor=2d3748)](https://github.com/Arrowar/StreamingCommunity/releases/latest/download/StreamingCommunity_linux_previous)
60
+ ---
61
+
62
+ *⚡ **Quick Start:** `pip install streamingcommunity` or download the executable for your platform above*
63
+
64
+ </div>
67
65
 
68
66
  # 📋 Table of Contents
69
67
 
@@ -112,24 +110,6 @@ Dynamic: requires-python
112
110
 
113
111
  # Installation
114
112
 
115
- <p align="center">
116
- <a href="https://github.com/Arrowar/StreamingCommunity/releases/latest/download/StreamingCommunity_win.exe">
117
- <img src="https://img.shields.io/badge/-Windows-blue.svg?style=for-the-badge&logo=windows" alt="Windows">
118
- </a>
119
- <a href="https://github.com/Arrowar/StreamingCommunity/releases/latest/download/StreamingCommunity_mac">
120
- <img src="https://img.shields.io/badge/-macOS-black.svg?style=for-the-badge&logo=apple" alt="macOS">
121
- </a>
122
- <a href="https://github.com/Arrowar/StreamingCommunity/releases/latest/download/StreamingCommunity_linux">
123
- <img src="https://img.shields.io/badge/-Linux-orange.svg?style=for-the-badge&logo=linux" alt="Linux">
124
- </a>
125
- <a href="https://github.com/Arrowar/StreamingCommunity/releases/latest/download/StreamingCommunity_linux_previous">
126
- <img src="https://img.shields.io/badge/-Linux Previous-gray.svg?style=for-the-badge&logo=linux" alt="Linux Previous">
127
- </a>
128
- <a href="https://github.com/Arrowar/StreamingCommunity/releases">
129
- <img src="https://img.shields.io/badge/-All Versions-lightgrey.svg?style=for-the-badge&logo=github" alt="All Versions">
130
- </a>
131
- </p>
132
-
133
113
  ## 1. PyPI Installation
134
114
 
135
115
  Install directly from PyPI:
@@ -554,7 +534,7 @@ To enable qBittorrent integration, follow the setup guide [here](https://github.
554
534
  "download_subtitle": true,
555
535
  "merge_subs": true,
556
536
  "specific_list_subtitles": [
557
- "ita",
537
+ "ita", // Specify language codes or use ["*"] to download all available subtitles
558
538
  "eng"
559
539
  ],
560
540
  "cleanup_tmp_folder": true
@@ -580,6 +560,8 @@ To enable qBittorrent integration, follow the setup guide [here](https://github.
580
560
  - `download_subtitle`: Whether to download subtitles
581
561
  - `merge_subs`: Whether to merge subtitles with video
582
562
  - `specific_list_subtitles`: List of subtitle languages to download
563
+ * Use `["*"]` to download all available subtitles
564
+ * Or specify individual languages like `["ita", "eng"]`
583
565
  * Can be changed with `--specific_list_subtitles ita,eng`
584
566
 
585
567
  #### Cleanup
@@ -731,8 +713,14 @@ python test_run.py --specific_list_audio ita,eng --specific_list_subtitles eng,s
731
713
  # Keep console open after download
732
714
  python test_run.py --not_close true
733
715
 
734
- # Use global search
716
+ # Use global searchAdd commentMore actions
735
717
  python test_run.py --global -s "cars"
718
+
719
+ # Select specific category
720
+ python test_run.py --category 1 # Search in anime category
721
+ python test_run.py --category 2 # Search in movies & series
722
+ python test_run.py --category 3 # Search in series
723
+ python test_run.py --category 4 # Search in torrent category
736
724
  ```
737
725
 
738
726
  # Docker
@@ -826,10 +814,10 @@ python3 telegram_bot.py
826
814
 
827
815
  # Tutorials
828
816
 
829
- - [Windows Tutorial](https://www.youtube.com/watch?v=mZGqK4wdN-k)
830
- - [Linux Tutorial](https://www.youtube.com/watch?v=0qUNXPE_mTg)
831
- - [Pypy Tutorial](https://www.youtube.com/watch?v=C6m9ZKOK0p4)
832
- - [Compiled .exe Tutorial](https://www.youtube.com/watch?v=pm4lqsxkTVo)
817
+ - [Windows](https://www.youtube.com/watch?v=mZGqK4wdN-k)
818
+ - [Linux](https://www.youtube.com/watch?v=0qUNXPE_mTg)
819
+ - [Pypy](https://www.youtube.com/watch?v=C6m9ZKOK0p4)
820
+ - [Compiled](https://www.youtube.com/watch?v=pm4lqsxkTVo)
833
821
 
834
822
  # To Do
835
823
 
@@ -848,9 +836,6 @@ Addon per Stremio che consente lo streaming HTTPS di film, serie, anime e TV in
848
836
  ### 🧩 [streamingcommunity-unofficialapi](https://github.com/Blu-Tiger/streamingcommunity-unofficialapi)
849
837
  API non ufficiale per accedere ai contenuti del sito italiano StreamingCommunity.
850
838
 
851
- ### 🎥 [stream-buddy](https://github.com/Bbalduzz/stream-buddy)
852
- Tool per guardare o scaricare film dalla piattaforma StreamingCommunity.
853
-
854
839
  # Disclaimer
855
840
 
856
841
  This software is provided "as is", without warranty of any kind, express or implied, including but not limited to the warranties of merchantability, fitness for a particular purpose, and noninfringement. In no event shall the authors or copyright holders be liable for any claim, damages, or other liability, whether in an action of contract, tort, or otherwise, arising from, out of, or in connection with the software or the use or other dealings in the software.
@@ -1,33 +1,29 @@
1
- <p align="center">
2
- <img src="https://i.ibb.co/v6RnT0wY/s2.jpg" alt="Project Logo" width="450"/>
3
- </p>
4
-
5
- <p align="center">
6
- <a href="https://pypi.org/project/streamingcommunity">
7
- <img src="https://img.shields.io/pypi/v/streamingcommunity?logo=pypi&labelColor=555555&style=for-the-badge" alt="PyPI"/>
8
- </a>
9
- <a href="https://www.paypal.com/donate/?hosted_button_id=UXTWMT8P6HE2C">
10
- <img src="https://img.shields.io/badge/_-Donate-red.svg?logo=githubsponsors&labelColor=555555&style=for-the-badge" alt="Donate"/>
11
- </a>
12
- <a href="https://github.com/Arrowar/StreamingCommunity/commits">
13
- <img src="https://img.shields.io/github/commit-activity/m/Arrowar/StreamingCommunity?label=commits&style=for-the-badge" alt="Commits"/>
14
- </a>
15
- <a href="https://github.com/Arrowar/StreamingCommunity/commits">
16
- <img src="https://img.shields.io/github/last-commit/Arrowar/StreamingCommunity/main?label=&style=for-the-badge&display_timestamp=committer" alt="Last Commit"/>
17
- </a>
18
- </p>
19
-
20
- <p align="center">
21
- <a href="https://github.com/Arrowar/StreamingCommunity/blob/main/LICENSE">
22
- <img src="https://img.shields.io/badge/License-GPL_3.0-blue.svg?style=for-the-badge" alt="License"/>
23
- </a>
24
- <a href="https://pypi.org/project/streamingcommunity">
25
- <img src="https://img.shields.io/pypi/dm/streamingcommunity?style=for-the-badge" alt="PyPI Downloads"/>
26
- </a>
27
- <a href="https://github.com/Arrowar/StreamingCommunity">
28
- <img src="https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/Arrowar/StreamingCommunity/main/.github/media/loc-badge.json&style=for-the-badge" alt="Lines of Code"/>
29
- </a>
30
- </p>
1
+ <div align="center">
2
+
3
+ ## 📊 Project Status & Info
4
+
5
+ [![PyPI Version](https://img.shields.io/pypi/v/streamingcommunity?logo=pypi&logoColor=white&labelColor=2d3748&color=3182ce&style=for-the-badge)](https://pypi.org/project/streamingcommunity)
6
+ [![Downloads](https://img.shields.io/pypi/dm/streamingcommunity?logo=pypi&logoColor=white&labelColor=2d3748&color=38a169&style=for-the-badge)](https://pypi.org/project/streamingcommunity)
7
+ [![License](https://img.shields.io/github/license/Arrowar/StreamingCommunity?logo=gnu&logoColor=white&labelColor=2d3748&color=e53e3e&style=for-the-badge)](https://github.com/Arrowar/StreamingCommunity/blob/main/LICENSE)
8
+
9
+ [![Code Lines](https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/Arrowar/StreamingCommunity/main/.github/.domain/loc-badge.json&style=for-the-badge&labelColor=2d3748)](https://github.com/Arrowar/StreamingCommunity)
10
+ [![Last Commit](https://img.shields.io/github/last-commit/Arrowar/StreamingCommunity?logo=git&logoColor=white&labelColor=2d3748&color=805ad5&style=for-the-badge)](https://github.com/Arrowar/StreamingCommunity/commits)
11
+ [![Issues](https://img.shields.io/github/issues/Arrowar/StreamingCommunity?logo=github&logoColor=white&labelColor=2d3748&color=ed8936&style=for-the-badge)](https://github.com/Arrowar/StreamingCommunity/issues)
12
+
13
+ ## 💝 Support the Project
14
+
15
+ [![Donate PayPal](https://img.shields.io/badge/💳_Donate-PayPal-00457C?style=for-the-badge&logo=paypal&logoColor=white&labelColor=2d3748)](https://www.paypal.com/donate/?hosted_button_id=UXTWMT8P6HE2C)
16
+ ## 🚀 Download & Install
17
+
18
+ [![Windows](https://img.shields.io/badge/🪟_Windows-0078D4?style=for-the-badge&logo=windows&logoColor=white&labelColor=2d3748)](https://github.com/Arrowar/StreamingCommunity/releases/latest/download/StreamingCommunity_win.exe)
19
+ [![macOS](https://img.shields.io/badge/🍎_macOS-000000?style=for-the-badge&logo=apple&logoColor=white&labelColor=2d3748)](https://github.com/Arrowar/StreamingCommunity/releases/latest/download/StreamingCommunity_mac)
20
+ [![Linux latest](https://img.shields.io/badge/🐧_Linux_latest-FCC624?style=for-the-badge&logo=linux&logoColor=black&labelColor=2d3748)](https://github.com/Arrowar/StreamingCommunity/releases/latest/download/StreamingCommunity_linux_latest)
21
+ [![Linux 22.04](https://img.shields.io/badge/🐧_Linux_22.04-FCC624?style=for-the-badge&logo=linux&logoColor=black&labelColor=2d3748)](https://github.com/Arrowar/StreamingCommunity/releases/latest/download/StreamingCommunity_linux_previous)
22
+ ---
23
+
24
+ *⚡ **Quick Start:** `pip install streamingcommunity` or download the executable for your platform above*
25
+
26
+ </div>
31
27
 
32
28
  # 📋 Table of Contents
33
29
 
@@ -76,24 +72,6 @@
76
72
 
77
73
  # Installation
78
74
 
79
- <p align="center">
80
- <a href="https://github.com/Arrowar/StreamingCommunity/releases/latest/download/StreamingCommunity_win.exe">
81
- <img src="https://img.shields.io/badge/-Windows-blue.svg?style=for-the-badge&logo=windows" alt="Windows">
82
- </a>
83
- <a href="https://github.com/Arrowar/StreamingCommunity/releases/latest/download/StreamingCommunity_mac">
84
- <img src="https://img.shields.io/badge/-macOS-black.svg?style=for-the-badge&logo=apple" alt="macOS">
85
- </a>
86
- <a href="https://github.com/Arrowar/StreamingCommunity/releases/latest/download/StreamingCommunity_linux">
87
- <img src="https://img.shields.io/badge/-Linux-orange.svg?style=for-the-badge&logo=linux" alt="Linux">
88
- </a>
89
- <a href="https://github.com/Arrowar/StreamingCommunity/releases/latest/download/StreamingCommunity_linux_previous">
90
- <img src="https://img.shields.io/badge/-Linux Previous-gray.svg?style=for-the-badge&logo=linux" alt="Linux Previous">
91
- </a>
92
- <a href="https://github.com/Arrowar/StreamingCommunity/releases">
93
- <img src="https://img.shields.io/badge/-All Versions-lightgrey.svg?style=for-the-badge&logo=github" alt="All Versions">
94
- </a>
95
- </p>
96
-
97
75
  ## 1. PyPI Installation
98
76
 
99
77
  Install directly from PyPI:
@@ -518,7 +496,7 @@ To enable qBittorrent integration, follow the setup guide [here](https://github.
518
496
  "download_subtitle": true,
519
497
  "merge_subs": true,
520
498
  "specific_list_subtitles": [
521
- "ita",
499
+ "ita", // Specify language codes or use ["*"] to download all available subtitles
522
500
  "eng"
523
501
  ],
524
502
  "cleanup_tmp_folder": true
@@ -544,6 +522,8 @@ To enable qBittorrent integration, follow the setup guide [here](https://github.
544
522
  - `download_subtitle`: Whether to download subtitles
545
523
  - `merge_subs`: Whether to merge subtitles with video
546
524
  - `specific_list_subtitles`: List of subtitle languages to download
525
+ * Use `["*"]` to download all available subtitles
526
+ * Or specify individual languages like `["ita", "eng"]`
547
527
  * Can be changed with `--specific_list_subtitles ita,eng`
548
528
 
549
529
  #### Cleanup
@@ -695,8 +675,14 @@ python test_run.py --specific_list_audio ita,eng --specific_list_subtitles eng,s
695
675
  # Keep console open after download
696
676
  python test_run.py --not_close true
697
677
 
698
- # Use global search
678
+ # Use global searchAdd commentMore actions
699
679
  python test_run.py --global -s "cars"
680
+
681
+ # Select specific category
682
+ python test_run.py --category 1 # Search in anime category
683
+ python test_run.py --category 2 # Search in movies & series
684
+ python test_run.py --category 3 # Search in series
685
+ python test_run.py --category 4 # Search in torrent category
700
686
  ```
701
687
 
702
688
  # Docker
@@ -790,10 +776,10 @@ python3 telegram_bot.py
790
776
 
791
777
  # Tutorials
792
778
 
793
- - [Windows Tutorial](https://www.youtube.com/watch?v=mZGqK4wdN-k)
794
- - [Linux Tutorial](https://www.youtube.com/watch?v=0qUNXPE_mTg)
795
- - [Pypy Tutorial](https://www.youtube.com/watch?v=C6m9ZKOK0p4)
796
- - [Compiled .exe Tutorial](https://www.youtube.com/watch?v=pm4lqsxkTVo)
779
+ - [Windows](https://www.youtube.com/watch?v=mZGqK4wdN-k)
780
+ - [Linux](https://www.youtube.com/watch?v=0qUNXPE_mTg)
781
+ - [Pypy](https://www.youtube.com/watch?v=C6m9ZKOK0p4)
782
+ - [Compiled](https://www.youtube.com/watch?v=pm4lqsxkTVo)
797
783
 
798
784
  # To Do
799
785
 
@@ -812,9 +798,6 @@ Addon per Stremio che consente lo streaming HTTPS di film, serie, anime e TV in
812
798
  ### 🧩 [streamingcommunity-unofficialapi](https://github.com/Blu-Tiger/streamingcommunity-unofficialapi)
813
799
  API non ufficiale per accedere ai contenuti del sito italiano StreamingCommunity.
814
800
 
815
- ### 🎥 [stream-buddy](https://github.com/Bbalduzz/stream-buddy)
816
- Tool per guardare o scaricare film dalla piattaforma StreamingCommunity.
817
-
818
801
  # Disclaimer
819
802
 
820
803
  This software is provided "as is", without warranty of any kind, express or implied, including but not limited to the warranties of merchantability, fitness for a particular purpose, and noninfringement. In no event shall the authors or copyright holders be liable for any claim, damages, or other liability, whether in an action of contract, tort, or otherwise, arising from, out of, or in connection with the software or the use or other dealings in the software.
@@ -5,9 +5,9 @@ import logging
5
5
 
6
6
 
7
7
  # External libraries
8
- import httpx
9
8
  import jsbeautifier
10
9
  from bs4 import BeautifulSoup
10
+ from curl_cffi import requests
11
11
 
12
12
 
13
13
  # Internal utilities
@@ -28,7 +28,6 @@ class VideoSource:
28
28
  - url (str): The URL of the video source.
29
29
  """
30
30
  self.headers = get_headers()
31
- self.client = httpx.Client()
32
31
  self.url = url
33
32
 
34
33
  def make_request(self, url: str) -> str:
@@ -42,8 +41,10 @@ class VideoSource:
42
41
  - str: The response content if successful, None otherwise.
43
42
  """
44
43
  try:
45
- response = self.client.get(url, headers=self.headers, timeout=MAX_TIMEOUT, follow_redirects=True)
46
- response.raise_for_status()
44
+ response = requests.get(url, headers=self.headers, timeout=MAX_TIMEOUT, impersonate="chrome110")
45
+ if response.status_code >= 400:
46
+ logging.error(f"Request failed with status code: {response.status_code}")
47
+ return None
47
48
  return response.text
48
49
 
49
50
  except Exception as e:
@@ -39,6 +39,7 @@ class VideoSource:
39
39
  self.is_series = is_series
40
40
  self.media_id = media_id
41
41
  self.iframe_src = None
42
+ self.window_parameter = None
42
43
 
43
44
  def get_iframe(self, episode_id: int) -> None:
44
45
  """
@@ -109,41 +110,45 @@ class VideoSource:
109
110
  # Parse script to get video information
110
111
  self.parse_script(script_text=script)
111
112
 
113
+ except httpx.HTTPStatusError as e:
114
+ if e.response.status_code == 404:
115
+ console.print("[yellow]This content will be available soon![/yellow]")
116
+ return
117
+
118
+ logging.error(f"Error getting content: {e}")
119
+ raise
120
+
112
121
  except Exception as e:
113
122
  logging.error(f"Error getting content: {e}")
114
123
  raise
115
124
 
116
- def get_playlist(self) -> str:
125
+ def get_playlist(self) -> str | None:
117
126
  """
118
127
  Generate authenticated playlist URL.
119
128
 
120
129
  Returns:
121
- str: Fully constructed playlist URL with authentication parameters
130
+ str | None: Fully constructed playlist URL with authentication parameters, or None if content unavailable
122
131
  """
132
+ if not self.window_parameter:
133
+ return None
134
+
123
135
  params = {}
124
136
 
125
- # Add 'h' parameter if video quality is 1080p
126
137
  if self.canPlayFHD:
127
138
  params['h'] = 1
128
139
 
129
- # Parse the original URL
130
140
  parsed_url = urlparse(self.window_parameter.url)
131
141
  query_params = parse_qs(parsed_url.query)
132
142
 
133
- # Check specifically for 'b=1' in the query parameters
134
143
  if 'b' in query_params and query_params['b'] == ['1']:
135
144
  params['b'] = 1
136
145
 
137
- # Add authentication parameters (token and expiration)
138
146
  params.update({
139
147
  "token": self.window_parameter.token,
140
148
  "expires": self.window_parameter.expires
141
149
  })
142
150
 
143
- # Build the updated query string
144
151
  query_string = urlencode(params)
145
-
146
- # Construct the new URL with updated query parameters
147
152
  return urlunparse(parsed_url._replace(query=query_string))
148
153
 
149
154
 
@@ -61,16 +61,22 @@ def download_film(select_title: MediaItem) -> str:
61
61
  # Extract mostraguarda URL
62
62
  try:
63
63
  response = httpx.get(select_title.url, headers=get_headers(), timeout=10)
64
+ response.raise_for_status()
65
+
64
66
  soup = BeautifulSoup(response.text, 'html.parser')
65
67
  iframes = soup.find_all('iframe')
66
68
  mostraguarda = iframes[0]['src']
67
69
 
68
70
  except Exception as e:
69
71
  console.print(f"[red]Site: {site_constant.SITE_NAME}, request error: {e}, get mostraguarda")
72
+ return None
70
73
 
71
74
  # Extract supervideo URL
75
+ supervideo_url = None
72
76
  try:
73
77
  response = httpx.get(mostraguarda, headers=get_headers(), timeout=10)
78
+ response.raise_for_status()
79
+
74
80
  soup = BeautifulSoup(response.text, 'html.parser')
75
81
  pattern = r'//supervideo\.[^/]+/[a-z]/[a-zA-Z0-9]+'
76
82
  supervideo_match = re.search(pattern, response.text)
@@ -78,7 +84,9 @@ def download_film(select_title: MediaItem) -> str:
78
84
 
79
85
  except Exception as e:
80
86
  console.print(f"[red]Site: {site_constant.SITE_NAME}, request error: {e}, get supervideo URL")
81
-
87
+ console.print("[yellow]This content will be available soon![/yellow]")
88
+ return None
89
+
82
90
  # Init class
83
91
  video_source = VideoSource(supervideo_url)
84
92
  master_playlist = video_source.get_playlist()
@@ -38,38 +38,52 @@ class GetSerieInfo:
38
38
  soup = BeautifulSoup(response.text, "html.parser")
39
39
  self.series_name = soup.find("title").get_text(strip=True).split(" - ")[0]
40
40
 
41
- # Process all seasons
42
- season_items = soup.find_all('div', class_='accordion-item')
43
-
44
- for season_idx, season_item in enumerate(season_items, 1):
45
- season_header = season_item.find('div', class_='accordion-header')
46
- if not season_header:
47
- continue
48
-
49
- season_name = season_header.get_text(strip=True)
41
+ # Find all season dropdowns
42
+ seasons_dropdown = soup.find('div', class_='dropdown seasons')
43
+ if not seasons_dropdown:
44
+ return
45
+
46
+ # Get all season items
47
+ season_items = seasons_dropdown.find_all('span', {'data-season': True})
48
+
49
+ for season_item in season_items:
50
+ season_num = int(season_item['data-season'])
51
+ season_name = season_item.get_text(strip=True)
50
52
 
51
- # Create a new season and get a reference to it
53
+ # Create a new season
52
54
  current_season = self.seasons_manager.add_season({
53
- 'number': season_idx,
55
+ 'number': season_num,
54
56
  'name': season_name
55
57
  })
56
58
 
57
- # Find episodes for this season
58
- episode_divs = season_item.find_all('div', class_='down-episode')
59
- for ep_idx, ep_div in enumerate(episode_divs, 1):
60
- episode_name_tag = ep_div.find('b')
61
- if not episode_name_tag:
59
+ # Find all episodes for this season
60
+ episodes_container = soup.find('div', {'class': 'dropdown mirrors', 'data-season': str(season_num)})
61
+ if not episodes_container:
62
+ continue
63
+
64
+ # Get all episode mirrors for this season
65
+ episode_mirrors = soup.find_all('div', {'class': 'dropdown mirrors',
66
+ 'data-season': str(season_num)})
67
+
68
+ for mirror in episode_mirrors:
69
+ episode_data = mirror.get('data-episode', '').split('-')
70
+ if len(episode_data) != 2:
71
+ continue
72
+
73
+ ep_num = int(episode_data[1])
74
+
75
+ # Find supervideo link
76
+ supervideo_span = mirror.find('span', {'data-id': 'supervideo'})
77
+ if not supervideo_span:
62
78
  continue
63
79
 
64
- episode_name = episode_name_tag.get_text(strip=True)
65
- link_tag = ep_div.find('a', string=lambda text: text and "Supervideo" in text)
66
- episode_url = link_tag['href'] if link_tag else None
80
+ episode_url = supervideo_span.get('data-link', '')
67
81
 
68
82
  # Add episode to the season
69
83
  if current_season:
70
84
  current_season.episodes.add({
71
- 'number': ep_idx,
72
- 'name': episode_name,
85
+ 'number': ep_num,
86
+ 'name': f"Episodio {ep_num}",
73
87
  'url': episode_url
74
88
  })
75
89