Project

General

Profile

playlist-files.diff

Patches to use helper script for tunein.com urls - Jim Turner, January 27, 2017 21:52

View differences:

playlist-files.cc 2017-01-27 02:35:04.658552681 -0600
16 16
 * implied. In no event shall the authors be liable for any damages arising from
17 17
 * the use of this software.
18 18
 */
19

  
19
#include <stdlib.h>
20
#include <stdio.h>
21
#include <string.h>
22
#include <unistd.h>
20 23
#include "playlist-internal.h"
21 24

  
22 25
#include "audstrings.h"
......
28 31

  
29 32
EXPORT bool aud_filename_is_playlist (const char * filename)
30 33
{
31
    StringBuf ext = uri_get_extension (filename);
34
    bool istuneinstream = false;
35
    if (strstr(filename, "://tunein.com/"))
36
    {
37
    	   StringBuf temp_tunein_filename = filename_build ({aud_get_path (AudPath::UserDir), "tunein.pls"});
38
    	   remove ((const char *) temp_tunein_filename);
39
        system ((const char *) str_concat ({"getTuneinStream.pl ", filename, " >", temp_tunein_filename}));
40
        if (access((const char *) temp_tunein_filename, F_OK ) != -1 )
41
            istuneinstream = true;
42
    }
32 43

  
44
    StringBuf ext = istuneinstream ? str_printf (_("pls")) : uri_get_extension (filename);
33 45
    if (ext)
34 46
    {
35 47
        for (PluginHandle * plugin : aud_plugin_list (PluginType::Playlist))
......
44 56

  
45 57
bool playlist_load (const char * filename, String & title, Index<PlaylistAddItem> & items)
46 58
{
59
    bool istuneinstream = false;
60
    bool plugin_found = false;
61

  
47 62
    AUDINFO ("Loading playlist %s.\n", filename);
48 63

  
49
    StringBuf ext = uri_get_extension (filename);
50
    bool plugin_found = false;
64
    if (strstr(filename, "://tunein.com/"))
65
        istuneinstream = true;
66

  
67
    StringBuf ext = istuneinstream ? str_printf (_("pls")) : uri_get_extension (filename);
51 68

  
52 69
    if (ext)
53 70
    {
......
63 80
            if (! pp)
64 81
                continue;
65 82

  
66
            VFSFile file (filename, "r");
67
            if (! file)
83
            if (istuneinstream)
68 84
            {
69
                aud_ui_show_error (str_printf (_("Error opening %s:\n%s"),
70
                 filename, file.error ()));
71
                return false;
85
                StringBuf temp_tunein_filename = filename_build ({"file://", aud_get_path (AudPath::UserDir), "tunein.pls"});
86

  
87
                VFSFile file ((const char *) temp_tunein_filename, "r");
88
                if (! file)
89
                {
90
                    aud_ui_show_error (str_printf (_("Error opening %s:\n%s"),
91
                            (const char *) temp_tunein_filename, file.error ()));
92
                    return false;
93
                }
94

  
95
                if (pp->load ((const char *) temp_tunein_filename, file, title, items))
96
                    return true;
72 97
            }
98
            else
99
            {
100
                VFSFile file (filename, "r");
101
                if (! file)
102
                {
103
                    aud_ui_show_error (str_printf (_("Error opening %s:\n%s"),
104
                     filename, file.error ()));
105
                    return false;
106
                }
73 107

  
74
            if (pp->load (filename, file, title, items))
75
                return true;
108
                if (pp->load (filename, file, title, items))
109
                    return true;
110
            }
76 111

  
77 112
            title = String ();
78 113
            items.clear ();