func findP2PCategoryID(categoryName string) (string, error) {
	var (
		categoryID string
		err        error
		categories []types.P2PCategory
	)

	categories, err = xrel.GetP2PCategories()
	if err == nil {
		for i := 0; i < len(categories); i++ {
			category := categories[i]
			if category.SubCat != "" {
				if strings.ToLower(category.SubCat) == strings.ToLower(categoryName) {
					categoryID = category.ID
				}
			} else if strings.ToLower(category.MetaCat) == strings.ToLower(categoryName) {
				categoryID = category.ID
			}
			if categoryID != "" {
				break
			}
		}
		if categoryID == "" {
			err = errors.New("Category not found. Please choose one of --categories --p2p.")
		}
	}

	return categoryID, err
}
func showCategories(isP2P bool) {
	orderedCategories := map[string][]string{}
	if isP2P {
		p2pCategories, err := xrel.GetP2PCategories()
		categoryCount := len(p2pCategories)
		if categoryCount == 0 {
			fmt.Println("No p2p categories found.")
			os.Exit(1)
		}
		ok(err, "Failed to get p2p categories: ")
		for i := 0; i < categoryCount; i++ {
			metaCat := strings.ToUpper(p2pCategories[i].MetaCat)
			if p2pCategories[i].SubCat != "" {
				orderedCategories[metaCat] = append(orderedCategories[metaCat], p2pCategories[i].SubCat)
			} else {
				if len(orderedCategories[metaCat]) == 0 {
					orderedCategories[metaCat] = []string{}
				}
			}
		}
		fmt.Println("Available p2p categories:")
	} else {
		categories, err := xrel.GetReleaseCategories()
		categoryCount := len(categories)
		if categoryCount == 0 {
			fmt.Println("No categories found.")
			os.Exit(1)
		}
		ok(err, "Failed to get scene categories: ")
		for i := 0; i < categoryCount; i++ {
			category := &categories[i]
			if category.ParentCat != "" && category.Name != "" {
				orderedCategories[category.ParentCat] = append(orderedCategories[category.ParentCat], category.Name)
			} else {
				if len(orderedCategories[category.Name]) == 0 {
					orderedCategories[category.Name] = []string{}
				}
			}
		}
		fmt.Println("Available scene categories:")
	}
	var keys []string
	for k := range orderedCategories {
		keys = append(keys, k)
	}
	sort.Strings(keys)
	for _, k := range keys {
		v := orderedCategories[k]
		fmt.Println("\n" + k)
		for i := 0; i < len(v); i++ {
			fmt.Println("\t" + v[i])
		}
	}
}