Initial community commit
This commit is contained in:
parent
537bcbc862
commit
fc06254474
16440 changed files with 4239995 additions and 2 deletions
174
Src/Plugins/Library/ml_wire/Item.cpp
Normal file
174
Src/Plugins/Library/ml_wire/Item.cpp
Normal file
|
@ -0,0 +1,174 @@
|
|||
#include "Item.h"
|
||||
#include "util.h"
|
||||
#include "defaults.h"
|
||||
#include <shlwapi.h>
|
||||
#include <strsafe.h>
|
||||
|
||||
void RSS::Item::Reset()
|
||||
{
|
||||
free(itemName);
|
||||
free(url);
|
||||
free(sourceUrl);
|
||||
free(guid);
|
||||
free(description);
|
||||
free(link);
|
||||
free(duration);
|
||||
}
|
||||
|
||||
void RSS::Item::Init()
|
||||
{
|
||||
listened = false;
|
||||
publishDate = 0;
|
||||
generatedDate = true;
|
||||
downloaded=false;
|
||||
itemName=0;
|
||||
url=0;
|
||||
sourceUrl=0;
|
||||
guid=0;
|
||||
description=0;
|
||||
link=0;
|
||||
duration=0;
|
||||
size=0;
|
||||
}
|
||||
|
||||
RSS::Item::Item()
|
||||
{
|
||||
Init();
|
||||
}
|
||||
|
||||
RSS::Item::~Item()
|
||||
{
|
||||
Reset();
|
||||
}
|
||||
|
||||
RSS::Item::Item(const RSS::Item ©)
|
||||
{
|
||||
Init();
|
||||
operator =(copy);
|
||||
}
|
||||
|
||||
const RSS::Item &RSS::Item::operator =(const RSS::Item ©)
|
||||
{
|
||||
Reset();
|
||||
Init();
|
||||
listened=copy.listened;
|
||||
publishDate = copy.publishDate;
|
||||
generatedDate = copy.generatedDate;
|
||||
downloaded=copy.downloaded;
|
||||
itemName=_wcsdup(copy.itemName);
|
||||
url=_wcsdup(copy.url);
|
||||
sourceUrl=_wcsdup(copy.sourceUrl);
|
||||
guid=_wcsdup(copy.guid);
|
||||
description=_wcsdup(copy.description);
|
||||
link=_wcsdup(copy.link);
|
||||
duration=wcsdup(copy.duration);
|
||||
size = copy.size;
|
||||
return *this;
|
||||
}
|
||||
|
||||
HRESULT RSS::Item::GetDownloadFileName(const wchar_t *channelName, wchar_t *buffer, int bufferMax, BOOL fValidatePath) const
|
||||
{
|
||||
if (NULL == buffer || NULL == channelName) return E_INVALIDARG;
|
||||
buffer[0] = L'\0';
|
||||
|
||||
WCHAR szBuffer[MAX_PATH] = {0};
|
||||
|
||||
if (FAILED(StringCchCopyN(szBuffer, ARRAYSIZE(szBuffer), channelName, 100)))
|
||||
return E_UNEXPECTED;
|
||||
|
||||
Plugin_CleanDirectory(szBuffer);
|
||||
Plugin_ReplaceBadPathChars(szBuffer);
|
||||
|
||||
if (L'\0' == *szBuffer)
|
||||
StringCchCopy(szBuffer, ARRAYSIZE(szBuffer), L"UnknownChannel");
|
||||
|
||||
if (FALSE == PathCombine(buffer, defaultDownloadPath, szBuffer))
|
||||
return E_FAIL;
|
||||
|
||||
if (FALSE != fValidatePath && FAILED(Plugin_EnsurePathExist(buffer)))
|
||||
return E_FAIL;
|
||||
|
||||
LPWSTR cursor = szBuffer;
|
||||
size_t remaining = ARRAYSIZE(szBuffer);
|
||||
|
||||
tm* time = _localtime64(&publishDate);
|
||||
if(NULL != time && publishDate > 0)
|
||||
{
|
||||
StringCchPrintfEx(cursor, remaining, &cursor, &remaining, STRSAFE_NULL_ON_FAILURE,
|
||||
L"%04d-%02d-%02d - ", time->tm_year+1900, time->tm_mon+1, time->tm_mday);
|
||||
}
|
||||
|
||||
LPWSTR t = cursor;
|
||||
if (FAILED(StringCchCopyNEx(cursor, remaining, itemName, 100, &cursor, &remaining, 0)))
|
||||
return E_UNEXPECTED;
|
||||
|
||||
INT offset = Plugin_CleanDirectory(t);
|
||||
if (0 != offset)
|
||||
{
|
||||
remaining += offset;
|
||||
cursor -= offset;
|
||||
}
|
||||
|
||||
if (t == cursor)
|
||||
StringCchCopyEx(cursor, remaining, L"UnknownItem", &cursor, &remaining, 0);
|
||||
else
|
||||
Plugin_ReplaceBadPathChars(t);
|
||||
|
||||
if (FAILED(Plugin_FileExtensionFromUrl(cursor, (INT)remaining, url, L".mp3")))
|
||||
return E_UNEXPECTED;
|
||||
|
||||
if (FALSE == PathAppend(buffer, szBuffer))
|
||||
return E_FAIL;
|
||||
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
void RSS::MutableItem::SetLink(const wchar_t *value)
|
||||
{
|
||||
free(link);
|
||||
link = _wcsdup(value);
|
||||
}
|
||||
|
||||
void RSS::MutableItem::SetItemName(const wchar_t *value)
|
||||
{
|
||||
free(itemName);
|
||||
itemName = _wcsdup(value);
|
||||
}
|
||||
|
||||
void RSS::MutableItem::SetURL(const wchar_t *value)
|
||||
{
|
||||
free(url);
|
||||
url = _wcsdup(value);
|
||||
}
|
||||
|
||||
void RSS::MutableItem::SetSourceURL(const wchar_t *value)
|
||||
{
|
||||
free(sourceUrl);
|
||||
sourceUrl = _wcsdup(value);
|
||||
}
|
||||
|
||||
void RSS::MutableItem::SetGUID(const wchar_t *value)
|
||||
{
|
||||
free(guid);
|
||||
guid = _wcsdup(value);
|
||||
}
|
||||
|
||||
void RSS::MutableItem::SetDescription(const wchar_t *value)
|
||||
{
|
||||
free(description);
|
||||
description = _wcsdup(value);
|
||||
}
|
||||
|
||||
void RSS::MutableItem::SetDuration(const wchar_t *value)
|
||||
{
|
||||
free(duration);
|
||||
duration = _wcsdup(value);
|
||||
}
|
||||
|
||||
void RSS::MutableItem::SetSize(const wchar_t * _size)
|
||||
{
|
||||
if (_size)
|
||||
size = _wtoi64(_size);
|
||||
else
|
||||
size=0;
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue