Download achievement pictures and store em in images/
							parent
							
								
									846ed27397
								
							
						
					
					
						commit
						965031a804
					
				| 
						 | 
					@ -231,7 +231,40 @@ public:
 | 
				
			||||||
std::string steam_apikey;
 | 
					std::string steam_apikey;
 | 
				
			||||||
std::string app_id;
 | 
					std::string app_id;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void generate_achievements(CurlEasy &easy)
 | 
					#if defined(WIN32) || defined(_WIN32)
 | 
				
			||||||
 | 
					#include <windows.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					static bool create_directory(std::string const& strPath)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    DWORD dwAttrib = GetFileAttributesA(strPath.c_str());
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    if (dwAttrib != INVALID_FILE_ATTRIBUTES && dwAttrib & FILE_ATTRIBUTE_DIRECTORY)
 | 
				
			||||||
 | 
					        return true;
 | 
				
			||||||
 | 
					        
 | 
				
			||||||
 | 
					    return CreateDirectoryA(strPath.c_str(), NULL);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					#elif defined(__linux__)
 | 
				
			||||||
 | 
					#include <unistd.h>
 | 
				
			||||||
 | 
					#include <sys/types.h>
 | 
				
			||||||
 | 
					#include <sys/stat.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					static bool create_directory(std::string const& strPath)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    stat sb;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    if (stat(strPath.c_str(), &sb) != 0)
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        return mkdir(strPath.c_str(), 0755) == 0;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    if (S_ISDIR(sb.st_mode))
 | 
				
			||||||
 | 
					        return true;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    return false;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					static void generate_achievements(CurlEasy &easy)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    std::string url = "http://api.steampowered.com/ISteamUserStats/GetSchemaForGame/v2/?key=";
 | 
					    std::string url = "http://api.steampowered.com/ISteamUserStats/GetSchemaForGame/v2/?key=";
 | 
				
			||||||
    url += steam_apikey;
 | 
					    url += steam_apikey;
 | 
				
			||||||
| 
						 | 
					@ -263,8 +296,35 @@ void generate_achievements(CurlEasy &easy)
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
                output_json[i]["description"] = "";
 | 
					                output_json[i]["description"] = "";
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
            output_json[i]["icon"] = item.value()["icon"];
 | 
					            
 | 
				
			||||||
            output_json[i]["icongray"] = item.value()["icongray"];
 | 
					            {
 | 
				
			||||||
 | 
					                std::string icon_path = "images/" + item.value()["name"].get<std::string>() + ".jpg";
 | 
				
			||||||
 | 
					                std::ofstream achievement_icon(icon_path, std::ios::out | std::ios::trunc | std::ios::binary);
 | 
				
			||||||
 | 
					                if (!achievement_icon)
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
					                    std::cerr << "Cannot create achievement icon \"" << icon_path << "\"" << std::endl;
 | 
				
			||||||
 | 
					                    return;
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					                easy.set_url(item.value()["icon"]);
 | 
				
			||||||
 | 
					                easy.perform();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                std::string picture = easy.get_answer();
 | 
				
			||||||
 | 
					                achievement_icon.write(picture.c_str(), picture.length());
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                std::string icon_path = "images/" + item.value()["name"].get<std::string>() + "_gray.jpg";
 | 
				
			||||||
 | 
					                std::ofstream achievement_icon(icon_path, std::ios::out | std::ios::trunc | std::ios::binary);
 | 
				
			||||||
 | 
					                if (!achievement_icon)
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
					                    std::cerr << "Cannot create achievement icon \"" << icon_path << "\"" << std::endl;
 | 
				
			||||||
 | 
					                    return;
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					                easy.set_url(item.value()["icongray"]);
 | 
				
			||||||
 | 
					                easy.perform();
 | 
				
			||||||
 | 
					                
 | 
				
			||||||
 | 
					                std::string picture = easy.get_answer();
 | 
				
			||||||
 | 
					                achievement_icon.write(picture.c_str(), picture.length());
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
            ++i;
 | 
					            ++i;
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
        ach_file << std::setw(2) << output_json;
 | 
					        ach_file << std::setw(2) << output_json;
 | 
				
			||||||
| 
						 | 
					@ -285,7 +345,7 @@ void generate_achievements(CurlEasy &easy)
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void generate_items(CurlEasy& easy)
 | 
					static void generate_items(CurlEasy& easy)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    std::string url = "https://api.steampowered.com/IInventoryService/GetItemDefMeta/v1?key=";
 | 
					    std::string url = "https://api.steampowered.com/IInventoryService/GetItemDefMeta/v1?key=";
 | 
				
			||||||
    url += steam_apikey;
 | 
					    url += steam_apikey;
 | 
				
			||||||
| 
						 | 
					@ -365,6 +425,12 @@ void generate_items(CurlEasy& easy)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
int main()
 | 
					int main()
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
 | 
					    if (!create_directory("images"))
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        std::cerr << "Cannot create directory \"images\"" << std::endl;
 | 
				
			||||||
 | 
					        return -1;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    CurlGlobal& cglobal = CurlGlobal::Inst();
 | 
					    CurlGlobal& cglobal = CurlGlobal::Inst();
 | 
				
			||||||
    cglobal.init();
 | 
					    cglobal.init();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue