about summary refs log tree commit diff stats
diff options
context:
space:
mode:
authorComradeCrow <comradecrow@vivaldi.net>2023-04-26 16:45:28 -0700
committerComradeCrow <comradecrow@vivaldi.net>2023-04-26 16:45:28 -0700
commit304f8dcd8d1e217dce56ccebb9be6f95d558ab31 (patch)
tree04a8888e503a1e7d0d072a915fe7842877ee8614
parentcf0ab4d19100846a9850a3cc39110d8d8cfd1607 (diff)
downloadytcpp-304f8dcd8d1e217dce56ccebb9be6f95d558ab31.tar.gz
progress
-rw-r--r--src/YtdlpWrapper.cpp26
-rw-r--r--src/main.cpp22
2 files changed, 24 insertions, 24 deletions
diff --git a/src/YtdlpWrapper.cpp b/src/YtdlpWrapper.cpp
index a1e417f..424c6a4 100644
--- a/src/YtdlpWrapper.cpp
+++ b/src/YtdlpWrapper.cpp
@@ -41,7 +41,7 @@ void Video::to_json(json& j, const video& v) {
 
     j = json{{"id", v.id}, 
         {"title", v.title}, 
-        {"url", v.url}, 
+        {"webpage_url", v.url}, 
         {"channel_id", v.channelId}, 
         {"channel_url", v.channelUrl}};
 
@@ -75,10 +75,10 @@ void Video::from_json(const json& j, format& f) {
     j.at("acodec").get_to(f.acodec);
     j.at("ext").get_to(f.ext);
 
-    if (j.contains("quality")) { f.quality = j.at("quality"); }
-    if (j.contains("resolution")) { f.resolution = j.at("resolution"); }
-    if (j.contains("width")) { f.width = j.at("width"); }
-    if (j.contains("height")) { f.height = j.at("height"); }
+    if (j.contains("quality") && j.at("quality").is_string()) { f.quality = j.at("quality"); }
+    if (j.contains("resolution") && j.at("resolution").is_string()) { f.resolution = j.at("resolution"); }
+    if (j.contains("width") && j.at("width").is_number()) { f.width = j.at("width"); }
+    if (j.contains("height") && j.at("height").is_number()) { f.height = j.at("height"); }
 }
 
 void Video::from_json(const json& j, thumbnail& t) {
@@ -87,18 +87,18 @@ void Video::from_json(const json& j, thumbnail& t) {
     j.at("preference").get_to(t.preference);
     j.at("id").get_to(t.id);
 
-    if (j.contains("resolution")) { t.resolution = j.at("resolution"); }
-    if (j.contains("width")) { t.width = j.at("width"); }
-    if (j.contains("height")) { t.height = j.at("height"); }
+    if (j.contains("resolution") && j.at("resolution").is_string()) { t.resolution = j.at("resolution"); }
+    if (j.contains("width") && j.at("width").is_number()) { t.width = j.at("width"); }
+    if (j.contains("height") && j.at("height").is_number()) { t.height = j.at("height"); }
 }
 
 void Video::from_json(const json& j, video& v) {
 
     j.at("id").get_to(v.id);
     j.at("title").get_to(v.title);
-    j.at("url").get_to(v.url);
-    j.at("channelId").get_to(v.channelId);
-    j.at("channelUrl").get_to(v.channelUrl);
+    j.at("webpage_url").get_to(v.url);
+    j.at("channel_id").get_to(v.channelId);
+    j.at("channel_url").get_to(v.channelUrl);
 
     if (j.contains("uploader")) { v.uploader = j.at("uploader"); }
     if (j.contains("uploader_id")) { v.uploaderId = j.at("uploader_id"); }
@@ -110,14 +110,14 @@ void Video::from_json(const json& j, video& v) {
     for (json f: j.at("formats")) {
 
         format form;
-        from_json(j, form);
+        from_json(f, form);
         v.formats.push_back(form);
     }
 
     for (json t: j.at("thumbnails")) {
         
         thumbnail thumb;
-        from_json(j, thumb);
+        from_json(t, thumb);
         v.thumbnails.push_back(thumb);
     }
 }
diff --git a/src/main.cpp b/src/main.cpp
index 059657c..69309c0 100644
--- a/src/main.cpp
+++ b/src/main.cpp
@@ -7,6 +7,7 @@
 // #include <exception>
 // #include <vector>
 #include <fstream>
+#include <filesystem>
 
 #include "tui.hpp"
 #include "invapi.hpp"
@@ -17,21 +18,20 @@
 // namespace py = pybind11;
 using namespace std;
 using json = nlohmann::json;
+namespace fs = std::filesystem;
 
 void validateStructConversions() {
+    fs::path here("raycharles.json");
+    cout << fs::absolute(here) << endl;
 
-    std::ifstream inputFile{"./raycharles.json"};
-    auto size = inputFile.tellg();
-    cout << size << endl;
-    std::string str(size, '\0'); // construct string to stream size
-    inputFile.seekg(0);
-    if(inputFile.read(&str[0], size))
-        std::cout << str << '\n';
+    ifstream ifs;
+    ifs.open(fs::absolute(here).c_str(), ifstream::in);  
     
-    // json info = json::parse(inputFile);
-    // Video::video v = info["entries"].get<Video::video>();
-    // json j = v;
-    // cout << j << endl;
+    json info = json::parse(ifs);
+
+    Video::video v = info["entries"][0].get<Video::video>();
+    json j = v;
+    cout << j << endl;
 } 
 
 int main(int argc, char **argv) {