flet-video 0.1.0.dev17__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.

Potentially problematic release.


This version of flet-video might be problematic. Click here for more details.

@@ -0,0 +1,166 @@
1
+ Metadata-Version: 2.1
2
+ Name: flet-video
3
+ Version: 0.1.0.dev17
4
+ Summary: Video control for Flet
5
+ Author-email: Flet contributors <hello@flet.dev>
6
+ Classifier: License :: OSI Approved :: Apache Software License
7
+ Requires-Python: >=3.8
8
+ Description-Content-Type: text/markdown
9
+ Requires-Dist: flet>=0.25.1
10
+
11
+ # Flet Video control
12
+
13
+ `Video` control for Flet.
14
+
15
+ ## Usage
16
+
17
+ Add `flet-video` as dependency (`pyproject.toml` or `requirements.txt`) to your Flet project.
18
+
19
+ ## Example
20
+
21
+ ```py
22
+ import random
23
+
24
+ import flet as ft
25
+
26
+ import flet_video as ftv
27
+
28
+
29
+ def main(page: ft.Page):
30
+ page.theme_mode = ft.ThemeMode.LIGHT
31
+ page.title = "TheEthicalVideo"
32
+ page.window.always_on_top = True
33
+ page.spacing = 20
34
+ page.horizontal_alignment = ft.CrossAxisAlignment.CENTER
35
+
36
+ def handle_pause(e):
37
+ video.pause()
38
+ print("Video.pause()")
39
+
40
+ def handle_play_or_pause(e):
41
+ video.play_or_pause()
42
+ print("Video.play_or_pause()")
43
+
44
+ def handle_play(e):
45
+ video.play()
46
+ print("Video.play()")
47
+
48
+ def handle_stop(e):
49
+ video.stop()
50
+ print("Video.stop()")
51
+
52
+ def handle_next(e):
53
+ video.next()
54
+ print("Video.next()")
55
+
56
+ def handle_previous(e):
57
+ video.previous()
58
+ print("Video.previous()")
59
+
60
+ def handle_volume_change(e):
61
+ video.volume = e.control.value
62
+ page.update()
63
+ print(f"Video.volume = {e.control.value}")
64
+
65
+ def handle_playback_rate_change(e):
66
+ video.playback_rate = e.control.value
67
+ page.update()
68
+ print(f"Video.playback_rate = {e.control.value}")
69
+
70
+ def handle_seek(e):
71
+ video.seek(10000)
72
+ print(f"Video.seek(10000)")
73
+
74
+ def handle_add_media(e):
75
+ video.playlist_add(random.choice(sample_media))
76
+ print(f"Video.playlist_add(random.choice(sample_media))")
77
+
78
+ def handle_remove_media(e):
79
+ r = random.randint(0, len(video.playlist) - 1)
80
+ video.playlist_remove(r)
81
+ print(f"Popped Item at index: {r} (position {r+1})")
82
+
83
+ def handle_jump(e):
84
+ print(f"Video.jump_to(0)")
85
+ video.jump_to(0)
86
+
87
+ sample_media = [
88
+ ftv.VideoMedia(
89
+ "https://user-images.githubusercontent.com/28951144/229373720-14d69157-1a56-4a78-a2f4-d7a134d7c3e9.mp4"
90
+ ),
91
+ ftv.VideoMedia(
92
+ "https://user-images.githubusercontent.com/28951144/229373718-86ce5e1d-d195-45d5-baa6-ef94041d0b90.mp4"
93
+ ),
94
+ ftv.VideoMedia(
95
+ "https://user-images.githubusercontent.com/28951144/229373716-76da0a4e-225a-44e4-9ee7-3e9006dbc3e3.mp4"
96
+ ),
97
+ ftv.VideoMedia(
98
+ "https://user-images.githubusercontent.com/28951144/229373695-22f88f13-d18f-4288-9bf1-c3e078d83722.mp4"
99
+ ),
100
+ ftv.VideoMedia(
101
+ "https://user-images.githubusercontent.com/28951144/229373709-603a7a89-2105-4e1b-a5a5-a6c3567c9a59.mp4",
102
+ extras={
103
+ "artist": "Thousand Foot Krutch",
104
+ "album": "The End Is Where We Begin",
105
+ },
106
+ http_headers={
107
+ "Foo": "Bar",
108
+ "Accept": "*/*",
109
+ },
110
+ ),
111
+ ]
112
+
113
+ page.add(
114
+ video := ftv.Video(
115
+ expand=True,
116
+ playlist=sample_media[0:2],
117
+ playlist_mode=ftv.PlaylistMode.LOOP,
118
+ fill_color=ft.Colors.BLUE_400,
119
+ aspect_ratio=16 / 9,
120
+ volume=100,
121
+ autoplay=False,
122
+ filter_quality=ft.FilterQuality.HIGH,
123
+ muted=False,
124
+ on_loaded=lambda e: print("Video loaded successfully!"),
125
+ on_enter_fullscreen=lambda e: print("Video entered fullscreen!"),
126
+ on_exit_fullscreen=lambda e: print("Video exited fullscreen!"),
127
+ ),
128
+ ft.Row(
129
+ wrap=True,
130
+ alignment=ft.MainAxisAlignment.CENTER,
131
+ controls=[
132
+ ft.ElevatedButton("Play", on_click=handle_play),
133
+ ft.ElevatedButton("Pause", on_click=handle_pause),
134
+ ft.ElevatedButton("Play Or Pause", on_click=handle_play_or_pause),
135
+ ft.ElevatedButton("Stop", on_click=handle_stop),
136
+ ft.ElevatedButton("Next", on_click=handle_next),
137
+ ft.ElevatedButton("Previous", on_click=handle_previous),
138
+ ft.ElevatedButton("Seek s=10", on_click=handle_seek),
139
+ ft.ElevatedButton("Jump to first Media", on_click=handle_jump),
140
+ ft.ElevatedButton("Add Random Media", on_click=handle_add_media),
141
+ ft.ElevatedButton("Remove Random Media", on_click=handle_remove_media),
142
+ ],
143
+ ),
144
+ ft.Slider(
145
+ min=0,
146
+ value=100,
147
+ max=100,
148
+ label="Volume = {value}%",
149
+ divisions=10,
150
+ width=400,
151
+ on_change=handle_volume_change,
152
+ ),
153
+ ft.Slider(
154
+ min=1,
155
+ value=1,
156
+ max=3,
157
+ label="PlaybackRate = {value}X",
158
+ divisions=6,
159
+ width=400,
160
+ on_change=handle_playback_rate_change,
161
+ ),
162
+ )
163
+
164
+
165
+ ft.app(main)
166
+ ```
@@ -0,0 +1,156 @@
1
+ # Flet Video control
2
+
3
+ `Video` control for Flet.
4
+
5
+ ## Usage
6
+
7
+ Add `flet-video` as dependency (`pyproject.toml` or `requirements.txt`) to your Flet project.
8
+
9
+ ## Example
10
+
11
+ ```py
12
+ import random
13
+
14
+ import flet as ft
15
+
16
+ import flet_video as ftv
17
+
18
+
19
+ def main(page: ft.Page):
20
+ page.theme_mode = ft.ThemeMode.LIGHT
21
+ page.title = "TheEthicalVideo"
22
+ page.window.always_on_top = True
23
+ page.spacing = 20
24
+ page.horizontal_alignment = ft.CrossAxisAlignment.CENTER
25
+
26
+ def handle_pause(e):
27
+ video.pause()
28
+ print("Video.pause()")
29
+
30
+ def handle_play_or_pause(e):
31
+ video.play_or_pause()
32
+ print("Video.play_or_pause()")
33
+
34
+ def handle_play(e):
35
+ video.play()
36
+ print("Video.play()")
37
+
38
+ def handle_stop(e):
39
+ video.stop()
40
+ print("Video.stop()")
41
+
42
+ def handle_next(e):
43
+ video.next()
44
+ print("Video.next()")
45
+
46
+ def handle_previous(e):
47
+ video.previous()
48
+ print("Video.previous()")
49
+
50
+ def handle_volume_change(e):
51
+ video.volume = e.control.value
52
+ page.update()
53
+ print(f"Video.volume = {e.control.value}")
54
+
55
+ def handle_playback_rate_change(e):
56
+ video.playback_rate = e.control.value
57
+ page.update()
58
+ print(f"Video.playback_rate = {e.control.value}")
59
+
60
+ def handle_seek(e):
61
+ video.seek(10000)
62
+ print(f"Video.seek(10000)")
63
+
64
+ def handle_add_media(e):
65
+ video.playlist_add(random.choice(sample_media))
66
+ print(f"Video.playlist_add(random.choice(sample_media))")
67
+
68
+ def handle_remove_media(e):
69
+ r = random.randint(0, len(video.playlist) - 1)
70
+ video.playlist_remove(r)
71
+ print(f"Popped Item at index: {r} (position {r+1})")
72
+
73
+ def handle_jump(e):
74
+ print(f"Video.jump_to(0)")
75
+ video.jump_to(0)
76
+
77
+ sample_media = [
78
+ ftv.VideoMedia(
79
+ "https://user-images.githubusercontent.com/28951144/229373720-14d69157-1a56-4a78-a2f4-d7a134d7c3e9.mp4"
80
+ ),
81
+ ftv.VideoMedia(
82
+ "https://user-images.githubusercontent.com/28951144/229373718-86ce5e1d-d195-45d5-baa6-ef94041d0b90.mp4"
83
+ ),
84
+ ftv.VideoMedia(
85
+ "https://user-images.githubusercontent.com/28951144/229373716-76da0a4e-225a-44e4-9ee7-3e9006dbc3e3.mp4"
86
+ ),
87
+ ftv.VideoMedia(
88
+ "https://user-images.githubusercontent.com/28951144/229373695-22f88f13-d18f-4288-9bf1-c3e078d83722.mp4"
89
+ ),
90
+ ftv.VideoMedia(
91
+ "https://user-images.githubusercontent.com/28951144/229373709-603a7a89-2105-4e1b-a5a5-a6c3567c9a59.mp4",
92
+ extras={
93
+ "artist": "Thousand Foot Krutch",
94
+ "album": "The End Is Where We Begin",
95
+ },
96
+ http_headers={
97
+ "Foo": "Bar",
98
+ "Accept": "*/*",
99
+ },
100
+ ),
101
+ ]
102
+
103
+ page.add(
104
+ video := ftv.Video(
105
+ expand=True,
106
+ playlist=sample_media[0:2],
107
+ playlist_mode=ftv.PlaylistMode.LOOP,
108
+ fill_color=ft.Colors.BLUE_400,
109
+ aspect_ratio=16 / 9,
110
+ volume=100,
111
+ autoplay=False,
112
+ filter_quality=ft.FilterQuality.HIGH,
113
+ muted=False,
114
+ on_loaded=lambda e: print("Video loaded successfully!"),
115
+ on_enter_fullscreen=lambda e: print("Video entered fullscreen!"),
116
+ on_exit_fullscreen=lambda e: print("Video exited fullscreen!"),
117
+ ),
118
+ ft.Row(
119
+ wrap=True,
120
+ alignment=ft.MainAxisAlignment.CENTER,
121
+ controls=[
122
+ ft.ElevatedButton("Play", on_click=handle_play),
123
+ ft.ElevatedButton("Pause", on_click=handle_pause),
124
+ ft.ElevatedButton("Play Or Pause", on_click=handle_play_or_pause),
125
+ ft.ElevatedButton("Stop", on_click=handle_stop),
126
+ ft.ElevatedButton("Next", on_click=handle_next),
127
+ ft.ElevatedButton("Previous", on_click=handle_previous),
128
+ ft.ElevatedButton("Seek s=10", on_click=handle_seek),
129
+ ft.ElevatedButton("Jump to first Media", on_click=handle_jump),
130
+ ft.ElevatedButton("Add Random Media", on_click=handle_add_media),
131
+ ft.ElevatedButton("Remove Random Media", on_click=handle_remove_media),
132
+ ],
133
+ ),
134
+ ft.Slider(
135
+ min=0,
136
+ value=100,
137
+ max=100,
138
+ label="Volume = {value}%",
139
+ divisions=10,
140
+ width=400,
141
+ on_change=handle_volume_change,
142
+ ),
143
+ ft.Slider(
144
+ min=1,
145
+ value=1,
146
+ max=3,
147
+ label="PlaybackRate = {value}X",
148
+ divisions=6,
149
+ width=400,
150
+ on_change=handle_playback_rate_change,
151
+ ),
152
+ )
153
+
154
+
155
+ ft.app(main)
156
+ ```
@@ -0,0 +1,30 @@
1
+ [project]
2
+ name = "flet-video"
3
+ version = "0.1.0.dev17"
4
+ description = "Video control for Flet"
5
+ readme = "README.md"
6
+ authors = [
7
+ { name = "Flet contributors", email = "hello@flet.dev" }
8
+ ]
9
+ classifiers = [
10
+ "License :: OSI Approved :: Apache Software License",
11
+ ]
12
+ requires-python = ">=3.8"
13
+ dependencies = [
14
+ "flet>=0.25.1",
15
+ ]
16
+
17
+ [tool.setuptools.package-data]
18
+ "flutter.flet_video" = ["**/*"]
19
+
20
+ [tool.uv]
21
+ dev-dependencies = [
22
+ "flet[all]>=0.25.1",
23
+ ]
24
+
25
+ [tool.setuptools]
26
+ license-files = []
27
+
28
+ [build-system]
29
+ requires = ["setuptools"]
30
+ build-backend = "setuptools.build_meta"
@@ -0,0 +1,4 @@
1
+ [egg_info]
2
+ tag_build =
3
+ tag_date = 0
4
+
@@ -0,0 +1,7 @@
1
+ from flet_video.video import (
2
+ PlaylistMode,
3
+ Video,
4
+ VideoConfiguration,
5
+ VideoMedia,
6
+ VideoSubtitleConfiguration,
7
+ )