further work on export favorites as playlist

This commit is contained in:
Jonas Heinrich 2021-03-11 14:45:05 +01:00
parent 4f9cf298f7
commit e2cb02959e
4 changed files with 40 additions and 24 deletions

View File

@ -77,22 +77,24 @@ example the German language file should be placed at
### Prepare a release
Consoult [Release.md](Release.md) on how to prepare a release for Gitlab and the app store.
## Reporting bugs
## Contribute
### Reporting bugs
You can report bugs in the public gitlab repository [here](https://git.project-insanity.org/onny/nextcloud-app-radio/issues) and for discussion you can find a section for the app in the offical Nextcloud forums [here](https://help.nextcloud.com/c/apps/radio).
## Adding translations
### Adding translations
For now only German translations are provided, so please submit your translations if possible :) It's really easy, just `git clone` this repo and copy the translation files in `l10n` according to your locale. Merge requests go to [this radio repository](https://git.project-insanity.org/onny/nextcloud-app-radio).
## Adding radio stations
### Adding radio stations
This app uses a public and open database of radio stations as its backend, so any station you add in [radio-browser.info](http://www.radio-browser.info/) (no account required), will be also available in this app. Feel free to contribute :)
## Credits
* [radio-browser.info](http://www.radio-browser.info/) database api as backend for this app
* Python example code to query stream metadata, took from [here](https://anton.logvinenko.name/en/blog/how-to-get-title-from-audio-stream-with-python.html).
## Donation
### Donation
If you like this app and want to support my work, you can donate to this Bitcoin address:
```
19mpmuNczGDgdxaBLBn3REEpQLPPcJHZB6
```
## Credits
* [radio-browser.info](http://www.radio-browser.info/) database api as backend for this app
* Python example code to query stream metadata, took from [here](https://anton.logvinenko.name/en/blog/how-to-get-title-from-audio-stream-with-python.html).

View File

@ -23,11 +23,13 @@
namespace OCA\Radio\Controller;
use OC;
use OCA\Radio\AppInfo\Application;
use OCA\Radio\Service\FavoriteService;
use OCP\AppFramework\Controller;
use OCP\AppFramework\Http\DataResponse;
use OCP\IRequest;
use SimpleXMLElement;
class ExportController extends Controller {
/** @var FavoriteService */
@ -50,10 +52,28 @@ class ExportController extends Controller {
* @NoAdminRequired
*/
public function index() {
header('Content-Type: application/csv');
header('Content-Disposition: attachment; filename="filename.csv"');
$xml = new SimpleXMLElement('<?xml version="1.0" encoding="UTF-8"?><playlist></playlist>');
$trackList = $xml->addChild('trackList');
$track = $trackList->addChild('track');
$track->addChild('location', 'http://localhost/test.mp3');
$track->addChild('title', 'Radio Test 404fm');
$track->addChild('image', 'http://localhost/favicon.ico');
$user = OC::$server->getUserSession()->getUser();
if (is_null($user)) {
throw new HintException('User not logged in');
}
$userName = $user->getDisplayName();
$productName = OC::$server->getThemingDefaults()->getName();
$dateTime = OC::$server->getDateTimeFormatter();
$export_name = '"' . $productName . ' Radio Favorites (' . $userName . ') (' . $dateTime->formatDate(time()) . ').xspf"';
header('Content-Type: application/xspf+xml');
header('Content-Disposition: attachment; filename=' . $export_name);
//return new DataResponse($this->service->findAll($this->userId));
return "hello";
return $xml->asXML();
}
}

View File

@ -30,6 +30,7 @@
"stylelint:fix": "stylelint src --fix"
},
"dependencies": {
"@nextcloud/auth": "^1.3.0",
"@nextcloud/axios": "^1.6.0",
"@nextcloud/dialogs": "^3.1.1",
"@nextcloud/l10n": "^1.4.1",

View File

@ -40,7 +40,7 @@
<ActionButton
icon="icon-download"
:close-after-click="true"
@click="exportList">
@click="doExport">
Export favorites
</ActionButton>
</Actions>
@ -114,15 +114,13 @@ import Breadcrumb from '@nextcloud/vue/dist/Components/Breadcrumb'
import Actions from '@nextcloud/vue/dist/Components/Actions'
import ActionButton from '@nextcloud/vue/dist/Components/ActionButton'
import Modal from '@nextcloud/vue/dist/Components/Modal'
import { getRequestToken } from '@nextcloud/auth'
import Navigation from './../components/Navigation'
import Table from './../components/Table'
import Sidebar from './../components/Sidebar'
import { mapGetters, mapActions } from 'vuex'
import axios from '@nextcloud/axios'
import { generateUrl } from '@nextcloud/router'
import { RadioBrowserApi } from './../services/RadioBrowserApi'
const apiClient = new RadioBrowserApi()
const requesttoken = axios.defaults.headers.requesttoken
export default {
name: 'Favorites',
@ -270,15 +268,10 @@ export default {
this.modal = false
},
exportList() {
console.log('export list')
axios.defaults.headers.requesttoken = requesttoken
axios.get(generateUrl('/apps/radio/export'))
.then(
(response) => {
return Promise.resolve(response.data)
},
)
doExport() {
window.location
= 'export?requesttoken='
+ encodeURIComponent(getRequestToken())
},
},