Package: pyccmc
ccmclientA command line client for cc mixter.ccMixter is a produsage community music site that promotes remix culture and makes >samples, remixes, and a cappella
tracks licensed under Creative Commons available for >download and re-use in creative works.
Visitors are able to listen to, sample, mash-up, or >interact with music in a variety
of ways including the download and use of tracks and >samples in their own remixes.https://en.wikipedia.org/wiki/CcMixterDownloads Songs, Samples and similar from givencc mixterartist name or based on selection
criterias.Packaged uploads (for example .zip files) get extracted.Already downloaded files will not get downloaded again.InstallPythonyou needpython3andpipinstalled.then just clone or download this repository and install the needed python packages from
requirements.txtpip3 install -r requirements.txtor simply use pippython -m pip install pyccmcBinariesBinary, executable files can be found attigabeatz.net, if you do not like to use the pip
install.UseDepends on either Firefox, Chrome or Safari webbrowsers.After installation open a terminal and executeccmclientby default, the files are written to a directory structure
from where you start the tool like<request>\<artist>\<upload name>\<files>graphType "graph" instead of a usernameGraph Data Structurefor x in pregraphdat:
    # print(x)
    graphdat['nodes'].append(
        {
            'id': x['upload_id'],
            'name': x['metadata'][0]['upload_name'],
            'metadata': x['metadata'][0],
            'labels': [x['metadata'][0]['upload_name'], x['metadata'][0]['user_name']]
        }
    )
    for y in x['sources']:
        graphdat['links'].append(
            {
                'source': y,
                'target': x['upload_id'],
                'labels': ['source']
            }
        )
    for z in x['remixes']:
        graphdat['links'].append(
            {
                'source': x['upload_id'],
                'target': z,
                'labels': ['remix']
            }
        )command line options-h, --helpshow help and exit--artistAn Ccmixter artists name--limitMaximum number of allowed api results--dryrunSet to True if you do not want to download. prints out metadata of the query--itqInteractive Query Builder, download by manually search along the api parameters--proxyhttp(s):\\url:port--queryJson with Ccmixter api parameters         {\"user\":\"tigabeatz\";\"limit\":\"1\"}      (you must escape " with \")--folderWhere to store your requests data, default to this scripts folder--logfileLogfile location, default to this scripts folder--indexFile to store history of downloaded files, defaults to this scripts folder--testCheck if this tool is workingAlternatively, execute the ccmclient.exe / binary with command line parameters likeccmclient --artist tigabeatz --limit 0orccmcclient.exe --helpUsage examples:download everything uploaded by artistccmclient --artist tigabeatz --limit 0download based on a custom queryccmclient --query "{\"user\":\"tigabeatz\"}"further readingccmixter threadBuildgit remote add dev.azure.com https://kreaterra@dev.azure.com/kreaterra/ccmclient/_git/ccmclientPlease see .gitlab-ci.yml and azure-pipelines.ymlgit push -u dev.azure.com master
git push -u git.cccwi.de masterorgit push --allThe Azure DevOps project uses build and release pipelines to create the executable files, while the gitlab project uses a pipeline to test a linux binary and publishes the pypi project.This setup causes that a Azure Storage Account is created and the Service Principal for the Azure dev Ops Projects needs Blop Storage Dta Contributor Role assignment.steps:task: AzureFileCopy@5
displayName: 'AzureBlob File Copy Binaries'
inputs:
SourcePath: '$(System.DefaultWorkingDirectory)/_ccmclient'
azureSubscription: '...............'
Destination: AzureBlob
storage: tigabeatz
ContainerName: '$web'steps:task: AzureFileCopy@5
displayName: 'AzureBlob File Copy Html'
inputs:
SourcePath: '$(System.DefaultWorkingDirectory)/_ccmclientweb/index.html'
azureSubscription: '............'
Destination: AzureBlob
storage: tigabeatz
ContainerName: '$web'
BlobPrefix: '_ccmclient/index.html'