@@ -674,9 +674,9 @@ class LlamaData {
674674 }
675675
676676 int github_dl (const std::string & model, const std::string & bn) {
677- std::string repository = model;
678- std::string branch = " main" ;
679- size_t at_pos = model.find (' @' );
677+ std::string repository = model;
678+ std::string branch = " main" ;
679+ const size_t at_pos = model.find (' @' );
680680 if (at_pos != std::string::npos) {
681681 repository = model.substr (0 , at_pos);
682682 branch = model.substr (at_pos + 1 );
@@ -694,9 +694,9 @@ class LlamaData {
694694 return 1 ;
695695 }
696696
697- const std::string org = repo_parts[0 ];
698- const std::string project = repo_parts[1 ];
699- std::string project_path = repo_parts[2 ];
697+ const std::string & org = repo_parts[0 ];
698+ const std::string & project = repo_parts[1 ];
699+ std::string project_path = repo_parts[2 ];
700700 for (size_t i = 3 ; i < repo_parts.size (); ++i) {
701701 project_path += " /" + repo_parts[i];
702702 }
@@ -741,13 +741,15 @@ class LlamaData {
741741 } else if (string_starts_with (model_, " hf.co/" )) {
742742 rm_until_substring (model_, " hf.co/" );
743743 ret = huggingface_dl (model_, bn);
744- } else if (string_starts_with (model_, " https://" ) || string_starts_with (model_, " http://" )) {
744+ } else if ((string_starts_with (model_, " https://" ) || string_starts_with (model_, " http://" )) &&
745+ !string_starts_with (model_, " https://ollama.com/library/" )) {
745746 ret = download (model_, bn, true );
746747 } else if (string_starts_with (model_, " github:" ) || string_starts_with (model_, " github://" )) {
747748 rm_until_substring (model_, " github://" );
748749 rm_until_substring (model_, " github:" );
749750 ret = github_dl (model_, bn);
750751 } else { // ollama:// or nothing
752+ rm_until_substring (model_, " ollama.com/library/" );
751753 rm_until_substring (model_, " ://" );
752754 ret = ollama_dl (model_, bn);
753755 }
0 commit comments