mdd_soundcloud/driver/
soundcloud.rs1use crate::domain::track::{Playlist, PlaylistMeta, PlaylistSource};
2use pyo3::prelude::*;
3use pyo3::types::PyModule;
4use std::time::SystemTime;
5
6#[derive(Debug)]
7pub struct SoundcloudDriver {}
8
9impl SoundcloudDriver {
10 pub fn sum(x: i32, y: i32) -> PyResult<i32> {
11 Python::with_gil(|py| {
12 let builtins = PyModule::import(py, "builtins")?;
13 let total: i32 = builtins.call1("sum", (vec![x, y],))?.extract()?;
14 Ok(total)
15 })
16 }
17
18 pub fn get_playlist(url: &str) -> PyResult<()> {
19 Python::with_gil(|py| {
20 let activators = PyModule::from_code(
21 py,
22 r#"
23 from sclib.asyncio import SoundcloudAPI, Track, Playlist
24
25 def get_playlist(url):
26 api = SoundcloudAPI()
27 playlist = await api.resolve('url')
28 return playlist
29
30 "#,
31 "activators.py",
32 "activators",
33 )?;
34
35 let py_playlist: &PyAny = activators.call1("get_playlist", (url,))?.extract()?;
36 parse_playlist(py_playlist);
37 Ok(())
38 })
39 }
40}
41
42fn parse_playlist<'a>(_py_playlist: &'a PyAny) -> Playlist {
43 let meta = PlaylistMeta {
44 name: String::from("test"),
45 playlist_source: PlaylistSource::Soundcloud,
46 timestamp: SystemTime::now(),
47 };
48 let tracks = vec![];
49 let playlist = Playlist { meta, tracks };
50 playlist
51}