64 lines
2 KiB
C++
64 lines
2 KiB
C++
|
|
#include "stdafx.h"
|
|||
|
|
#include "Util.h"
|
|||
|
|
#include "WLibTorrent.h"
|
|||
|
|
|
|||
|
|
void TokenizeW( const std::wstring& str, std::vector<std::wstring>& tokens, const std::wstring& delimiters /* = L" "*/ )
|
|||
|
|
{
|
|||
|
|
// <20><> ù <20><><EFBFBD>ڰ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
|||
|
|
std::wstring::size_type lastPos = str.find_first_not_of( delimiters, 0 );
|
|||
|
|
// <20><><EFBFBD><EFBFBD><EFBFBD>ڰ<EFBFBD> <20>ƴ<EFBFBD> ù <20><><EFBFBD>ڸ<EFBFBD> ã<>´<EFBFBD>
|
|||
|
|
std::wstring::size_type pos = str.find_first_of( delimiters, lastPos );
|
|||
|
|
|
|||
|
|
while( std::wstring::npos != pos || std::wstring::npos != lastPos )
|
|||
|
|
{
|
|||
|
|
// token<65><6E> ã<><C3A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD> vector<6F><72> <20>߰<EFBFBD><DFB0>Ѵ<EFBFBD>
|
|||
|
|
tokens.push_back( str.substr( lastPos, pos - lastPos ) );
|
|||
|
|
// <20><><EFBFBD><EFBFBD><EFBFBD>ڸ<EFBFBD> <20>پ<EFBFBD><D9BE>Ѵ´<D1B4>. "not_of"<22><> <20><><EFBFBD><EFBFBD><EFBFBD>϶<EFBFBD>
|
|||
|
|
lastPos = str.find_first_not_of( delimiters, pos );
|
|||
|
|
// <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ڰ<EFBFBD> <20>ƴ<EFBFBD> <20><><EFBFBD>ڸ<EFBFBD> ã<>´<EFBFBD>
|
|||
|
|
pos = str.find_first_of( delimiters, lastPos );
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
BOOL MakeTorrent( LPCWSTR strFullFilePath, LPCWSTR strWebSeeds, LPCWSTR strTrackers )
|
|||
|
|
{
|
|||
|
|
std::wstring strFullFileName = strFullFilePath;
|
|||
|
|
std::wstring strFileName = strFullFileName;
|
|||
|
|
int nSlashIndex = strFileName.rfind( L"\\" );
|
|||
|
|
strFileName.erase( 0, nSlashIndex + 1 );
|
|||
|
|
std::wstring strMakeFileName;
|
|||
|
|
strMakeFileName = strFullFileName + L".torrent";
|
|||
|
|
|
|||
|
|
std::vector<std::wstring> vecWstrWebSeeds;
|
|||
|
|
std::vector<std::wstring> vecWstrTrackers;
|
|||
|
|
|
|||
|
|
std::vector<std::wstring> tokens;
|
|||
|
|
TokenizeW( strWebSeeds, tokens, L";" );
|
|||
|
|
for( int i=0; i<static_cast<int>( tokens.size() ); i++ )
|
|||
|
|
{
|
|||
|
|
std::wstring strWebSeed;
|
|||
|
|
strWebSeed = tokens[i];
|
|||
|
|
nSlashIndex = strWebSeed.rfind( L"/" );
|
|||
|
|
if( nSlashIndex != strWebSeed.length() - 1 )
|
|||
|
|
strWebSeed += L"/";
|
|||
|
|
strWebSeed += strFileName;
|
|||
|
|
vecWstrWebSeeds.push_back( strWebSeed );
|
|||
|
|
}
|
|||
|
|
tokens.clear();
|
|||
|
|
|
|||
|
|
TokenizeW( strTrackers, tokens, L";" );
|
|||
|
|
for( int i=0; i<static_cast<int>( tokens.size() ); i++ )
|
|||
|
|
{
|
|||
|
|
vecWstrTrackers.push_back( tokens[i] );
|
|||
|
|
}
|
|||
|
|
tokens.clear();
|
|||
|
|
|
|||
|
|
BOOL bMake = WLibTorrent::GetInstance()->MakeTorrent( strFullFileName.c_str(), vecWstrWebSeeds, vecWstrTrackers, strMakeFileName.c_str(), L"DN" );
|
|||
|
|
|
|||
|
|
vecWstrWebSeeds.clear();
|
|||
|
|
vecWstrTrackers.clear();
|
|||
|
|
|
|||
|
|
WLibTorrent::DestroyInstance();
|
|||
|
|
|
|||
|
|
return bMake;
|
|||
|
|
}
|