recycleactor commited on
Commit
6fff80b
·
verified ·
1 Parent(s): b17bb84

Upload 2 files

Browse files
Files changed (1) hide show
  1. src/main.rs +38 -3
src/main.rs CHANGED
@@ -148,8 +148,30 @@ fn extract_media_url_and_format(media_json: &serde_json::Value, formats: &[&str]
148
  let media_arr = data_item.get("media").and_then(|v| v.as_array());
149
  let Some(media_arr) = media_arr else { continue; };
150
  for m in media_arr {
151
- let m_format = m.get("format").and_then(|v| v.as_str()).unwrap_or("");
152
- if m_format == *f_str {
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
153
  if let Some(sources) = m.get("sources").and_then(|v| v.as_array()) {
154
  let mut preferred = Vec::new();
155
  if let Some(s1) = sources.get(1).and_then(|s| s.get("url")).and_then(|u| u.as_str()) { preferred.push(s1); }
@@ -181,7 +203,20 @@ fn extract_media_url_and_format(media_json: &serde_json::Value, formats: &[&str]
181
  let media_arr = data_item.get("media").and_then(|v| v.as_array());
182
  let Some(media_arr) = media_arr else { continue; };
183
  for m in media_arr {
184
- let m_format = m.get("format").and_then(|v| v.as_str()).unwrap_or("");
 
 
 
 
 
 
 
 
 
 
 
 
 
185
  if let Some(sources) = m.get("sources").and_then(|v| v.as_array()) {
186
  for s in sources {
187
  if let Some(u) = s.get("url").and_then(|v| v.as_str()) {
 
148
  let media_arr = data_item.get("media").and_then(|v| v.as_array());
149
  let Some(media_arr) = media_arr else { continue; };
150
  for m in media_arr {
151
+ let mut m_format = m.get("format").and_then(|v| v.as_str()).unwrap_or("");
152
+ if m_format.is_empty() {
153
+ m_format = m.get("format_name").and_then(|v| v.as_str()).unwrap_or("");
154
+ }
155
+
156
+ let mut matched = false;
157
+ if m_format.eq_ignore_ascii_case(*f_str) {
158
+ matched = true;
159
+ } else if m_format.is_empty() {
160
+ if let Some(n) = m.get("format").and_then(|v| v.as_i64()) {
161
+ let n_str = match n {
162
+ 9 => "FLAC",
163
+ 3 => "MP3_320",
164
+ 1 => "MP3_128",
165
+ _ => "",
166
+ };
167
+ if n_str.eq_ignore_ascii_case(*f_str) {
168
+ matched = true;
169
+ m_format = n_str;
170
+ }
171
+ }
172
+ }
173
+
174
+ if matched {
175
  if let Some(sources) = m.get("sources").and_then(|v| v.as_array()) {
176
  let mut preferred = Vec::new();
177
  if let Some(s1) = sources.get(1).and_then(|s| s.get("url")).and_then(|u| u.as_str()) { preferred.push(s1); }
 
203
  let media_arr = data_item.get("media").and_then(|v| v.as_array());
204
  let Some(media_arr) = media_arr else { continue; };
205
  for m in media_arr {
206
+ let mut m_format = m.get("format").and_then(|v| v.as_str()).unwrap_or("");
207
+ if m_format.is_empty() {
208
+ m_format = m.get("format_name").and_then(|v| v.as_str()).unwrap_or("");
209
+ }
210
+ if m_format.is_empty() {
211
+ if let Some(n) = m.get("format").and_then(|v| v.as_i64()) {
212
+ m_format = match n {
213
+ 9 => "FLAC",
214
+ 3 => "MP3_320",
215
+ 1 => "MP3_128",
216
+ _ => "",
217
+ };
218
+ }
219
+ }
220
  if let Some(sources) = m.get("sources").and_then(|v| v.as_array()) {
221
  for s in sources {
222
  if let Some(u) = s.get("url").and_then(|v| v.as_str()) {